:::: MENU ::::
  • Desarrollo Web - Responsive Design

  • Easy to Customize

  • Customizable fonts.

miércoles, 30 de enero de 2013


Hola amigos en esta ocasión empezaremos con una serie de artículos y tutoriales acerca del sistema operativo de linux "ubuntu" y en esta ocasión  intentare  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"

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.

En la terminal se utiliza el comando "sudo", anteponiéndolo a la orden o comando a ejecutar:
sudo comando

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

Cambiar al usuario root desactivado


Algunas veces, cuando vamos a ejecutar muchos comandos como root, podemos cambiar al usuario root, para así, ahorrarnos escribir el "sudo"en cada línea de ordenes.

A la hora de cambiar al usuario root en Ubuntu y al ser una tarea administrativa, deberemos de utilizar el "sudo" y hay varias 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:
 
juanetebitel@equipo:~$ sudo su
root@equipo:/home/juanetebitel# whoami
root
root@equipo:/home/juanetebitel# pwd
/home/juanetebitel

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):

 
juanetebitel@equipo:~$ sudo -s
root@equipo:~# whoami
root
root@equipo:~# pwd
/home/juanetebitel

Si queremos cambiar al $HOME y demás variables de entorno, utilizamos el guión medio "-":
 
juanetebitel@equipo:~$ sudo su -
root@equipo:~# whoami 
root
root@equipo:~# pwd
/root

Una cosa a tener en cuenta es que con "sudo su" o "sudo su -", ejecutamos recursivamente a root. Me explico, con "sudo" ejecutamos la siguiente orden (cambio de usuario "su") como root, creando una serie de variables y luego al ejecutarse el cambio de usuario ("su") nos volvemos a loguear otra vez como root, con lo cual ejecutamos muchos procesos innecesarios, y lo más importante, todos como root.

Es por eso, que lo más recomendable es utilizar la opción "-i" de sudo: "sudo -i".
 
juanetebitel@equipo:~$ sudo -i
root@equipo:~# whoami
root
root@equipo:~# pwd
/root

Con este comando cargamos una shell de root, y lo más importante, eliminamos las variables de entorno del usuario y cargamos las del root, cosa que no pasa con "sudo -s", que si bien nos da una shell de root, no elimina las variables del usuario.

Para salir del usuario "root" y volver a nuestro usuario "juanetebitel", ejecutamos el comando:
 
exit


Consejo:


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

sudo comando

Pero si hay que ejecutar muchos podemos usar:

 
sudo -i

Mejor que "sudo su" o cualquiera de los otros.

0 comentarios:

Publicar un comentario

¿Necesitas una pagina web? Contáctanos