No, un eco directo no funcionará, debe ejecutarlo en una subcapa. Prueba esto en su lugar:
sudo sh -c "echo \"group ALL=(user) NOPASSWD: ALL\" >> /etc/sudoers"
Podrías simplemente echo
(con privilegios elevados, por supuesto) directamente al /etc/sudoers
archivo:
sudo -i
echo 'nickw444 ALL=(ALL:ALL) ALL' >> /etc/sudoers
# ^^
# tab
(tenga en cuenta el carácter de tabulación entre el nombre de usuario y el primer ALL
)
O, para un guión:
#!/bin/bash
# Run me with superuser privileges
echo 'nickw444 ALL=(ALL:ALL) ALL' >> /etc/sudoers
Luego guarda en somefile.sh
, chmod a+rx
y ejecuta sudo ./somefile.sh
desde una ventana de terminal.
Para agregar múltiples usuarios, cambie el script a esto;
#!/bin/bash
while [[ -n $1 ]]; do
echo "$1 ALL=(ALL:ALL) ALL" >> /etc/sudoers;
shift # shift all parameters;
done
Luego, ejecute el script de esta manera (asumiendo que lo guardó como addsudousers.sh
):
sudo ./addsudousers.sh bob joe jeff
es decir, separados por espacios.
Para leer los nombres de un archivo:
[email protected] ~ $ sudo ./addsudousers.sh `cat listofusers.txt`
listofusers.txt
también deben estar separados por espacios.
Editar: Jappie Kirk señala con razón que no puedes llamar directamente a sudo echo ... >> /etc/sudoers
porque el >>
la redirección es manejada por el shell, que en ese momento ha perdido los privilegios de superusuario. Sin embargo, si ejecuta un script que contiene echo ... >> /etc/sudoers
y el script en sí tiene privilegios de superusuario, todo debería funcionar bien.