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

Моя цель – использовать reboot как myusername без ввода пароля. Как я могу это достичь?

Я прочитал « Разрешить пользователю использовать sudo без пароля и следовать рекомендациям, но он по-прежнему не работает для меня. Вот мой /etc/sudoers но он по-прежнему запрашивает пароль:

 # # This file MUST be edited with the 'visudo' command as root. # # Please consider adding local content in /etc/sudoers.d/ instead of # directly modifying this file. # # See the man page for details on how to write a sudoers file. # Defaults env_reset Defaults mail_badpass Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" # Host alias specification # User alias specification # Cmnd alias specification # User privilege specification root ALL=(ALL:ALL) ALL myusername ALL=NOPASSWD:/sbin/reboot # Allow members of group sudo to execute any command %sudo ALL=(ALL:ALL) ALL # See sudoers(5) for more information on "#include" directives: #includedir /etc/sudoers.d 

Затем я запускаю

 sudo reboot 

и меня попросили ввести пароль. Как запустить reboot в качестве обычного пользователя без запроса пароля?

Здесь sudo -l вывод:

 Matching Defaults entries for myusername on this host: env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin User myusername may run the following commands on this host: (root) NOPASSWD: /sbin/reboot (ALL : ALL) ALL 

Я также пробовал

 myusername ALL=NOPASSWD:/bin/ls 

но sudo ls все еще запрашивал пароль, так что это, кажется, общая проблема, а не специфическая для reboot .

Прежде всего, не повторяйте NOT, старайтесь, чтобы ваш пользователь всегда пользовался правами root, то есть матерью всех угроз безопасности, и это не только не нужно, но и требует неприятностей.

В любом случае, если вы хотите, чтобы ваш пользователь мог запускать определенную команду, вам нужно добавить эту строку в sudoers (замените terdon на свое имя пользователя):

 terdon ALL=NOPASSWD:/sbin/reboot 

Затем вы можете запустить его с sudo reboot без ввода пароля . Вам всегда нужно запускать его с помощью sudo хотя лучше всего вы можете использовать sudo пароля для определенных команд.

Это связано с тем, как работает система. Когда вы пытаетесь запустить, например shutdown -r , как обычный пользователь, вы получите это сообщение:

 $ shutdown -r shutdown: you must be root to do that! 

Это не имеет ничего общего с sudo , эта команда просто проверяет, является ли ваш идентификатор пользователя 1 (суперпользователем), а если нет, это не позволит вам запустить его. Вы могли бы настроить свою систему на то, чтобы иметь другого пользователя как userid 1, но это просто изменило бы имя пользователя root и было бы без проблем (и не помогло бы вам делать то, что вы пытаетесь).

Таким образом, если вы фактически не вошли в систему как пользователь с идентификатором пользователя 1, вам всегда придется использовать sudo для запуска привилегированных команд. Единственным обходным решением было бы создать псевдоним (или функцию или скрипт) для reboot в конфигурационном файле вашей оболочки (например, ~/.bashrc ):

 alias reboot='sudo shutdown -r now' 

Таким образом, поскольку вы уже установили shutdown без пароля в /etc/sudoers , вы сможете запустить

 $ reboot 

и получите желаемый результат.