J'ai essayé de spécifier un script que j'aimerais exécuter sans être invité à saisir un mot de passe. Après un certain nombre de recherches sur Google et dans la pile et un certain nombre de changements de syntaxe différents, je ne parviens toujours pas à le faire fonctionner. Une chose particulière est que lorsque vous tapez Sudo visudo
nano est ouvert pour éditer le fichier. Je n'ai jamais spécifié nano comme éditeur, mais j'ai peut-être d'abord édité le fichier avec nano. Cela ferait-il de nano l'éditeur par défaut? Si oui, cela pourrait-il causer des problèmes. Merci pour l'aide.
Voici mon fichier 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
Sur la base de vos commentaires:
Sachez que su, à moins qu'il ne soit exécuté à partir de root, vous oblige à fournir le mot de passe de l'utilisateur auquel su. La raison pour laquelle Sudo ./test.sh fonctionne est que vous exécutez test.sh en tant que root! (Sudo par défaut est root si vous ne lui donnez pas de commutateur -u.
Donc, si vous voulez que le script puisse être utilisé par un autre utilisateur, il doit être exécuté en tant que root (ne faites pas cela).
Pourquoi ne pas simplement utiliser "Sudo -u pat" dans le script, au lieu de "su pat -c"?
L'éditeur par défaut de visudo est nano, pas de problème.
1) Vous devrez apporter quelques modifications à votre ligne
pat ALL=NOPASSWD: /home/pat/test.sh
Il doit contenir le nom de l'ordinateur et un espace avant et après le "=":
username computername = NOPASSWD: /path/to/script
Quelque chose comme ça:
pat patcomputer = NOPASSWD: /home/pat/test.sh
2) Le script doit appartenir à root. Exécutez ceci au terminal:
Sudo chown root:root /home/pat/test.sh
3) Définissez les bonnes autorisations:
Sudo chmod 705 /home/pat/test.sh
4) Profitez-en!