usuario todos por permisos hat etc escribible dar agregar linux sh sudo

linux - todos - Agregar usuarios a sudoers a través de shell script



sudoers centos 7 (7)

¿Es posible agregar usuarios al archivo sudoers a través de un script de shell? He estado mirando alrededor, todavía no puedo encontrar nada.


Inicie sesión como root en su máquina. El usuario root es el único que tiene privilegios para agregar un nuevo usuario.

Una vez que haya iniciado sesión, ahora puede probar los siguientes comandos a continuación:

  1. Crea un nuevo usuario.

    adduser [nombre de usuario]

  2. Añadir contraseña al usuario

    contraseña [nombre de usuario]

  3. Otorgue privilegios de root al usuario Edite el archivo visudo simplemente escribiendo

    Ingresa el código aquí

Encuentre la siguiente línea de código: root ALL = (ALL) ALL

Luego agrega este código a continuación:

[username] ALL=(ALL) ALL

La publicación original encontrará en este enlace. Centos 6 - Creación de usuarios de sudoers


Línea única para crear usuario con contraseña y en grupo sudo.

useradd -p $ (openssl passwd -1 PASSWORD ) NOMBRE DE USUARIO -s / bin / bash -G sudo


No, un eco directo no funcionará, hay que ejecutarlo en una subshell. Intenta esto en su lugar:

sudo sh -c "echo /"group ALL=(user) NOPASSWD: ALL/" >> /etc/sudoers"


Otras respuestas, como generar una subshell, funcionarán, pero es posible que no funcionen si desea utilizar variables ambientales. Una alternativa que encontré jugó muy bien para mí:

echo "%<user> ALL=(ALL) ALL" | sudo tee -a /etc/sudoers > /dev/null

Dicho esto, en retrospectiva es 20/20 ... Si modifico los sudoers a través de un script y no a través de visudo, recomendaría seriamente crear una copia de seguridad con los permisos y contenidos de archivo correctos primero, ya que puede perder el acceso a cualquier derecho de sudo sin pkexec, físico acceso o reinicio etc.

sudo cp /etc/sudoers /etc/sudoers.bak


Simplemente puede hacer echo (con privilegios elevados, por supuesto) directamente en el /etc/sudoers :

sudo -i echo ''nickw444 ALL=(ALL:ALL) ALL'' >> /etc/sudoers # ^^ # tab

(note el carácter de la pestaña 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 guárdelo en somefile.sh , chmod a+rx it, y ejecute sudo ./somefile.sh desde una ventana de terminal.

Para agregar varios 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 la secuencia de comandos de esta manera (asumiendo que la guardó como addsudousers.sh ):

sudo ./addsudousers.sh bob joe jeff

Es decir, separados por espacios.

Para leer los nombres de un archivo:

nickw444@laptop ~ $ sudo ./addsudousers.sh `cat listofusers.txt`

listofusers.txt también debe estar separado por espacios.

Edición: Jappie Kirk señala acertadamente que no puede llamar directamente sudo echo ... >> /etc/sudoers porque la redirección >> es manejada por el shell, que para ese momento ya no tiene privilegios de superusuario. Sin embargo, si ejecuta una secuencia de comandos que contiene echo ... >> /etc/sudoers y la secuencia de comandos en sí tiene privilegios de superusuario, todo debería funcionar bien.


También está el grupo sudo , y podría agregarle usuarios (para configuraciones comunes de /etc/sudoers )


en RedHat Based Distributions use:

su - root

e ingrese su contraseña, entonces:

echo ''YOURUSERNAME ALL=(ALL:ALL) ALL'' >> /etc/sudoers

para agregar el usuario en el archivo sudoers.