Enviado por sistemas agrarios a través de Google Reader:

vía ubuntu-guia de juanetebitel el 13/08/12

 

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, 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 del “sudo su“, indiscriminado, 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 configuraciones, 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, vamos a ver 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):

 

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:

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 es igual que estar en la propia carpeta personal del usuario en cuestión “/home/juanetebitel”.

Ahora vamos a cambiar al usuario “manuel” con el comando: “su nombreusuario“:

 

Nota: Nos pedirá la contraseña de “manuel” (no la de juanetebitel)

Y comprobamos quien es y donde está:

 

Vemos que es “manuel” pero sigue en mi carpeta personal “/home/juanetebitel” y no en la suya. Eso sí, en el Prompt (texto por defecto antes del “$”), esta variable de entorno es actualizada al 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”, a su carpeta personal y algunas variables de entorno (no todas), añadimos un espacio en blanco y un guión medio “-” a “su” (antes de manuel):

 

Aquí vemos que en el Prompt (comienzo de línea por defecto antes del “$”) 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 el usuario (“su root“) o no (“su”), aunque es más utilizada esta última:

Como dijimos, “su”, cambia de usuario pero no cambia de directorio $HOME ni las variables de entorno.

Si queremos cambiar al root, a su $HOME y algunas variables de entorno (no todas), añadimos un espacio en blanco y un guión medio “-:

Para ver el manual de “su” ejecutar en una terminal:

Para salir del manual pulsar Ctrl+Z

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.

Como ya mencionamos, Ubuntu trae desactivada la cuenta del usuario por defecto y el denominado “sudoers users” (administradores o admin), en el que se encuentra el usuario con el que instalamos Ubuntu, pueden hacer las mismas tareas que el root.

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 y este archivo solo puede ser editado por el root con “visudo

Este archivo configura el sistema de forma que cualquier usuario del grupo “admin” (administrador) pueda realizar tareas administrativas anteponiendo el “sudo” a cualquier orden o comando.

Para ver el manual de “sudo” ejecutar en una terminal:

Para salir del manual pulsar Ctrl+Z

Cambiar al usuario root desactivado

Algunas veces, cuando vamos a ejecutar muchos comandos como root, podemos cambiar al usuario root, para así, ahorrarnos el “sudo”

A la hora de de cambiar al usuario root en Ubuntu y al ser una tarea administrativa, deberemos de utilizar el “sudo” y hay muchas maneras de hacerlo:

La más común, pero no la mejor, es utilizar el “sudo su“, manteniendo las variables de entorno y el $HOME:

 

Nota: La contraseña que nos pide es la del usuario que ejecuta el “sudo”, no la del root (si la tuviéramos activada)

También podemos conseguir una shell de root sin eliminar las variables de entorno con: “sudo -s” (mucho ojo: con este comando, el prompt no te avisa de que sigues en el home del usuario):

Si queremos cambiar al $HOME y algunas variables de entorno, utilizamos el guión medio “-“:

Una cosa a tener en cuenta es que con “sudo su” o “sudo su -“, ejecutamos recursivamente a root. Me explico, con “sudo” ejecutamos “su” como root, creando una serie de variables y luego al ejecutarse el “su” nos volvemos a loguear otra vez como root, con lo cual ejecutamos muchos procesos innecesarios, y lo mas importante, todos como root.

Es por eso, que lo más recomendable es utilizar la opción de sudo “-i“: “sudo -i“.

Con este comando cargamos una shell de root, y los mas importante, eliminamos variables de entorno y cargamos las del root, cosa que no pasa con sudo -s, que si bien nos da una shell root, no elimina las variables cargadas.

Consejo:

En Ubuntu, la mejor opción es usar el sudo en cada uno de los comandos a ejecutar:

Pero si hay que ejecutar muchos podemos usar:

Mejor que “sudo su” o cualquiera de los otros.

También os puede interesar leer como activar la cuenta del root y más cosas sobre él en:
http://www.ubuntu-guia.com/2010/09/activar-desactivar-root-ubuntu.html

Cosas que puedes hacer desde aquí: