GNU/Linux >> Tutoriales Linux >  >> AlmaLinux

Ejecute comandos como otro usuario a través de Sudo en Linux

Imagina este escenario. Está administrando un servidor Linux al que acceden varios usuarios. Todos los usuarios tienen sudo derechos. Desea probar ciertos comandos de Linux con diferentes usuarios. ¿Cómo lo harías tú? ¿Iniciar sesión como un usuario y probar los comandos, y luego cerrar sesión y volver a iniciar sesión como otro usuario y probar los comandos? Sí, es una forma de hacerlo. Sin embargo, existe una forma sencilla de ejecutar comandos como otro usuario a través de sudo en Linux. Siga leyendo para averiguarlo.

A los efectos de esta guía, he creado dos cuentas de usuario, a saber, "senthil" y "kumar" en mi máquina de prueba AlmaLinux 8. Voy a usar "senthil" como usuario actual y "kumar" como usuario objetivo.

Quiero que el usuario "senthil" pueda ejecutar cualquier comando como usuario "kumar" en cualquier host, sin iniciar sesión como "kumar". ¿Comprendido? Bueno, déjame mostrarte un ejemplo.

Ejecutar comandos como otro usuario vía Sudo

Actualmente inicié sesión como usuario "senthil". Déjame mostrarte el usuario conectado actualmente con whoami comando.

$ whoami
senthil

Ahora voy a ejecutar un simple "echo " comando con sudo como el usuario de destino "kumar" mientras estaba conectado como "senthil":

$ sudo -u kumar bash -c 'echo "My Username is $USER, and my user ID is $UID"'

Se le pedirá que ingrese la contraseña del usuario actual (es decir, "senthil" en este caso). Una vez autenticado, el echo El comando se ejecutará como usuario "kumar" y mostrará el nombre de usuario y la identificación de usuario de "kumar".

Salida de muestra:

[sudo] password for senthil: 
My Username is kumar, and my user ID is 1001

Lo que acabamos de hacer es ejecutar el "echo " comando como usuario "kumar" mientras iniciamos sesión como "senthil". Es por eso que ve el nombre de usuario y la identificación de usuario de kumar, pero no los de senthil.

Verifiquemos si el uid del usuario "kumar" es correcto con id comando.

$ id kumar
uid=1001(kumar) gid=1001(kumar) groups=1001(kumar),10(wheel)

Sí, el uid de kumar es correcto en ambas salidas.

Aquí, el -u flag se usa para ejecutar el comando dado como otro usuario (es decir, kumar en este caso) y bash -c se utiliza para mencionar el nombre del comando. Debe mencionar el comando entre comillas simples.

Si no usa bash -c opción, el echo El comando devolverá el nombre de usuario y el uid del usuario actual en lugar del usuario de destino.

$ sudo -u kumar echo "My Username is $USER, and my user ID is $UID"
My Username is senthil, and my user ID is 1000

Del mismo modo, puede ejecutar cualquier comando como un usuario diferente.

Tenga en cuenta que en nuestro comando de ejemplo anterior, no ingresé sudo contraseña para el usuario de destino. ¿Por qué? Porque, el echo el comando no requiere sudo clave.

Si ejecuta un comando que requiere sudo permiso como otro usuario, debe ingresar la contraseña. Aquí hay otro ejemplo.

$ sudo -u kumar bash -c 'sudo dnf --refresh update'

Salida de muestra:

[sudo] password for senthil: 
[sudo] password for kumar: 
AlmaLinux 8 - BaseOS                                                                                                                                                               344  B/s | 4.3 kB     00:12    
AlmaLinux 8 - AppStream                                                                                                                                                            388  B/s | 4.7 kB     00:12    
AlmaLinux 8 - Extras                                                                                                                                                               316  B/s | 3.9 kB     00:12    
Dependencies resolved.
Nothing to do.
Complete!

¿Notaste que ingresé sudo contraseña para ambos usuarios? Sí. Porque ejecutamos "sudo dnf update ", que requiere privilegios elevados. Es por eso que se requiere ingresar el sudo contraseña para el usuario de destino. Para comandos normales, p. ls , uname etc., no necesitamos ingresar la contraseña del usuario objetivo.

No solo los comandos de Linux, también puede aplicar este método para ejecutar scripts. Digamos que desea ejecutar un script de copia de seguridad que se guarda en el $HOME directorio de otro usuario. Simplemente puede ejecutar el script desde el usuario actual como otro usuario usando este comando:

$ sudo -u kumar bash -c '~/backup_script_name'

Ejecutar comandos sin contraseña de Sudo

A veces, es posible que se encuentre en una situación en la que no desee ingresar la contraseña de sudo para cada comando. En tales casos, puede omitir la solicitud de contraseña para comandos específicos agregando NOPASSWD opción en /etc/sudoers archivo.

Digamos que desea permitir que ciertos usuarios ejecuten cualquier dnf comando sin contraseña sudo. Para hacerlo, primero busque la ruta del dnf comando usando which o whereis comandos.

$ which dnf
/usr/bin/dnf
$ whereis dnf
dnf: /usr/bin/dnf /etc/dnf /usr/share/man/man8/dnf.8.gz

Como puede ver, la ruta ejecutable de dnf el comando es /usr/bin/dnf .

Ahora, edite /etc/sudoers archivos usando el comando:

$ sudo visudo

Aviso: Tenga en cuenta que no debe editar manualmente los sudoers archivo utilizando cualquier editor de texto. Utilice siempre visudo comando para editar de forma segura los sudoers archivo.

Agregue la siguiente línea al final del archivo para permitir que el usuario llamado "kumar" ejecute dnf comandos sin contraseña sudo.

kumar ALL=NOPASSWD:/usr/bin/dnf

Guarde el archivo y salga.

A partir de ahora, el usuario "kumar" podrá ejecutar dnf comandos sin sudo contraseña.

[[email protected] ~]$ sudo -u kumar bash -c 'sudo dnf --refresh update'
[sudo] password for senthil: 
AlmaLinux 8 - BaseOS                                                                                                                                                               358  B/s | 4.3 kB     00:12    
AlmaLinux 8 - AppStream                                                                                                                                                            324  B/s | 4.7 kB     00:14    
AlmaLinux 8 - Extras                                                                                                                                                               302  B/s | 3.9 kB     00:13    
Dependencies resolved.
Nothing to do.
Complete!

¿Ver? No necesitamos ingresar sudo contraseña para "kumar".

Para revocar este comportamiento, simplemente elimine la línea anterior.

Descargo de responsabilidad: Debe tener mucho cuidado al aplicar este método. Este método se puede utilizar tanto con fines productivos como destructivos. Digamos, por ejemplo, si permite que los usuarios ejecuten 'rm' comando sin sudo contraseña, podrían eliminar accidental o intencionalmente archivos importantes. No hagas esto a menos que sea realmente necesario.

Conclusión

En este breve tutorial, discutimos cómo permitir que los usuarios ejecuten comandos como otro usuario a través de sudo en Linux. También aprendimos cómo deshabilitar la solicitud de contraseña de sudo para ciertos usuarios cuando ejecutan comandos específicos modificando sudoers archivo.

Como advertí, debe tener cuidado al probar este método en un sistema de producción. Sin saberlo, puede permitir que un usuario ejecute un comando dañino (por ejemplo, rm ) sin tener que ingresar la contraseña de sudo. Siempre debe tener cuidado al probar este tipo de consejos de Linux.

Lectura relacionada:

  • Ejecutar comandos en sistemas Linux remotos a través de SSH
  • Cómo ejecutar comandos particulares sin contraseña Sudo en Linux

AlmaLinux
  1. Ejecute contenedores en Linux sin sudo en Podman

  2. 20 comandos esenciales de Linux para cada usuario

  3. Explorando las diferencias entre los comandos sudo y su en Linux

  4. Cómo crear un usuario Sudo en Rocky Linux 8

  5. UAC de Windows frente a Linux sudo

Escriba los comandos de Linux en mayúsculas para ejecutarlos como usuario de Sudo

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

Cómo crear un usuario Sudo en Ubuntu Linux

Cómo ejecutar comandos Sudo sin contraseña

Cómo ejecutar un alias con Sudo en Linux

Cómo ejecutar comandos sudo sin contraseña