Non, un écho direct ne fonctionnera pas, vous devez l'exécuter dans un sous-shell. Essayez ceci à la place :
sudo sh -c "echo \"group ALL=(user) NOPASSWD: ALL\" >> /etc/sudoers"
Vous pourriez simplement echo (avec des privilèges élevés, bien sûr) directement au /etc/sudoers fichier :
sudo -i
echo 'nickw444 ALL=(ALL:ALL) ALL' >> /etc/sudoers
# ^^
# tab
(notez le caractère de tabulation entre le nom d'utilisateur et le premier ALL )
Ou, pour un script :
#!/bin/bash
# Run me with superuser privileges
echo 'nickw444 ALL=(ALL:ALL) ALL' >> /etc/sudoers
Puis enregistrez en somefile.sh , chmod a+rx et exécutez sudo ./somefile.sh depuis une fenêtre de terminal.
Pour ajouter plusieurs utilisateurs, remplacez le script par ceci ;
#!/bin/bash
while [[ -n $1 ]]; do
echo "$1 ALL=(ALL:ALL) ALL" >> /etc/sudoers;
shift # shift all parameters;
done
Ensuite, exécutez le script comme ceci (en supposant que vous l'avez enregistré sous addsudousers.sh ):
sudo ./addsudousers.sh bob joe jeff
c'est-à-dire séparés par des espaces.
Pour lire les noms d'un fichier :
example@unixlinux.online ~ $ sudo ./addsudousers.sh `cat listofusers.txt`
listofusers.txt doivent également être séparés par des espaces.
Modifier : Jappie Kirk souligne à juste titre que vous ne pouvez pas appeler directement le sudo echo ... >> /etc/sudoers car le >> la redirection est gérée par le shell, qui a alors abandonné les privilèges du superutilisateur. Cependant, si vous exécutez un script qui contient echo ... >> /etc/sudoers et que le script lui-même a des privilèges de superutilisateur, tout devrait bien fonctionner.