No, un echo diretto non funzionerà, devi eseguirlo in una subshell. Prova invece questo:
sudo sh -c "echo \"group ALL=(user) NOPASSWD: ALL\" >> /etc/sudoers"
Potresti semplicemente echo (con privilegi elevati, ovviamente) direttamente al /etc/sudoers file:
sudo -i
echo 'nickw444 ALL=(ALL:ALL) ALL' >> /etc/sudoers
# ^^
# tab
(notare il carattere di tabulazione tra il nome utente e il primo ALL )
Oppure, per uno script:
#!/bin/bash
# Run me with superuser privileges
echo 'nickw444 ALL=(ALL:ALL) ALL' >> /etc/sudoers
Quindi salva in somefile.sh , chmod a+rx ed esegui sudo ./somefile.sh da una finestra di terminale.
Per aggiungere più utenti, cambia lo script in questo;
#!/bin/bash
while [[ -n $1 ]]; do
echo "$1 ALL=(ALL:ALL) ALL" >> /etc/sudoers;
shift # shift all parameters;
done
Quindi, esegui lo script in questo modo (supponendo che tu l'abbia salvato come addsudousers.sh ):
sudo ./addsudousers.sh bob joe jeff
ovvero separati da spazi.
Per leggere i nomi da un file:
example@unixlinux.online ~ $ sudo ./addsudousers.sh `cat listofusers.txt`
listofusers.txt dovrebbero anche essere separati da spazi.
Modifica: Jappie Kirk sottolinea giustamente che non puoi chiamare direttamente sudo echo ... >> /etc/sudoers perché il >> il reindirizzamento è gestito dalla shell, che a quel punto ha abbandonato i privilegi di superutente. Tuttavia, se esegui uno script che contiene echo ... >> /etc/sudoers e lo script stesso ha i privilegi di superutente, tutto dovrebbe funzionare correttamente.