man 5 sudoers dit (section "Format de fichier Sudoers") :
Lorsque plusieurs entrées correspondent à un utilisateur, elles sont appliquées dans l'ordre. Lorsqu'il y a plusieurs correspondances, la dernière correspondance est utilisée (qui n'est pas nécessairement la correspondance la plus spécifique).
Vous devriez donc avoir ces lignes exactement dans cet ordre :
username ALL=(ALL) ALL
username ALL=(ALL) NOPASSWD: /home/username/script.sh
et toute ligne qui correspond également (comme par exemple %sudo ALL=(ALL:ALL) ALL ) doit être avant le NOPASSWD ligne.
Remarque générale :#include et #includedir autoriser sudoers pour inclure d'autres fichiers . Ne laissez pas # trompez-vous, ce ne sont pas commentaires. Lors de la recherche d'entrées susceptibles d'interférer, vous ne devez pas omettre ce que #include et #includedir pointer vers. Option utile :sudo -l .
Vous trouverez souvent une ligne comme celle-ci dans /etc/sudoers :
# Allow members of group sudo to execute any command
%wheel ALL=(ALL:ALL) ALL
Cela permettra à tout utilisateur qui se trouve dans la "roue " groupe pour utiliser sudo avec un justificatif d'identité adapté (ex :son mot de passe). Le groupe nominé peut également être "sudo ", "administrateur ", ou autres... (ex :la ligne commence par %sudo )
S'il est présent dans le fichier, exécutez id pour voir à quels groupes vous appartenez :
$ id
uid=1000(attie) gid=1000(attie) groups=1000(attie),27(sudo),117(docker)
Si votre utilisateur n'est pas dans le groupe approprié, vous devez ajouter votre utilisateur à ce groupe.
Une alternative serait de répertorier vos deux règles une par une, la dernière règle correspondante prenant effet (c'est-à-dire que l'ordre est important) :
username ALL=(ALL) ALL
username ALL=(ALL) NOPASSWD: /home/username/script.sh
Voir la page ArchWiki sur sudo :https://wiki.archlinux.org/index.php/sudo#Example_entries