- Introducción
- El comando su
- El comando sudo
- Introducción (Volver al índice General)
En este artículo veremos las diferencias entre su y sudo, pero antes de entrar a conocer los comandos su y sudo tendremos que tener claro que es la cuenta de root. root es la cuenta de súper usuario de Linux, el administrador del sistema, la cuenta con el nivel de privilegios mas alto y que le permiten controlar totalmente el sistema. El resto de usuarios del sistema siempre tendrán un nivel de privilegios inferior al de root.Debido al alto nivel de privilegios de la cuenta de root, no es aconsejable utilizar la cuenta de root para una simple sesión de uso habitual, ya que pone en riesgo el sistema al garantizar acceso privilegiado a los programas que ejecuta. Es preferible utilizar una cuenta de usuario normal y utilizar el comando su o sudo para adquirir los privilegios de root en caso de ser necesario.
A continuación veamos la utilidad de los comandos su y sudo.
- El comando su (Volver al índice General)
su es el acrónimo de «substitute user» (usuario sustituto) o según opiniones, «super user» (super usuario). su nos permite cambiar de usuario sin cerrar la sesión del usuario actual. Este comando se utiliza cuando tenemos que ejecutar comandos con la cuenta de otro usuario. Si lo invocamos sin indicar ningún nombre de usuario, por defecto cambiamos a la cuenta de root.
- Ejemplos de uso del comando su (Volver al índice General)
A continuación veremos como cambiar a la cuenta de un usuario normal del sistema y a la cuenta de root.
- Cómo cambiar a la cuenta de un usuario normal del sistema (Volver al índice General)
- Cambiar de usuario heredando las variables de entorno (Volver al índice General)
Si ejecutamossu
seguido delnombre de usuario
, adquirimos los privilegios de otro usuario del sistema y nos posicionamos en elhome
del usuario que lo invocó. Además, heredamos las variables de entorno del usuario que lo invoca. Veamos un ejemplo en el que el usuariomortadelo
adquiere los privilegios del usuariofilemon
:mortadelo@mypc:~$ su filemon Contraseña: filemon@mypc:/home/mortadelo$
Obsérvese que a pesar de que nos convertimos en el usuario
filemon
, seguimos en el home demortadelo
. No olvidemos quefilemon
hereda las variables de entorno demortadelo
. - Cambiar de usuario sin heredar las variables de entorno (Volver al índice General)
Si ejecutamossu -
seguido delnombre de usuario
, no solo adquiriremos los privilegios de otro usuario, sino que además, nos posicionamos en elhome
del usuario que adquirimos sus privilegios y no heredamos sus variables de entorno. Veamos un ejemplo en el que el usuariomortadelo
adquiere los privilegios del usuariofilemon
, pero consu -
:mortadelo@mypc:~$ su - filemon Contraseña: filemon@mypc:~$
Obsérvese que ahora, nos convertimos en el usuario
filemon
y nos hemos posicionado en el directoriohome
(~)
del usuariofilemon
. Ademásfilemon
no hereda las variables de entorno demortadelo
.
- Cambiar de usuario heredando las variables de entorno (Volver al índice General)
- Cómo cambiar a la cuenta de root (Volver al índice General)
Si ejecutamos el comandosu
sin indicar elnombre de usuario
, por defecto adquiriremos los privilegios de root. Veamos ejemplos sin y con-
de como el usuariomortadelo
adquiere los privilegios de root:
- Cambiar de usuario heredando las variables de entorno (Volver al índice General)
mortadelo@mypc:~$ su Contraseña: root@mypc:/home/mortadelo#
Obsérvese que a pesar de que nos convertimos en el usuario root, seguimos en el home de
mortadelo
. No olvidemos que root hereda las variables de entorno demortadelo
. - Cambiar de usuario sin heredar las variables de entorno (Volver al índice General)
mortadelo@mypc:~$ su - Contraseña: root@mypc:~#
Obsérvese que ahora, nos convertimos en el usuario root y nos hemos posicionado en el directorio
home (~)
del usuario root. Además root no hereda las variables de entorno demortadelo
.
- Cambiar de usuario heredando las variables de entorno (Volver al índice General)
- Cómo cambiar a la cuenta de un usuario normal del sistema (Volver al índice General)
Nota: su ya no altera la variable PATH de manera predeterminada. Cuando abrimos en la terminal una sesión de usuario root con su, su variable PATH no contiene determinados directorios como
/sbin
, y por lo tanto, muchos comandos de administración del sistema fallan. Cuando los ejecutamos, el sistema responde “orden no encontrada” (command not found).
La solución es utilizarsu –
en lugar desu
.En ZeppelinuX hemos publicado el artículo Command not found (Orden no encontrada ) con «su» en Debian 10 ‘buster’ que trata más profundamente este aspecto de su.
Para mas información sobre el comando su, pincha aquí para ver su página man.
- Ejemplos de uso del comando su (Volver al índice General)
- El comando sudo (Volver al índice General)
sudo es el acrónimo de «super user do» (algo así como hacer como súper usuario). sudo nos permite ejecutar programas y comandos con el nivel de privilegios de root (súper usuario), es muy similar a su pero con algunas restricciones definidas dentro del archivo/etc/sudoers
.
Al permitir obtener privilegios a cualquier usuario, sudo es menos aconsejable e inseguro que su, por este motivo no todas las distribuciones lo integran.
- Configurar sudoers (Volver al índice General)
El fichero/etc/sudoers
contiene la lista de usuarios a los que se le permite la ejecución del comando sudo y cual es su alcance y privilegios.Nota: La forma recomendada y segura de editar el fichero
/etc/sudoers
es mediante el comandovisudo
.visudo
bloquea el archivo/etc/sudoers
, guarda los cambios en un archivo temporal y comprueba los errores sintácticos antes de copiarlo en/etc/sudoers
.Para editar el archivo
sudoers
, tendremos que adquirir previamente privilegios de root, por ejemplo con su. Una vez adquiridos los privilegios de root, simplemente ejecutamos el comandovisudo
desde una terminal:# visudo
El contenido del archivo
/etc/sudoers
suele ser similar al siguiente:# # This file MUST be edited with the 'visudo' command as root. # # Please consider adding local content in /etc/sudoers.d/ instead of # directly modifying this file. # # See the man page for details on how to write a sudoers file. # Defaults env_reset Defaults mail_badpass Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" # Host alias specification # User alias specification # Cmnd alias specification # User privilege specification root ALL=(ALL:ALL) ALL # Allow members of group sudo to execute any command %sudo ALL=(ALL:ALL) ALL
- Eliminar el periodo de gracia de sudo (Volver al índice General)
Si ejecutamos sudo desde una terminal, lo primeros que se nos pide es la contraseña. Si volvemos a ejecutar en la misma terminal el comando sudo, no nos pedirá la contraseña. El tiempo que transcurre desde que ejecutamos por primera vez el comando sudo hasta que lo volvemos a ejecutar y nos vuelve a perdir la contraseña se le conoce como «periodo de gracia».Para hacer que sudo sea algo más seguro, puedemos modificar el archivo
/etc/sudoers
y eliminar el “periodo de gracia” para que ningún intruso lo use indebidamente.Para eliminar el «periodo de gracia», en primer lugar editamos el archivo
/etc/sudoers
con nuestro editor favorito:$ sudo nano /etc/sudoers
Al final del fichero, escribimos la siguiente línea:
Defaults:ALL timestamp_timeout=0
- Añadir usuarios a la lista de sudoers (Volver al índice General)
Veremos dos métodos:
- Añadirlos directamente al archivo /etc/sudoers (Volver al índice General)
Con este método, añadiremos usuarios a la lista desudoers
insertandolos bajo la línea que define aroot
.La sintaxis genérica para los usuarios listados en este archivo es la siguiente:
quién dónde = (como_quién:como_quiénes) qué
Veamos un ejemplo añadiendo al usuario
mortadelo
:... # User privilege specification root ALL=(ALL:ALL) ALL mortadelo ALL=(ALL:ALL) ALL ...
Expliquemos un poco todos estos ALL:
- mortadelo ALL=(ALL:ALL) ALL: Este indica que la regla se aplica a cualquier anfitrión o host.
- mortadelo ALL=(ALL:ALL) ALL:
mortadelo
podrá usar comandos de cualquier usuario. - mortadelo ALL=(ALL:ALL) ALL: Si el anterior ALL permitía usar comandos de usuarios, éste permite usar comandos de grupos.
- mortadelo ALL=(ALL:ALL) ALL: Las reglas se aplican a todos los comandos.
- Añadirlos al grupo sudo (Volver al índice General)
Al final del archivo/etc/sudoers
, podemos ver que aparecen las siguientes líneas:... # Allow members of group sudo to execute any command %sudo ALL=(ALL:ALL) ALL
La primera de estas dos líneas, lo que nos está diciendo es que los usuarios que pertenecen al grupo
sudo
están incluidos en la lista desudoers
. La segunda establece las reglas para los usuarios que pertenecen al gruposudo
.Para añadir un usuario a la lista de
sudoers
utilizando este método, simplemente tendremos que añadirlos al gruposudo
. Veamos un ejemplo de como añadimos al usuariofilemon
al gruposudo
:$ sudo usermod -a -G sudo filemon
En sistemas RedHat, Fedora o Centos el grupo que agrega usuarios a la lista de
sudoers
se llamawheel
, por lo tanto, para agregar al usuariofilemón
al grupowheel
ejecutaremos el siguiente comando:$ sudo usermod -a -G wheel filemon
- Añadirlos directamente al archivo /etc/sudoers (Volver al índice General)
- Eliminar el periodo de gracia de sudo (Volver al índice General)
- Usos más comunes de sudo (Volver al índice General)
- Ejecutar un comando como root (Volver al índice General)
El uso más común de sudo es seguido de un comando para ejecutar este último con privilegios de root. Veamos un ejemplo:$ sudo apt intall paquete
Con este comando estamos instalando un paquete en nuestro sistema.
$ sudo nano /etc/hosts
con este comando editamos el archivo
/etc/hosts
. - Ejecutar comandos de otro usuario (Volver al índice General)
Supongamos quefilemon
tiene un script que solo él puede ejecutar. Veamos como lo ejecutaríamortadelo
:mortadelo@mypc:~$ sudo -u filemon /home/filemon/myscript.sh
- Qué comandos puedo utilizar con sudo (Volver al índice General)
Veamos que comandos puede utilizar el usuariomortadelo
:mortadelo@mypc:~$ sudo -l Matching Defaults entries for mortadelo on zion: env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin User mortadelo may run the following commands on zion: (ALL : ALL) ALL
- Ejecutar un comando como root (Volver al índice General)
Para más información sobre el comando sudo, pincha aquí para ver su página man.
- Configurar sudoers (Volver al índice General)
Espero que este artículo os haya sido de utilidad. Si pensáis que podéis colaborar para mejorar este artículo, que hay algo erróneo en él o simplemente deseáis comentarlo, por favor, dejad vuestra opinión más abajo.
Configuración de privacidad y de cookies.
Deja una respuesta