El comando “su” (Substitute User) se utiliza para convertirte en otro usuario, y tener acceso a su sesión sin la necesidad de cerrar tu sesión actual. Por lo que en la terminal podrás interactuar con los comandos como si fueras ese otro usuario. Al invocar este comando sin algún parámetro, la acción por default de “su” será convertirte en “root”, o lo que es lo mismo, en súper usuario. Obviamente para ello te pedirá la contraseña correspondiente.

Código:
jonateo@localhost:~$ su
Password:
root@ localhost:/home/jonateo#
En cambio, si queremos volvernos un usuario en concreto, tendremos que especificarlo, escribiendo inmediatamente después del comando “su” el nombre del usuario. Y de igual manera nos pedirá la contraseña de ese usuario.


Código:
jonateo@localhost:~$ su fulanito
Password:
fulanito@ localhost:/home/jonateo#
El argumento opcional “-“ puede ser utilizado para proporcionar el ambiente esperado para el usuario con el que has entrado, logrando con ello que se ejecuten los archivos de inicio de dicho usuario, así como que se cambie el directorio a su propio HOME, y a su vez, se reinician algunas variables del sistema como $HOME, $SHELL, $LOGNAME, $USER, etc.

Código:
jonateo@localhost:~$ su -
Password:
root@ localhost:~#
Cabe mencionar que cuando nos convertirnos en súper usuario, el “$” cambia por “#”. Y que todos los intentos de logueo, sean exitosos o no, se guardan en un log, para detectar posibles abusos del sistema.

Por su parte, sudo permite a los usuarios autorizados la ejecución de comandos como si fueran el súper usuario o algún otro usuario. La relación de usuarios autorizados, osea, los que pueden ejecutar el comando “sudo”, se encuentran en este archivo: /etc/sudoers.

Si quien ejecuta el comando es el súper usuario, o si se quiere ejecutar el comando como el mismo usuario, no se pedirá contraseña. En cambio, para cualquier otro caso sí se pedirá. Esta contraseña, a diferencia de “su”, corresponde a la contraseña del usuario que ejecuta “sudo”, no la contraseña del root.

Por ejemplo, para ejecutar el editor de texto “gedit” como root, escribiríamos:

Código:
jonateo@localhost:~$ sudo gedit
[sudo] password for jonateo:
Mientras que para ejecutarlo como otro usuario tendríamos que escribir:

Código:
jonateo@localhost:~$ sudo -u fulanito gedit
[sudo] password for fulanito:
Donde –u hace referencia a “user”.

O bien, si quisiéramos simular un inicio de sesión como root, tendríamos que escribir:

Código:
jonateo@localhost:~$ sudo -i
[sudo] password for jonateo:
root@localhost:~#
Una vez identificado, comenzará una cuenta regresiva, que será el tiempo durante el cual se podrán seguir ejecutando comandos como el usuario al que se ha convertido, sin la necesidad de escribir el comando “sudo”. Por lo general son 15 minutos, a menos de que se modifique en el archivo “sudoers”.

Ejemplos:

Iniciando XAMPP como root:

Código:
jonateo@localhost:~$ sudo /opt/lampp/lampp stop
Stopping XAMPP for Linux 1.7.3a...
XAMPP: Stopping Apache with SSL...
XAMPP: Stopping MySQL...
XAMPP: Stopping ProFTPD...
XAMPP stopped.
Iniciando XAMPP como usuario no root

Código:
jonateo@localhost:~$ /opt/lampp/lampp start
You need to start XAMPP as root!
Iniciando XAMPP como usuario no root

Código:
jonateo@localhost:~$ sudo -u jonateo /opt/lampp/lampp start
You need to start XAMPP as root!
Y al igual que “su”, todo lo que hagamos con el commando “sudo” se guardará en un log, para registrar los posibles abusos del sistema.

Ejemplo de log:

Código:
May 23 11:25:17 jonateo sudo:  jonateo : TTY=pts/7 ; PWD=/home/jonateo ; USER=root ; COMMAND=/opt/lampp/lampp start
Ante cualquier duda pueden consultar para que sirve cada comando escribiendo en la consola:

Código:
man su
man sudo


Visto en Punto Geek