A veces, es necesario ejecutar un comando como otro usuario en sistemas Unix/Linux. En este artículo, se explican tres métodos principales para lograrlo: usando sudo
, su
y runuser
.
Requisitos Previos
Para usar estos métodos, asegúrate de tener los permisos adecuados:
sudo
: Requiere configuración en el archivo/etc/sudoers
. Usavisudo
para editarlo de manera segura.su
: Puede requerir la contraseña del usuario destino, salvo que se ejecute como root.runuser
: Solo puede ser ejecutado por el usuario root y no requiere contraseña.
#1: sudo
para Ejecutar un Comando desde Otro Usuario
Puedes usar la utilidad sudo
para ejecutar un comando como otro usuario. Ejemplo:
sudo -H -u Tu_otro_usuario ping ejemplo.com
Explicación:
-H
: Establece la variable de entornoHOME
al directorio home del usuario especificado.-u Tu_otro_usuario
: Especifica el usuario que ejecutará el comando.
Nota: El usuario que ejecuta sudo
debe tener permisos configurados en /etc/sudoers
o pertenecer a un grupo con privilegios adecuados (como sudo
o wheel
en algunos sistemas).
#2: su
para Ejecutar un Comando desde Otro Usuario
La utilidad su
permite iniciar una sesión o ejecutar comandos como otro usuario. A continuación, se presentan algunos ejemplos.
Iniciar Sesión como Usuario Root
Para obtener un shell como root, ejecuta:
su -
O:
su - root
Ejecutar un Comando como Root
Ejemplo:
su - -c "whoami"
Ejecutar un Comando como Otro Usuario
Ejemplo:
su - Tu_otro_usuario -c "ping ejemplo.com"
Otro ejemplo, ejecutando un comando específico con un shell definido:
$ su -c "/opt/solr/bin/solr create -c test_nucleo_solr -n solrconfig.xml" -s /bin/sh OTRO_USUARIO
Salida:
#Se creó el núcleo 'test_nucleo_solr'
Explicación:
-
: Inicializa un entorno de login completo, cargando las variables de entorno y el perfil del usuario (como.bashrc
o.bash_profile
).-c
: Especifica el comando a ejecutar.-s
: Especifica el shell a usar para el comando.
Nota: Si no estás ejecutando su
como root, necesitarás la contraseña del usuario destino.
#3: runuser
para Ejecutar un Comando desde Otro Usuario
La utilidad runuser
inicia un shell o ejecuta un comando con identificadores de usuario y grupo sustituidos. Solo puede ser ejecutada por el usuario root y no requiere contraseña. La sintaxis es:
runuser -l OTRO_USUARIO -c 'TU_COMANDO_AQUÍ'
Ejemplo:
runuser -l nginx -c 'service nginx start'
Nota: runuser
no está disponible en todos los sistemas Unix/Linux (por ejemplo, puede no estar presente en sistemas BSD o distribuciones antiguas). Es más comúnmente usado en scripts o por administradores con privilegios de root.
Opciones principales:
-l
: Crea un shell de inicio de sesión usando el archivo PAMrunuser-l
.-g
: Especifica el grupo principal.-G
: Especifica grupos adicionales.-c
: Especifica el comando a ejecutar.--session-command=COMANDO
: Ejecuta un solo comando sin crear una nueva sesión, pasando el comando al shell con-c
.-m
: No descarta las variables de entorno (ENV).
Consideraciones de Seguridad
- Usa
sudo
con configuraciones específicas en/etc/sudoers
para limitar los comandos que un usuario puede ejecutar. - Evita codificar contraseñas en scripts con
su
orunuser
. - Verifica las políticas de seguridad de tu sistema antes de otorgar permisos amplios.
Pingback: Comandos SSH: Guía Completa Administrar Servidores » Blog