У меня есть программа на Perl, которая отлично работает при вызове через Интернет через apache на сервере Fedora Linux. В этом сценарии perl у меня есть системная команда, которая не запускается, потому что ее нужно запускать от имени пользователя root. Я понимаю все последствия для безопасности, но, безусловно, должен быть простой способ очистить путь для легитимного сценария, чтобы он выполнял законную функцию от имени пользователя root. Я пробовал использовать sudo, но мне нужно снять ограничение requiretty для пользователя apache, и я не хочу ослаблять безопасность. В конфигурации apache должен быть способ разрешить запуск определенного файла или каталога от имени пользователя root, но я не смог его найти. Я не хочу, чтобы все cgi-bin запускались от имени пользователя root. Любая помощь приветствуется.
Perl? Perl поддерживает сценарии setuid.
https://unix.stackexchange.com/questions/364/allow-setuid-on-shell-scripts
Perl - заметное исключение. Он явно поддерживает скрипты setuid безопасным способом. Фактически, ваш сценарий может запускать setuid, даже если ваша ОС игнорирует бит setuid в сценариях. Это связано с тем, что perl поставляется с корневым помощником setuid, который выполняет необходимые проверки и повторно вызывает интерпретатор для желаемых сценариев с желаемыми привилегиями. Это объясняется в руководстве по perlsec. Раньше для сценариев setuid perl требовалось #! / Usr / bin / suidperl -wT вместо #! / Usr / bin / perl -wT, но в большинстве современных систем достаточно #! / Usr / bin / perl -wT .