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. Usavisudopara 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.comExplicación:
-H: Establece la variable de entornoHOMEal 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 - rootEjecutar 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_USUARIOSalida:
#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.bashrco.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
sudocon configuraciones específicas en/etc/sudoerspara limitar los comandos que un usuario puede ejecutar. - Evita codificar contraseñas en scripts con
suorunuser. - Verifica las políticas de seguridad de tu sistema antes de otorgar permisos amplios.







Pingback: Comandos SSH: Guía Completa Administrar Servidores » Blog