Articles

Linux – Cambiar temporalmente a otro usuario de Linux (usando su)

Posted on

## Cómo cambiar de usuario o convertirse temporalmente en root

Anuncio

Puedes encontrar todos mis últimos posts en medium.

## Comandos cubiertos en este artículo
id # Muestra el nombre de usuario del usuario actualmente conectado. También muestra a qué grupos pertenece el usuario.
su # Le permite (s)witch a otro (u)ser mientras está conectado como otra persona.
sudo # xxxxxxxxxxxxx

# Convertirse en el usuario root usando «su»
En linux siempre se recomienda evitar iniciar sesión como el usuario root directamente. Esto es porque puede causar problemas de seguridad y aumenta las posibilidades de dañar algo. De hecho, Centos mostrará un mensaje de advertencia cuando se intente un inicio de sesión directo de root.

Así que la mejor práctica es que siempre se inicie sesión como un usuario normal. Sin embargo, hay un montón de comandos que sólo se pueden ejecutar como el usuario root, y en esos casos, la forma recomendada para ejecutarlos es mediante el (s)witch (u)ser utilidad, que le permite cambiar de un usuario a otro:

su – root # Esto le permite cambiar al usuario root. Cubriré el argumento «-» más adelante.
contraseña # El comando su solicita la contraseña del usuario al que se está cambiando. En este caso es la contraseña del usuario root.
id # El comando id simplemente muestra bajo qué usuario se está ejecutando la sesión.

Nota, sólo puedes usar el comando su si conoces la contraseña del usuario al que estás cambiando. La única excepción a esta regla es si usted está conectado como el usuario root, en cuyo caso usted puede su a cualquier usuario sin una solicitud de contraseña.

Inicio de sesión:
contraseña:
id
su – # Si usted deja fuera el nombre de usuario, como aquí, entonces por defecto, su asumirá que usted quiere decir root.
contraseña
id
su – Tom
id # Fíjate que no hemos necesitado introducir la contraseña de Tom.

## Cambiar de nuevo al usuario anterior
En el ejemplo anterior hemos cambiado de John-=>root-=>Tom. Esto significa que nuestro shell actual es de 2 sesiones. Así que si quieres cambiar de nuevo a Juan, entonces puedes usar el comando exit:

id
exit # Esto te lleva de vuelta a un paso, que en este caso es el usuario root.
id
exit # Ahora estás de vuelta a Juan, y no puedes salir más. Si intentas salir de nuevo, entonces el propio terminal se cerrará.

En lugar de hacer lo anterior, podrías haber hecho simplemente:

su – John # en este caso, estarías a 3 sesiones de profundidad, es decir.e. John-=>root-=>Tom-=>John
# Es una buena práctica, en la medida de lo posible, no profundizar nunca más de 3 niveles. De lo contrario, podrías empezar a experimentar comportamientos extraños.

# ¿Qué significa el «-» en ‘su -‘?

El primer parámetro, «-«, le dice a su que finja como si el usuario se conectara directamente. Por lo demás, se pasa el entorno, con la excepción de $PATH, que está controlado por PATH y SUPATH en /etc/default/su.

Este «-» básicamente significa que se inicia la nueva sesión desde cero, y no se lleva ningún ‘bagaje’ de la sesión anterior. Por ejemplo, si usted crea una variable, y la exporta, entonces esta variable sólo está disponible si no se inicia una nueva sesión:

testvar=12345 # Aquí he creado una nueva variable.
exportar testvar # Esto establece la variable para estar disponible en todas las sesiones.
su Tom # Dado que «-» se omite, se permite la transferencia. Así que la variable debe ser accesible en la nueva sesión.
contraseña
echo testvar # La variable existe en la nueva sesión.
salir
su – Tom # Como se especifica «-«, se bloquea cualquier traspaso, para imitar un inicio de sesión tan directo como sea posible.
echo testvar # Devuelve un espacio en blanco ya que esta variable no existe en una sesión «fresca».

## Ejecuta un único comando como otro usuario.
Puede utilizar su para cambiar de usuario el tiempo suficiente para ejecutar un solo comando antes de volver a salir:

su – Tom -c ‘echo «Hola y Adiós Tom’

O puede fusionar varios comandos en una sola línea utilizando punto y coma:

su – Tom -c ‘id ; echo «Hello and Goodbye Tom’

#Dar acceso a los no-admins a algún nivel de root usando sudo
En Linux, todos los comandos/tareas de nivel de administrador que sólo pueden ser realizados por el usuario root. Así que si hay una actividad particular de nivel de administrador que usted quiere que un colega para llevar a cabo, a continuación, una forma de hacerlo es decirle la contraseña de root. Sin embargo, esto no es una buena idea porque:
1. por razones de seguridad, es una buena práctica limitar, en la medida de lo posible, quién tiene acceso de root.
2. inadvertidamente le estás dando el control total de todo lo demás.

Una forma de evitar este dilema es utilizar la utilidad sudo. Sudo permite al usuario root dar a un usuario la capacidad de ejecutar uno o más comandos de nivel de administrador (como si estuviera conectado como usuario root pero sin entrar realmente como usuario root).

Por ejemplo, sólo root puede apagar la máquina:

shutdown # Esto apaga una máquina. Para encenderla de nuevo, hay que pulsar el botón de encendido de la máquina.

Si el usuario, Tom intenta utilizar el comando shutdown, entonces recibe un mensaje de permiso denegado:

<code=>

Si el usuario root le da a Tom, permiso sudo para utilizar el comando «shutdown». Entonces Tom debería ser capaz de ejecutar el comando a nivel de administrador precediéndolo con la palabra sudo:

sudo {comando}

Como se ha indicado anteriormente, la sintaxis para iniciar sudo es la palabra sudo seguida del comando a ejecutar:

De esta manera Tom puede invocar su privilegio sudo de la siguiente manera:

shutdown # esto no funcionará porque sudo no ha sido invocado.
sudo shutdown # Esto funcionó, y la máquina se apaga.
<password=> # Al igual que su, tienes que introducir una contraseña. Pero a diferencia de su, en realidad se introduce la contraseña del usuario actual.
# Esto es un poco exagerado ya que el usuario ya está conectado como ese usuario. Afortunadamente este <l-anchor=>sudo password<l=> puede ser desactivado.

Por razones de seguridad, se mantiene un registro de todas las actividades relacionadas con sudo, en caso de que un usuario abuse de sus privilegios sudo.

El usuario root necesita <l=>configurar y asignar los privilegios sudo<l=> para poder asignar los privilegios.

# La principal diferencia entre usar su y sudo (para ejecutar comandos de administrador)
Para resumir, La principal diferencia para ejecutar comandos de nivel de administrador como usuario principal son:

1. Para usar su, necesitas conocer la contraseña de root, mientras que para sudo, no
2. Con sudo, necesitas anteponer a cada comando la palabra «sudo», pero no es necesario anteponerla con su.
3. Con su, puedes ejecutar cualquier comando admin, pero con sudo, sólo puedes ejecutar los comandos admin según lo autorizado en el archivo de configuración de sudo.

# Algunos datos útiles
Al usuario root se le conoce a veces como el «superusuario».
Una alternativa al «id» comamnd «whoami» (pero no es tan informativo).
Hay una convención de que para un usuario root, el prompt user termina en «#» mientras que para cualquier otro termina con «$». Hablando de eso, hay algunas maneras de <l=>personalizar el prompt de comandos<l=>.

El comando id muestra más que los nombres de usuario y grupo. También muestra los números de identificación correspondientes para el usuario y los grupos. También puede utilizar el comando id para ver los detalles de otros usuarios aparte del usuario actualmente conectado:

id {nombre de usuario}

El comando id obtiene su información de /etc/passwd y /etc/group

# Temas relacionados
Cómo configurar y asignar privilegios sudo.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *