Share on FacebookTweet about this on TwitterShare on Google+

Introducción

En Linux los usuarios tienen unos privilegios limitados. Tan solo el usuario root tiene privilegios de administrador o superusuario.
Sin embargo el resto de usarios pueden obtener privilegios de root de varias maneras.

  • Una forma es cambiar de usuario, mediante el comando su (substitute user).
    En Ubuntu por defecto el usuario root está desactivado, lo activaremos definiendo una contraseña mediante:
  • Otra opción es el comando sudo, que nos sirve para suplantar a root, para ejecutar comandos como si fueramos root (ver código anterior). La sintaxis es:

    sudo nos pedirá la contraseña de nuestro usuario para poder continuar, su en cambio, nos pediría la del usuario al que vayamos a sustituir (si no indicamos usuario, por defecto se entiende root):

Por defecto, cuando creamos un usuario desde el terminal gráfico, podemos elegir si es administrador o no. En caso de serlo, lo añade al grupo sudo (y a algún otro grupo), definido en el fichero /etc/group. En caso contrario (usuario estándar), no podrá ejecutar el comando:

Configuración fichero sudoers

El comando sudo y sus privilegios específicos para cada usuario se configura mediante el fichero /etc/sudoers.
No se debe ejecutar nunca a mano ya que una sintaxis errónea nos podría dejar con un sistema en el que no pudiéramos obtener privilegios de superusuario, así que es importante utilizar siempre el comando visudo. El comando visudo nos permitirá editar el fichero /etc/sudores, pero además validará su sintaxis en el momento de guardar, evitando que errores de sintaxis puedan bloquear el uso del comando sudo.

Para editar, visudo utiliza el editor que tengamos definido por defecto. Para cambiar la configuración utilizaremos el siguiente comando:

Particularmente utilizo vi, pero es un editor con una curva de aprendizaje mayor que nano. Te recomiendo elegir este último si no conoces la sintaxis de vi.
El contenido inicial del fichero (eliminando comentarios) es el siguiente:

Si quieres, puedes mirar un manual sobre la configuración de sudoers. Es muy configurable, vamos a ver aquí las opciones más significativas:
Lineas por defecto:
Defaults env_reset: resetea el terminal de cualquier variable de entorno. Es una medida de seguridad para proteger la sesión de sudo.
Defaults mail_badpass: Envio de un email cuando la contraseña de acceso a sudo sea incorrecta. Se enviará a la dirección de correo especificada en la variable mailto definida en este mismo fichero (el valor por defecto es root).
Defaults secure_path: Especifica el PATH que se va a utilizar para buscar los comandos de las operaciones con sudo.

Por defecto se guarda la contraseña de acceso a sudo 15 minutos podríamos pedirla siempre (configurando un tiempo de 0 minutos) o no pedirla más (tiempo negativo) añadiendo un registro de Defaults. Con esta línea la estableceríamos en 5 minutos:

Lineas de privilegios por usuarios:

Los campos son los siguientes:

  • root ALL=(ALL:ALL) ALL: usuario a configurar, sobre el que se va a aplicar la regla
  • root ALL=(ALL:ALL) ALL: indicamos que la regla aplica a cualquier host. En principio siempre tendremos ALL, a no ser que compartamos el fichero de sudoers entre varios equipos.
  • root ALL=(ALL:ALL) ALL: indicamos que se pueden ejecutar comandos en lugar de cualquier usuario.
  • root ALL=(ALL:ALL) ALL: indicamos que se pueden ejecutar comandos en lugar de cualquier grupo.
  • root ALL=(ALL:ALL) ALL: indicamos que la regla aplica a cualquier comando.

Lineas de privilegios por grupos:
Similares a las anteriores, pero empiezan por % para indicar que se trata de nombres de grupo.

Ejemplos de como crear reglas:

Definimos los usuarios a los que aplica mediante un alias:

Si no especificamos usuario o grupo, por defecto entiende que se trata del usuario root.

Podemos agrupar varios comandos en uno y dar permisos de ejecución al grupo:

Podemos definir un alias de usuarios a los que podamos suplantar:

Permitimos ejecutar a los miembros de GRUPO1 cualquier comando como si fueran el usuario www-data o el usuario apache.
Para ejecutar un comando en su nombre, podriamos hacerlo ahora mediante sudo -u o sudo -g.

Si hay dos reglas que se solapan, tiene preferencia la última que se lee.

Hay ciertas etiquetas útiles como NOPASSWD y NOEXEC para no exigir el uso de contraseña y NOEXEC para evitar la ejecución de ciertos programas:

El grupo1 no necesita escribir su contraseña cuando utilice el comando sudo para ejecutar el comando updatedb, sin embargo si es necesaria para matar un proceso (comando kill).

Comandos útiles

sudo -l
Veremos la lista de reglas en el fichero /etc/sudoers que aplican a nuestro usuario.
sudo !!
Ejecutamos el último comando. Es útil cuando se nos olvida poner el sudo antes de la ejecución del comando.
username ALL=(ALL) NOPASSWD: ALL
Insertamos la linea anterior en el fichero de sudoers para evitar tener que poner la contraseña al ejecutar un comando con sudo. Otra opción más segura sería aumentar el tiempo de sesión sudo, antes de que vuelva a pedir contraseña:

Comments

  1. Pingback: SkrDz-Sv/emulacion-kids | GITROOM

Leave a Reply

Your email address will not be published. Required fields are marked *