Я пытался указать скрипт, который я хотел бы запустить без запроса пароля. После нескольких поисков в Google и в стеке, а также ряда различных синтаксических изменений я все еще не могу заставить его работать. Особенностью является то, что при наборе sudo visudo
открывается nano для редактирования файла. Я никогда не указывал nano в качестве редактора, но я, возможно, сначала отредактировал файл с помощью nano. Это сделает nano редактором по умолчанию? Если это так, может ли это вызвать проблемы. Спасибо за помощь.
Вот мой файл 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:$
# Host alias specification
# User alias specification
# Cmnd alias specification
# User privilege specification
root ALL=(ALL:ALL) 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
pat ALL=NOPASSWD: /home/pat/test.sh
# See sudoers(5) for more information on "#include" directives:
#includedir /etc/sudoers.d
Основываясь на ваших комментариях:
Поймите, что su, если он не запускается из-под root, требует от вас предоставить пароль пользователя su. Причина sudo ./test.sh в том, что вы запускаете test.sh от имени пользователя root! (По умолчанию sudo имеет значение root, если вы не указали ключ -u.
Поэтому, если вы хотите, чтобы скрипт мог выполнять su с другим пользователем, он должен быть запущен от имени пользователя root (не делайте этого) .
Почему бы просто не использовать в сценарии «sudo -u pat» вместо «su pat -c»?
Редактор visudo по умолчанию - nano, нет проблем.
1) Вам нужно будет внести некоторые изменения в вашей строке
pat ALL=NOPASSWD: /home/pat/test.sh
Оно должно содержать имя компьютера и пробел до и после «=»:
username computername = NOPASSWD: /path/to/script
Примерно так:
pat patcomputer = NOPASSWD: /home/pat/test.sh
2) Скрипт должен принадлежать root. Запустите это на терминале:
sudo chown root:root /home/pat/test.sh
3) Установите нужные разрешения:
sudo chmod 705 /home/pat/test.sh
4) Наслаждайтесь!