Ir al contenidoIr a la navegación de la página: página anterior [tecla de acceso p]/página siguiente [tecla de acceso n]
documentation.suse.com / Ejecución de comandos como superusuario con sudo

Ejecución de comandos como superusuario con sudo

Fecha de publicación: 12 Dic 2024
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 con sudo para determinados casos de uso.

REQUISITOS
  • Privilegios de root o sudo. Solo están disponibles si es el administrador del sistema. Para obtener más información, consulte la Sección 1, “Conceptos básicos de sudo.

  • 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.

Nota
Nota: 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.

Ejemplo 1: Apertura del Centro de control de YaST con 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

1

Si solo se introduce el comando yast, el sistema indica que se requieren privilegios de root.

2

Al iniciar el comando yast con sudo, se solicita la contraseña de root. La contraseña no se muestra durante la introducción, ni como texto no cifrado ni como caracteres enmascarados.

Después de autenticarse correctamente, se abre el Centro de control de YaST.

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.

Procedimiento 1: Ejecución de un comando precedido de 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.

  1. Abra un terminal y cree un archivo de prueba con:

    > touch test.txt
  2. 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.

  3. Ahora, introduzca el mismo comando precedido por sudo.

    > sudo cp test.txt /usr/local/bin
  4. 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:
  5. Después de autenticarse correctamente, el archivo de prueba se copia en /usr/local/bin.

  6. 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, ejecute sudo !!.

> 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 y zypper

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 comandos zypper 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 utilizar sudo:

> zypper lr
Gestionar los servicios del sistema mediante sudo y systemctl

En los sistemas que utilizan systemd para gestionar servicios, puede utilizar el comando systemctl con sudo. Por ejemplo, para reiniciar el servicio del servidor Web Apache, ejecute:

> sudo systemctl restart apache2

No es necesario añadir sudo antes de los comandos systemctl que no modifiquen el sistema ni proporcionen acceso privilegiado a la información. Por ejemplo, puede mostrar el estado de Network Manager sin utilizar sudo:

> 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 y usermod

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 usuario tux después de que caduque la contraseña, ejecute:

> sudo usermod --inactive 30 tux
Modificar la propiedad de archivos y directorios mediante sudo y chown

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 comando sudo -s. Una shell ejecutada por el comando sudo -s hereda el entorno del usuario actual. El comando sudo -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 destino tux, 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 comando sudo -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/ como tux, 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 como root. Dependiendo de la configuración, no es necesario que introduzca la contraseña de root, 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 utilizar sudo 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 comando sudo.

  • 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 como root, pero requiere que conozca la contraseña de root.

  • 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.