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