miércoles, 7 de noviembre de 2012

CÓMO UTILIZAR LOS COMANDOS SU Y SUDO

Ya me he visto en varias situaciones, en las que intentando explicar como hacerse root en la terminal, he intuido que hay cierta confusión entre los comandos sudo y su, creyendo algunos noveles, que "su" es un diminutivo de "sudo" y que hacen lo mismo.

Estos comandos son totalmente distintos y cada uno sirve para una cosa muy distinta.

También me he dado cuenta que el uso indiscriminado del "sudo su" después de instalar Ubuntu para logearse como root e instalar todo tipo de aplicaciones sin necesidad de escribir el "sudo" constantemente, provoca algunas malas instalaciones y desconfiguraciones, por no eliminar las variables de entorno del usuario y cargar las del root (ver consejo al final de la guía).



Para sacarnos de dudas, voy a tratar de explicar con detalle, el uso de estos dos comandos:

El comando "su"


Son las siglas de "Switch User" y sirve, como su propio nombre indica, para cambiar de usuario sin necesidad de hacer un cierre o cambio de sesión (todo esto desde la terminal, esa cosa tan rara, pero potente y funcional).

Vamos a ver unos ejemplos y para ello, vamos a utilizar dos comandos más: whoami (quien soy) y pwd (directorio en el que nos encontramos en la terminal):
juanetebitel@equipo:~$ whoami
juanetebitel
juanetebitel@equipo:~$ pwd
/home/juanetebitel
Aquí vemos con "whoami", que soy "juanetebitel" y con "pwd", que estoy en mi carpeta personal "/home/juanetebitel".

Como anotación, decir que la línea con que siempre se abre nuestra terminal:
juanetebitel@equipo:~$
Se denomina: "Prompt" y está compuesta por:
  • nombre de usuario "juanetebitel
  • el símbolo de "@"
  • nombre del equipo "equipo"
  • dos puntos ":"
  • directorio donde nos encontramos "~"
  • símbolo del dolar "$" (si estamos como root cambiará a "#"). 
Hay que tener en cuenta que en la parte del directorio donde nos encontramos aparece el símbolo "~", que equivale a la propia carpeta personal del usuario en cuestión "/home/juanetebitel".

Ahora vamos a cambiar al usuario "manuel" con el comando: "su nombreusuario":
juanetebitel@equipo:~$ su manuel
Contraseña: [la de manuel]
Nota: Nos pedirá la contraseña de "manuel" (no la de juanetebitel)

Y comprobamos quien es y donde está:
manuel@equipo:/home/juanetebitel$ whoami
manuel
manuel@equipo:/home/juanetebitel$ pwd
/home/juanetebitel
Vemos que es "manuel" pero sigue en mi carpeta personal "/home/juanetebitel" y no en la suya, no cambiando las variables de entorno. Eso sí, en el Prompt (texto por defecto antes del "$"), esta variable de entorno es actualizada y nos muestra el nuevo usuario y el home del usuario, donde nos encontramos: "manuel@equipo:/home/juanetebitel$". Esto es muy importante tenerlo en cuenta a la hora de hacerse root.

Si queremos cambiar al usuario "manuel" y además cambiar a su carpeta personal y demás variables de entorno, añadimos un espacio en blanco y un guión medio "-" a "su" (antes de manuel):
juanetebitel@equipo:~$ su - manuel
Contraseña: [la de manuel]
manuel@equipo:~$ whoami
manuel
manuel@equipo:~$ pwd
/home/manuel
Aquí vemos que en el Prompt aparece el directorio con el símbolo "~", que es igual que estar en la propia carpeta personal del usuario en cuestión "manuel@equipo:~$".


Cambiar al usuario root activado:


En sistemas GNU/linux con la cuenta del root activada (no es el caso de Ubuntu por defecto), para cambiar al usuario "root", se puede hacer escribiendo después del "su" el usuario ("su root") o no ("su"), aunque es más utilizada esta última:
juanetebitel@equipo:~$ su
root@equipo:/home/juanetebitel# whoami
root
root@equipo:/home/juanetebitel# pwd
/home/juanetebitel
Como dijimos, "su", cambia de usuario pero no cambia de directorio $HOME ni demás variables de entorno.

Si queremos cambiar a root y además cambiar a su carpeta personal y demás variables de entorno, añadimos un espacio en blanco y un guión medio "-":
juanetebitel@equipo:~$ su -
root@equipo:~# whoami
root
root@equipo:~# pwd
/root
Para salir del usuario "root" o "manuel" y volver a nuestro usuario "juanetebitel", ejecutamos el comando:
exit

Para ver el manual de "su" ejecutar en una terminal:
man su
Para salir del manual pulsar la tecla q.


El comando "sudo"


"Sudo" viene de "switch user do" y permite a los usuarios ejecutar acciones con los privilegios de seguridad del root, de manera segura. Se instala por defecto en /usr/bin.

Por defecto Ubuntu trae desactivada la cuenta del "root", por seguridad y para administrar el sistema existe un grupo de usuarios denominado "sudoers users" (administradores o admin), los cuales pueden obtener permisos de root, mediante la utilización de "sudo".

El usuario con el que instalamos Ubuntu, se encuentra incluido en este grupo de administradores.

El archivo que determina el acceso a las tareas administrativas del grupo "sudoers users" es "/etc/sudoers". En Ubuntu 12.04 el archivo por defecto viene configurado así:
# 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 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

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL

# See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d
Nota: todas las líneas con una # delante son comentarios y el sistema no los lee. Este archivo solo puede ser editado por el root con "visudo"

No hay comentarios:

Publicar un comentario