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 :
[email protected] ~ $ 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.