Как разрешить выполнение без запроса пароля с помощью 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 или даже через сценарий оболочки, запущенный от их имени.