Ejecución de comandos como superusuario con sudo
- DESCRIPCIÓN
Conozca los conceptos básicos de
sudoy cómo utilizarlo como usuario normal.- INTENCIÓN
Algunos comandos requieren privilegios de administrador. Para ejecutar un comando con derechos de administrador, se puede utilizar el comando
sudo.- ESFUERZO
Leer este artículo le llevará unos 20 minutos. Si tiene alguna pregunta específica, puede pasar directamente al capítulo correspondiente.
- OBJETIVO
Comprender los conceptos básicos de
sudoy ejecutar comandos consudopara determinados casos de uso.- REQUISITOS
Privilegios de
rootosudo. Solo están disponibles si es el administrador del sistema. Para obtener más información, consulte la Sección 1, “Conceptos básicos desudo”.El paquete sudo debe estar instalado. Este paquete está disponible en SLE Micro por defecto.
1 Conceptos básicos de sudo #
Conozca los conceptos básicos de sudo y cómo funciona en los sistemas SLE Micro.
sudo es un comando de Linux que se utiliza para ejecutar programas temporalmente como otro usuario. Es la abreviatura de substitute user and do y toma prestados los privilegios de otro usuario, por ejemplo, el usuario root. De esta forma, sudo le ayuda a realizar las tareas de administración del sistema sin entrar como root.
1.1 sudo en sistemas Linux en general #
Como usuario normal de Linux, tiene permisos reducidos que son suficientes para la mayoría de las tareas. El usuario root es el superusuario de Linux y el equivalente al administrador.
sudo permite que determinados usuarios (no root) o un grupo de usuarios ejecuten tareas con privilegios, como llamar a funciones del sistema como root u otro usuario. Mediante un archivo de configuración, el administrador del sistema puede controlar qué usuarios pueden ejecutar comandos de sudo y para qué tareas.
1.2 sudo en sistemas SLE Micro #
Por motivos de seguridad, todos los sistemas SLE Micro separan al usuario normal del usuario root. Como usuario normal, no puede escribir en directorios del sistema ni instalar programas. Cualquier usuario con acceso a la contraseña de root puede obtener estos privilegios y dañar el sistema de forma accidental o maliciosa.
Por ejemplo, ha iniciado sesión como usuario normal y accede a un sitio Web malintencionado. Un atacante no puede instalar software malicioso en su sistema a sus espaldas, ya que ha iniciado sesión como usuario normal, es decir, sin ningún permiso administrativo.
Como se ha explicado anteriormente, no se recomienda iniciar sesión como usuario root de forma permanente por motivos de seguridad. Un enfoque más seguro es permanecer conectado con el usuario habitual y ejecutar un comando restringido precedido de sudo.
sudo requiere derechos de administrador
En un equipo de un solo usuario, en el que ha definido su propia contraseña de root, tiene los derechos necesarios para administrar el sistema mediante el comando sudo y para configurar los ajustes de sudo usted mismo.
Para obtener más información sobre cómo configurar sudo, consulte https://documentation.suse.com/smart/systems-management/html/sudo-configure-superuser-privileges/index.html.
En un entorno multiusuario, como en las empresas, los privilegios de sudo los gestiona un administrador del sistema y los permisos del usuario root se pueden restringir. Es posible que no se le permita cambiar ciertos directorios o archivos del sistema, incluso al ejecutar el comando con sudo.
1.3 Cómo funciona sudo #
Al ejecutar un comando precedido por sudo, el sistema le solicita la contraseña de la cuenta de root. Después de autenticarse correctamente, el comando se ejecuta con privilegios de superusuario.
Dependiendo de la configuración de sudo, los privilegios elevados persisten durante un período de tiempo determinado y mientras esté trabajando en la misma sesión de terminal. Por lo tanto, no es necesario volver a proporcionar la contraseña al ejecutar otro comando sudo.
Para ejecutar un comando con sudo, se utiliza esta sintaxis:
>sudo [command]
El siguiente ejemplo explica cómo se utiliza el comando sudo para abrir el Centro de control de YaST en el terminal directamente. Para abrir YaST, se necesitan derechos de administrador y, por lo tanto, solo funciona con el comando sudo.
sudo #>yastAbsolute path to 'yast' is '/usr/sbin/yast', so running it may require superuser privileges (eg. root).1>sudoyast[sudo] password for root:2
Si solo se introduce el comando | |
Al iniciar el comando Después de autenticarse correctamente, se abre el . |
Los privilegios elevados persisten durante un período de tiempo determinado, por lo que no es necesario volver a proporcionar la contraseña para el siguiente comando sudo.
2 Ejecución de un comando precedido de sudo #
Como usuario normal, puede ejecutar cualquier comando como root añadiendo antes sudo. Se le pedirá que proporcione la contraseña de root. Si se autentica correctamente, se ejecuta el comando como root.
Al ejecutar un comando precedido por sudo, el sistema le solicita la contraseña de la cuenta de root. Después autenticarse correctamente, el comando se ejecuta con privilegios de superusuario.
Dependiendo de la configuración de sudo, los privilegios elevados persisten durante un período de tiempo determinado y mientras esté trabajando en la misma sesión de terminal. Por lo tanto, no es necesario volver a proporcionar la contraseña al ejecutar otro comando sudo.
sudo #
El siguiente procedimiento describe cómo utilizar el comando sudo para copiar un archivo en un directorio donde solo el usuario root tiene derechos de edición.
Abra un terminal y cree un archivo de prueba con:
>touch test.txtCopie el archivo en el directorio
/usr/local/bin/con:>cp test.txt /usr/local/binEl terminal devuelve, por ejemplo:
cp: cannot create regular file '/usr/local/bin/test.txt': Permission denied
Este mensaje también aparece si no se han otorgado los privilegios necesarios a
sudo.Ahora, introduzca el mismo comando precedido por
sudo.>sudocp test.txt /usr/local/binSe le solicitará que introduzca la contraseña de
root. Tenga en cuenta que la contraseña no se muestra durante la introducción, ni como texto no cifrado ni como caracteres enmascarados.[sudo] password for root:
Después de autenticarse correctamente, el archivo de prueba se copia en
/usr/local/bin.
Ha ejecutado su primer comando sudo.
3 Comandos comunes de sudo #
Si se añade sudo antes de cualquier comando, se pueden ejecutar comandos con permisos elevados. También puede ejecutar comandos como otro usuario y utilizar sus variables de entorno.
Esta sección proporciona ejemplos de comandos comunes que a menudo requieren privilegios administrativos.
- Repetir el último comando con
sudo Para repetir el último comando como administrador, ejecute
sudo !!e introduzca la contraseña. Por ejemplo, un usuario sin privilegios administrativos no puede crear un directorio en el directorio/etc/. Para crearlo, ejecutesudo !!.>mkdir /etc/test/mkdir: cannot create directory ‘/etc/test/’: Permission denied>sudo!!sudo mkdir /etc/test/ [sudo] password for root:>ls -alrt /etc | grep testdrwxr-xr-x 1 root root 0 Apr 20 12:48 test- Gestionar paquetes mediante
sudoyzypper Para ejecutar comandos de gestión de paquetes como administrador, añada
sudoantes del comando:>sudozypper [--GLOBAL-OPTIONS] <COMMAND> [--COMMAND-OPTIONS] [ARGUMENTS]Por ejemplo, para instalar la plataforma de contenerización Docker CE desde su repositorio oficial de paquetes, ejecute los siguientes comandos con
sudo:>sudozypper addrepo https://download.docker.com/linux/suse/docker-ce>sudozypper refresh>sudozypper search docker-ce>sudozypper install docker-ceNo es necesario añadir
sudoantes de los comandoszypperque no modifiquen el sistema ni proporcionen acceso privilegiado a la información. Por ejemplo, puede mostrar los repositorios de los paquetes de software instalados en el sistema sin utilizarsudo:>zypper lr- Gestionar los servicios del sistema mediante
sudoysystemctl En los sistemas que utilizan
systemdpara gestionar servicios, puede utilizar el comandosystemctlconsudo. Por ejemplo, para reiniciar el servicio del servidor Web Apache, ejecute:>sudosystemctl restart apache2No es necesario añadir
sudoantes de los comandossystemctlque no modifiquen el sistema ni proporcionen acceso privilegiado a la información. Por ejemplo, puede mostrar el estado de Network Manager sin utilizarsudo:>systemctl status NetworkManager● NetworkManager.service - Network Manager Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; enabled; vendor preset: disabled) Drop-In: /usr/lib/systemd/system/NetworkManager.service.d └─NetworkManager-ovs.conf Active: active (running) since DAY YYYY-MM-DD HH:MM:SS TIMEZONE; 1h 21min ago Docs: man:NetworkManager(8) [...]- Modificar una cuenta de usuario mediante
sudoyusermod Para ejecutar el comando
usermodpara modificar cuentas de usuario, utilice:>sudousermod [OPTION] USERNAMEPor ejemplo, para definir
30como el número de días para inhabilitar permanentemente la cuenta de usuariotuxdespués de que caduque la contraseña, ejecute:>sudousermod --inactive 30 tux- Modificar la propiedad de archivos y directorios mediante
sudoychown Para cambiar la propiedad de los archivos y directorios del propietario actual a uno nuevo, utilice:
>sudochown [OPTION] [OWNER:[GROUP]] FILEPor ejemplo, para asignar a
tuxla propiedad de los archivos y subdirectorios del directorio/home/test/tux-files, ejecute:>sudochown tux /home/test/tux-files/ --recursivePuede probar el cambio de propiedad ejecutando el siguiente comando:
>ls -alrt /home/test/tux-files/ --recursive- Ejecutar un comando como otro usuario mediante
sudo -s En lugar de usar el comando
supara cambiar a un usuario diferente y luego ejecutar comandos, puede usar el comandosudo -s. Una shell ejecutada por el comandosudo -shereda el entorno del usuario actual. El comandosudo -stambién ofrece algunas medidas de control de privilegios.Para ejecutar un comando como un usuario diferente, utilice:
>sudo-s -u USERNAME COMMANDPor defecto, el comando se ejecuta desde el directorio del usuario anterior, ya que el usuario de destino hereda el entorno del usuario anterior.
Por ejemplo, para mostrar de forma recurrente los archivos y subdirectorios del directorio
/home/test/tux-files/como usuario de destinotux, ejecute:>sudo-s -u tux ls -alrt /home/test/tux-files/ --recursiveSi se utiliza el método
sudo -spara ejecutar un comando como un usuario diferente, el comando se registra en el historial.- Ejecutar un comando como otro usuario con un entorno limpio mediante
sudo -i Al utilizar el comando
sudo -s, el usuario de destino hereda el entorno del usuario anterior. Puede evitarlo mediante el comandosudo -i, donde el usuario de destino obtiene un entorno limpio y empieza en su propio directorio$HOME.Para ejecutar un comando como un usuario diferente con un entorno limpio, utilice:
>sudo-i -u USERNAME COMMANDEl comando
sudo -iejecuta una shell de inicio de sesión interactiva del usuario de destino. Como resultado, hay guiones de inicio de shell como archivos.profiley.bash_profile.Por ejemplo, para mostrar los archivos y subdirectorios del directorio
/home/test/tux-files/comotux, ejecute el siguiente comando:>sudo-i -u tux ls -alrt /home/test/tux-files/Si se utiliza el método
sudo -ipara ejecutar un comando como un usuario diferente, el comando se registra en el historial.
4 Diferencia entre sudo y su #
Conozca la diferencia entre los comandos sudo y su y cuándo utilizarlos.
En los sistemas Linux, puede preceder un comando tanto con sudo como con su. Ambos permiten ejecutar comandos como root.
4.1 Características del comando sudo #
sudopermite ejecutar un comando comoroot. Dependiendo de la configuración, no es necesario que introduzca la contraseña deroot, sino solo la del usuario. De esta forma, no es necesario compartir información confidencial con todos los demás usuarios (normales).Con el archivo de configuración
sudo, el administrador del sistema puede controlar qué usuarios pueden utilizarsudoy restringir el uso a determinadas tareas.sudoalmacena en caché la contraseña durante un período de tiempo determinado. Después de este período, se le solicitará la contraseña de nuevo al ejecutar otro comandosudo.Todos los comandos ejecutados con
sudose registran individualmente. El archivo de registro realiza un seguimiento de la fecha y la hora, el usuario que ejecutó el comando y el propio comando.
4.2 Características del comando su #
supermite ejecutar un comando comoroot, pero requiere que conozca la contraseña deroot.No se puede configurar para restringir el acceso a determinados usuarios y tareas, ni para aumentar los privilegios de cualquiera que conozca la contraseña de
root.Los privilegios son elevados durante toda la sesión de terminal. Mientras permanezca en la sesión, no se le volverá a pedir la contraseña.
Los comandos ejecutados con
suno se registran individualmente, ya que todas las acciones solo se pueden registrar con la cuenta de usuario.
5 Información legal #
Copyright © 2006 –2025 SUSE LLC y colaboradores. Reservados todos los derechos.
Está permitido copiar, distribuir y modificar este documento según los términos de la licencia de documentación gratuita GNU, versión 1.2 o (según su criterio) versión 1.3. Este aviso de copyright y licencia deberán permanecer inalterados. En la sección titulada “GNU Free Documentation License” (Licencia de documentación gratuita GNU) se incluye una copia de la versión 1.2 de la licencia.
Para obtener información sobre las marcas comerciales de SUSE, consulte https://www.suse.com/company/legal/. Todas las marcas comerciales de otros fabricantes son propiedad de sus respectivas empresas. Los símbolos de marcas comerciales (®, ™, etc.) indican marcas comerciales de SUSE y sus filiales. Los asteriscos (*) indican marcas comerciales de otros fabricantes.
Toda la información recogida en esta publicación se ha compilado prestando toda la atención posible al más mínimo detalle. Sin embargo, esto no garantiza una precisión total. Ni SUSE LLC, ni sus filiales, ni los autores o traductores serán responsables de los posibles errores o las consecuencias que de ellos pudieran derivarse.