Я пишу 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
Бег продолжает спрашивать у меня пароль, есть идеи?
command-line
sudo
Мур
источник
источник
sudo visudo
вместоvim
редактирования файла sudoers. Таким образом, если вы допустите ошибку, программа предупредит вас об этом.Ответы:
Вам необходимо выполнить следующие действия для типа терминала
sudo visudo
и добавить такую строку в конце файла, указав команды, которые вы хотите запускать без ввода пароля sudo (я предлагаю вам использовать каждую команду, которую вы хотите использовать в программе, и не просто разрешить выполнение всех программ этим)Теперь вы можете запускать указанные команды без пароля, если вы вводите эту команду с помощью
sudo
.то есть: допустим, вы хотите запускаться
shutdown -r now
без необходимости каждый раз вводить пароль sudo и ваше имя пользователя 'joedoe'введите
sudo visudo
на терминалеДобавьте
joedoe ALL=NOPASSWD: /usr/sbin/shutdown -r now
как новую строку в конец файла , используйте абсолютные пути к программе, которую вы пытаетесь использовать.в вашей программе вы можете использовать
sudo shutdown -r now
без необходимости вводить пароль sudo.Вы можете найти абсолютный путь к программе с помощью
which <program name>
терминала.Это очень грязная хитрость, и ваша система остается открытой для других опасностей, но я предполагаю, что вы знаете, что делаете, и хотите этого.
Вы действительно должны убедиться, что установленные вами разрешения находятся в конце файла, чтобы ничто не перезаписывалось разрешениями групп.
источник
sudo visudo
а неvim
редактировать файл sudoers? Если бы он сделал это, это бы сработало.sudo
перед командой внутри вашего кода? вам нужно сделать это, даже если вы запустили nopasswd в файле sudoers. т.е. использоватьsudo <command>
не только<command>
.bruno
и cmd ="sudo whoami
"возвращаетсяroot
sudoers
файла. После назначения групп и т. Д. Действительно последняя строка! Переместите строку, чтобы быть последней в файле! (надеюсь, что это было так).