Как разрешить пользователям запускать скрипт с правами root?

учитывая опасности сценариев оболочки SUID, есть ли более безопасный способ предоставления доступа без пароля к скриптам (bash, PHP) с правами root в Linux?

(Ubuntu 8.10)

9 ответов


вы могли бы рассмотреть судо.

хотя не беспарольный, она не требует от пользователя иметь пароль. Он также может предоставить аудиторский след использования скрипта.

edit: согласно комментарию Криса, есть возможность не требовать пароль для определенных команд, см. здесь для сведения. Его также можно настроить, чтобы не запрашивать чрезмерно пароль, т. е. одна запись пароля может быть хороша для несколько команд за период использования.

кстати, sudo встроен в Ubuntu и хорошо интегрирован с Gnome. Когда ubuntu запрашивает ваш пароль для выполнения привилегированных операций, это sudo под капотом.


alt text


обязательно просмотрите " ПРЕДОТВРАЩЕНИЕ ПОБЕГА ОБОЛОЧКИ " раздел справочной страницы sudoers, если вы идете по маршруту sudo.


Я бы порекомендовал судо. Обязательно затяните свой sudoers файл соответствующим образом; и да, вы можете разрешить выполнение некоторых команд без запроса пароля.


настройка sudo, позволяющая обычным пользователям запускать скрипты оболочки с повышенными привилегиями, не лучше с точки зрения безопасности, чем создание корня suid скрипта. Все ловушки еще существуют. Вместо этого вы должны написать правильную программу, которая делает обширные проверки безопасности. Некоторые моменты для рассмотрения:

  • Не пишите на C, вы застрелитесь в обе ноги.
  • проверить все входы.
  • Drop привилегии как можно скорее.
  • держать его коротким.

  • с судо уже упоминалось, вы можете рассмотреть различные изолированные среды, в зависимости от ваших потребностей - например, тюрьмы или аналогичные.


    для действительно тяжелого решения рассмотрим систему MAC (обязательного контроля доступа), такую как SELinux, AppArmor, TrustedBSD и т. д.


    чтобы улучшить безопасность, подумайте, Можно ли выполнить операцию как специальный пользователь или группа, которая имеет именно необходимые для этого права доступа. Затем вы можете создать скрипт setuid / setgid для этого пользователя или группы.


    Если прецедент-это машина, работающая под VirtualBox, и безопасность на самом деле не проблема, вам просто нужен световой барьер, чтобы предотвратить стрельбу в ногу, что тогда? (Тогда аргументы безопасности на самом деле не имеют смысла, поскольку не имеет значения, скомпрометирована ли машина посторонним, который все равно не может ее видеть из-за того, как VirtualBox изолирует ее через NAT.)