GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo ejecutar comandos Sudo sin contraseña

Mientras trabajamos con Linux, encontramos que el acceso a algunos archivos o la realización de operaciones confidenciales requiere que los usuarios tengan privilegios elevados. El comando sudo eleva temporalmente los privilegios del usuario, lo que le permite ejecutar comandos confidenciales o acceder a archivos sin restricciones.

La sintaxis del comando sudo es el siguiente:

$ sudo --help

Discutimos cuatro formas en las que podemos ejecutar comandos sudo sin tener que introducir una contraseña cada vez. Los dos primeros implican editar los sudoers y sudoers.d mientras que los dos últimos involucran la ejecución de comandos para elevar los privilegios del usuario a root.

1. Edición del archivo /etc/sudoers

Primero, intentemos ejecutar un comando con sudo y ver si obtenemos una solicitud de contraseña:

$ sudo systemctl start mariadb

Ejecutar comandos Sudo sin contraseña

Si queremos al usuario Alice para ejecutar todo sudo comandos sin necesidad de un sudo contraseña para cualquiera/todos los hosts, editamos el archivo sudoers.

$ sudo visudo

y usa el NOPASSWD directiva como se muestra:

alice ALL=(ALL) NOPASSWD: ALL

Ejecutar comandos Sudo particulares sin contraseña

Para permitir al usuario Alice para ejecutar un solo comando sudo específico sin ingresar una contraseña, debe usar la siguiente línea en el archivo sudoers.

alice ALL=(ALL) NOPASSWD: /bin/systemctl start mariadb

Ahora intenta ejecutar algunos comandos y verás...

$ sudo systemctl start mariadb
$ sudo systemctl status mariadb
$ cat /etc/sudoers

Desde la sesión de terminal anterior, iniciamos MariaDB servicio debido a los cambios que hicimos en el archivo sudoers, no tenemos una solicitud de contraseña. También tenga en cuenta que para los comandos posteriores, tenemos una solicitud de contraseña.

Ejecutar comandos Sudo en un host específico sin contraseña

Para permitir que el usuario ejecute los comandos en un host específico como raíz , en lugar de usar TODO escribimos:

alice linuxshelltips1=(root) NOPASSWD: /bin/systemctl start mariadb

Lo anterior permite a Alice para ejecutar el comando listado en un host con el nombre linuxshelltips1 sin ingresar una contraseña.

Para permitir que se ejecuten tres comandos con sudo privilegios para un host linuxshelltips1 y no tienen una solicitud de contraseña, los enumeramos de la siguiente manera:

alice linuxshelltips1=(ALL) NOPASSWD: /bin/systemctl start mariadb, /bin/systemctl status mariadb, /bin/cat /etc/sudoers

Aquí permitimos al usuario Alice para iniciar y comprobar el estado de la mariadb servicio sin ingresar una contraseña mientras está en un host con el nombre de host linuxshelltips1 . El usuario también puede concatenar los /etc/sudoers archivo sin introducir una contraseña.

Los tres comandos se ejecutan sin necesidad de contraseña. Sin embargo, cuando intentamos detener el servicio mariadb, se nos solicita una contraseña ya que no la especificamos en el archivo sudoers.

Ejecutar comandos Sudo sin contraseña para usuarios de grupo

También podemos permitir que los comandos sudo se ejecuten sin ingresar una contraseña para un grupo de usuarios, digamos group1 a qué usuario Alice pertenece.

%group1 ALL=(ALL) NOPASSWD: ALL

También podemos combinar usuarios, grupos y comandos. Por ejemplo, si solo queremos que un usuario o grupo específico ejecute comandos específicos, pegamos la siguiente línea en el archivo sudoers:

alice,%group2 ALL=(ALL) NOPASSWD: /bin/systemctl, /bin/cat, /bin/kill

Alice y todos los usuarios pertenecientes al grupo2 puede ejecutar todos los comandos systemctl, cat y kill con sudo y no tener una solicitud de contraseña.

También podemos permitir que usuarios específicos (alice, bob) ejecuten comandos específicos (systemctl, cat, kill) al enumerarlos de la siguiente manera:

bob,alice, ALL=(ALL) NOPASSWD: /bin/systemctl, /bin/cat, /bin/kill

Después de guardar el archivo, alice y bob puede ejecutar los comandos systemctl, cat y kill en todos los hosts sin que se le solicite una contraseña.

Observe cómo enumeramos los comandos en /bin/ directorio, tales como; bin/systemctl o /bin/cat. En su lugar, podríamos incluir todo el directorio y terminar con un ‘/’ personaje. Esto significaría que el usuario puede ejecutar cualquier comando en el /bin directorio. Sin embargo, esto no se aplica a los comandos en los subdirectorios de /bin directorio.

Por ejemplo, para permitir que Alice para ejecutar todos los comandos en /bin/ directorio escribimos:

alice ALL=(ALL) NOPASSWD: /bin/

Alice ahora puede ejecutar todos los comandos en todos los hosts que requieren privilegios sudo ubicados en /bin/ directorio sin necesidad de contraseña.

2. Edición del archivo /etc/sudoers.d

Alternativamente, es más seguro hacer cambios en /etc/sudoers.d en lugar del archivo sudoers. Esto hace que administrar los privilegios de sudo sea más manejable y deja intacto el archivo de los sudoers.

Tenga en cuenta que todo lo que hemos discutido en la sección anterior es aplicable aquí, la única diferencia es que trabajaremos con sudoers.d archivo por motivos de seguridad.

Por ejemplo, creemos un archivo para alice permitiéndole ejecutar comandos sudo en un host específico sin ingresar una contraseña.

$ sudo nano /etc/sudoers.d/alice

Una vez abierto el archivo, pegamos la siguiente línea:

alice linxshelltips=(root) NOPASSWD: /bin/

El usuario ahora puede ejecutar todos los comandos sudo en /bin/ directorio sin ingresar una contraseña en el host con el nombre de host linuxshelltips .

También podríamos especificar comandos sudo que pueden ser ejecutados por un grupo de usuarios de la siguiente manera:

$ sudo nano /etc/sudoers.d/groups

Pegamos la siguiente línea para permitir que todos los miembros del grupo1 para ejecutar todos los comandos sudo en todos los hosts sin ingresar una contraseña.

%group1 ALL=(ALL) NOPASSWD: ALL

Administrar los privilegios de sudo de esta manera nos permite administrarlos fácilmente sin preocuparnos por romper algo.

3. Arreglando el archivo Sudoers

Observe cómo usamos visudo editar los archivos sudoers? Esta es la convención porque queremos evitar romper el sistema. Cuando ejecutamos visudo comprueba el archivo para asegurarse de que no hayamos estropeado nada, por ejemplo, en términos de sintaxis.

Si por el contrario usamos un editor de texto plano y cometimos errores, esto nos impedirá volver a editar el archivo ya que necesitamos privilegios de sudo para editar el archivo.

Uso de visudo también evita ediciones múltiples al archivo sudoers a la vez, es decir, si otro usuario está editando el archivo, otros usuarios no podrán editar el archivo.

Asumiendo que el archivo sudoers está desordenado y estamos bloqueados. Usamos el pkexec comando que es una alternativa al comando sudo.

$ pkexec visudo

Una vez que tengamos acceso al archivo sudoers, podemos corregir el error. Por ejemplo, para corregir /etc/sudoers.d/alice archivo, escribimos:

$ pkexec visudo /etc/sudoers.d/alice

4. Usando el comando 'sudo -s'

Para ejecutar estos comandos sin ingresar una contraseña cada vez, ejecutamos el comando:

$ sudo -s

Cuando ingresamos la contraseña una vez, para todos los comandos sudo posteriores en esta sesión de terminal, no tenemos que volver a ingresarla.

Ahora, si intentamos ejecutar un comando sudo, no se nos pedirá que ingresemos una contraseña:

$ sudo systemctl start mariadb.service

Salimos de este modo emitiendo el exit comando:

$ exit

5. Usando el comando 'sudo su'

Otra forma de ejecutar comandos sudo sin que se le solicite una contraseña es ejecutar el comando sudo su para convertirse en el usuario raíz. Después de que se ejecuta este comando, e ingresamos la contraseña una vez, luego para todos los comandos sudo posteriores, no necesitamos ingresar la contraseña para que se ejecuten.

$ sudo su

Ahora, tenemos privilegios de raíz, por lo que cualquier comando sudo posterior que ejecutemos no requerirá que ingresemos una contraseña.

Generalmente, para ejecutar comandos sudo sin contraseña, usamos la siguiente sintaxis mientras editamos sudoers.d archivo:

user_list host_list=effective_user_list tag_list command_list

donde,

  • lista_de_usuarios pueden ser usuarios específicos, grupos, alias.
  • lista_host son los nombres de host de los hosts en los que un usuario puede ejecutar comandos sudo sin contraseña.
  • lista_de_usuarios_efectivos especifica la lista de usuarios que se ejecutan como el usuario actual o como un alias del usuario actual.
  • lista_de_etiquetas especifica etiquetas como NOPASSWD .
  • lista_de_comandos especifica una lista de comandos sudo que el usuario o grupo puede ejecutar sin necesidad de una contraseña.

Ejecutar comandos sudo sin que se le solicite ingresar la contraseña se considera un riesgo de seguridad. Una solicitud de contraseña no solo nos brinda la oportunidad de confirmar un comando antes de que se ejecute, sino que también evita que los usuarios no autorizados realicen acciones más allá de sus privilegios.

Por ejemplo, el ‘sudo rm -rf /’ El comando borra todo el sistema de archivos. Este comando es irreversible y, por lo tanto, es aconsejable tener una solicitud de contraseña, ya que nos da la oportunidad de evaluar esta acción.


Linux
  1. MySQLdump sin contraseña en cronjob

  2. Cómo ejecutar SCP sin interrupción de solicitud de contraseña en Linux

  3. ¿Cómo pasar la contraseña a su/sudo/ssh sin anular el TTY?

  4. Ansible:sudo sin contraseña

  5. Ejecutar ifconfig sin sudo

Cómo ejecutar comandos de Linux en segundo plano

Cómo restablecer la contraseña de sudo

Cómo ejecutar comandos particulares sin contraseña Sudo en Linux

Cómo cambiar el tiempo de espera de la contraseña de Sudo en Linux

Cómo ejecutar un alias con Sudo en Linux

Cómo ejecutar comandos sudo sin contraseña