Как выполнить root команду без пароля?
-
Вернёмся к теме. Один из известных мне способов запустить программу от root это установка суидного бита на исполняемый бинарник. Со скриптами не срабатывает. Способ довольно спорный с точки зрения безопасности, но иногда применяется. О втором способе, sudo, я уже писал выше. Особое внимание следует обратить на файл конфигурации /etc/sudoers. Ни в коем случае не должно быть записи вида "ALL ALL = NOPASSWD: ALL", это равнозначно работе под рутом. Зато если будет например запись "%wheel ALL = NOPASSWD: /bin/rm -i" (с аргументом -i), то в выполнении команды "sudo rm" будет отказано даже с паролем. (%wheel это группа wheel, смотрите /etc/group). Третий возможный способ - использование даймона-посредника, запущенного с правами root. В любой linux-системе это, наример, init
При изменении runlevel на 0 или 6 происходит перечитывание /etc/inittab с последующим выполнением скриптов выключения или перезагрузки. В последнее время вместо init применяют sysinit, который управляется юнитами, но принцип действия это не меняет. Ещё для исполнения команды от root можно использовать inotifywait с указанием сигнального файла. Например команда$ ps ax | grep init 1 root 0:00 init
запущенная с правами root вызовет перезагрузку системы при любом действии с файлом reboot от имени пользователя, например# inotifywait /home/live/reboot && reboot
$ echo 0 > ~/reboot