Как разрешить выполнение без запроса пароля с помощью sudo?
Я пишу Java-приложение, в котором мне нужно выполнить командную строку и получить результат обратно, но когда я выполняю команду, оно запрашивает пароль sudo. Пока что я попробовал:
$ sudo -s
$ vim /etc/sudoers
# User privilege specification
root ALL=(ALL:ALL) NOPASSWD: ALL
javauser ALL=(ALL:ALL) NOPASSWD: ALL
:wq
$ 4 -r--r----- 1 root root 615 2011-10-26 09:23 sudoers
Как только я выполняю команду, он снова спрашивает "[javauser] пароль для javauser:". Но я уже упоминал noPASSWD.
whoami
возвращается alex
и я добавляю это как это в sudoers
файл
# User privilege specification
root ALL=(ALL:ALL) ALL
alex ALL=NOPASSWD: ALL
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
Бег продолжает спрашивать у меня пароль, есть идеи?
2 ответа
Вам нужно сделать следующее, на тип терминала sudo visudo
и добавьте такую строку в конец файла, указав команды, которые вы хотите запустить, не вводя пароль sudo (я предлагаю вам использовать каждую команду, которую вы хотите использовать в программе, а не просто разрешить выполнение всех программ)
<yourusername> ALL=NOPASSWD: <command1>, <command2>
Теперь вы можете запускать указанные команды без пароля, если вы набираете эту команду с помощью sudo
,
то есть: допустим, вы хотите запустить shutdown -r now
без необходимости каждый раз вводить пароль sudo и ваше имя пользователя 'joedoe'
тип
sudo visudo
на терминаледобавлять
joedoe ALL=NOPASSWD: /usr/sbin/shutdown -r now
в качестве новой строки в конце файла используйте абсолютные пути к программе, которую вы пытаетесь использовать.в вашей программе вы можете использовать
sudo shutdown -r now
без необходимости вводить пароль sudo.
Вы можете найти абсолютный путь к программе, используя which <program name>
на терминале.
Это очень грязный трюк, который оставляет вашу систему открытой для других опасностей, но я предполагаю, что вы знаете, что делаете, и хотите этого.
редактировать
Вы действительно должны убедиться, что установленные вами разрешения находятся в конце файла, чтобы ничто не перезаписывалось разрешениями групп.
я смог включить
poweroff
(обычно это команда sudoer) в приглашении ssh для пользователей, не являющихся пользователями sudoer, путем добавления флага +s к исполняемому файлу команды. Вот так:
sudo chmod a+s /usr/sbin/poweroff
После этого пользователи, не являющиеся пользователями sudo, могли выключать систему через ssh или даже через сценарий оболочки, запущенный от их имени.