Как разрешить выполнение без запроса пароля с помощью 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'

  1. тип sudo visudo на терминале

  2. добавлять joedoe ALL=NOPASSWD: /usr/sbin/shutdown -r now в качестве новой строки в конце файла используйте абсолютные пути к программе, которую вы пытаетесь использовать.

  3. в вашей программе вы можете использовать sudo shutdown -r now без необходимости вводить пароль sudo.

Вы можете найти абсолютный путь к программе, используя which <program name> на терминале.

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

редактировать

Вы действительно должны убедиться, что установленные вами разрешения находятся в конце файла, чтобы ничто не перезаписывалось разрешениями групп.

я смог включить poweroff(обычно это команда sudoer) в приглашении ssh для пользователей, не являющихся пользователями sudoer, путем добавления флага +s к исполняемому файлу команды. Вот так:

sudo chmod a+s /usr/sbin/poweroff

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

Другие вопросы по тегам