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