Ejecución de comandos como superusuario con sudo
- DESCRIPCIÓN
Conozca los conceptos básicos de
sudo
y 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
sudo
y ejecutar comandos consudo
para determinados casos de uso.- REQUISITOS
Privilegios de
root
osudo
. 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
#>
yast
Absolute path to 'yast' is '/usr/sbin/yast', so running it may require superuser privileges (eg. root).1>
sudo
yast
[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.txt
Copie el archivo en el directorio
/usr/local/bin/
con:>
cp test.txt /usr/local/bin
El 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
.>
sudo
cp test.txt /usr/local/bin
Se 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 test
drwxr-xr-x 1 root root 0 Apr 20 12:48 test- Gestionar paquetes mediante
sudo
yzypper
Para ejecutar comandos de gestión de paquetes como administrador, añada
sudo
antes del comando:>
sudo
zypper [--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
:>
sudo
zypper addrepo https://download.docker.com/linux/suse/docker-ce
>
sudo
zypper refresh
>
sudo
zypper search docker-ce
>
sudo
zypper install docker-ce
No es necesario añadir
sudo
antes de los comandoszypper
que 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
sudo
ysystemctl
En los sistemas que utilizan
systemd
para gestionar servicios, puede utilizar el comandosystemctl
consudo
. Por ejemplo, para reiniciar el servicio del servidor Web Apache, ejecute:>
sudo
systemctl restart apache2
No es necesario añadir
sudo
antes de los comandossystemctl
que 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
sudo
yusermod
Para ejecutar el comando
usermod
para modificar cuentas de usuario, utilice:>
sudo
usermod [OPTION] USERNAME
Por ejemplo, para definir
30
como el número de días para inhabilitar permanentemente la cuenta de usuariotux
después de que caduque la contraseña, ejecute:>
sudo
usermod --inactive 30 tux
- Modificar la propiedad de archivos y directorios mediante
sudo
ychown
Para cambiar la propiedad de los archivos y directorios del propietario actual a uno nuevo, utilice:
>
sudo
chown [OPTION] [OWNER:[GROUP]] FILE
Por ejemplo, para asignar a
tux
la propiedad de los archivos y subdirectorios del directorio/home/test/tux-files
, ejecute:>
sudo
chown tux /home/test/tux-files/ --recursive
Puede 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
su
para cambiar a un usuario diferente y luego ejecutar comandos, puede usar el comandosudo -s
. Una shell ejecutada por el comandosudo -s
hereda el entorno del usuario actual. El comandosudo -s
también ofrece algunas medidas de control de privilegios.Para ejecutar un comando como un usuario diferente, utilice:
>
sudo
-s -u USERNAME COMMAND
Por 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/ --recursive
Si se utiliza el método
sudo -s
para 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 COMMAND
El comando
sudo -i
ejecuta una shell de inicio de sesión interactiva del usuario de destino. Como resultado, hay guiones de inicio de shell como archivos.profile
y.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 -i
para 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
#
sudo
permite 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 utilizarsudo
y restringir el uso a determinadas tareas.sudo
almacena 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
sudo
se 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
#
su
permite 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
su
no se registran individualmente, ya que todas las acciones solo se pueden registrar con la cuenta de usuario.
5 Información legal #
Copyright © 2006 –2024 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.