Упомянутые вами проблемы безопасности, по сути, не касаются «разрешения пользователю вызывать код Python», который работает с высокими уровнями доступа, но позволяют пользователю использовать любую форму управления над выполнение такого кода - наиболее очевидно, путем внедрения или изменения самого кода, но, что более тонко, также путем управления средой этого процесса (и, следовательно, путем, из которого этот код импортирует модули, например). (Аналогичные проблемы применимы к коду, написанному на языке C, если пользователь сможет контролировать путь, с которого последний загружает, например, .so
, хотя ОС может помочь более напрямую с такой проблемой).
Мне кажется, что pam_python
хорошо защищен от таких рисков, и поэтому его можно безопасно использовать в ваших целях. Тем не менее, обратите внимание, что документы указывают на::
Написание модулей PAM из Python incurs
большое снижение производительности и
требует установки Python, поэтому
не лучший вариант для написания
модули, которые будут широко использоваться.
Итак, если вы правы, что механизм, который вы предоставляете, будет популярным, вы, вероятно, захотите закодировать свой модуль в C, чтобы избежать этих проблем. Тем не менее, создание прототипа на Python в качестве доказательства концепции с ограниченным распространением, прежде чем использовать его в C, является жизнеспособной стратегией.