Как выполнить root команду без пароля?

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