Hoy en día, lo normal al instalar GNU/Linux en un sistema es que la primera cuenta que se configura durante la instalación esté considerada como cuenta administradora. Con el comando sudo
puede identificarse para confirmar que realmente al otro lado del teclado está la persona que dice estar y no un impostor, y así ejecutar comandos o cambiar opciones que requieren permisos elevados porque introducen cambios al funcionamiento del sistema operativo, como instalar programas nuevos.
Sin embargo, ¿qué hacemos cuando queremos darle estos permisos a otra cuenta? Por ejemplo, en un entorno de trabajo grande donde tengamos varias personas que puedan administrar un sistema. No querríamos que toda la administración de la máquina caiga sobre una misma persona en una gran empresa. Tal vez haya varias personas para administrar los servidores e instalar comandos, según se pongan de acuerdo.
En ese caso, lo que tendremos que hacer es convertir una cuenta de usuario en administradora. Este es un proceso casi chamánico que requiere la intervención de otra cuenta que ya sea administradora, para darle la bienvenida a la nueva cuenta al club. Sin embargo, la forma en la que se hace este proceso depende un poco de la instalación.
El grupo de sudoers
Por lo general, hoy en día casi cualquier distribución GNU/Linux utiliza un grupo de usuarios para identificar a estas cuentas. Así, al agregar o quitar personas del grupo, se les puede dar o revocar estos permisos sin involucrar más configuración.
Este grupo llevará uno de los dos nombres. Históricamente, el grupo se denominaba wheel
. Existen varias teorías sobre el origen de este nombre, ninguna posiblemente importe en este momento. Lo clave es que, a pesar de ser el nombre usado en el UNIX tradicional, muchas distribuciones GNU/Linux continúan usando este nombre a día de hoy. Red Hat y Arch Linux, por ejemplo. Esto incluye derivadas: Fedora, Manjaro, EndeavourOS…
Sin embargo, en el caso de Debian, el nombre de este grupo es sudo
. Esto es importante porque también afecta a todas las distribuciones que emanan de Debian. Así, distribuciones como Ubuntu o Linux Mint también usan sudo
como nombre de este grupo.
Una vez identifiques el nombre del grupo, deberás agregar al usuario que quieras dar permiso de superusuario a este grupo. En el caso de las distros que tengan un script groupadd
, podrías usar ese script. Sin embargo, por lo general se da por hecho que el programa alternativo usermod
es casi universal y que permite agregar a un usuario a un grupo con la siguiente invocación de terminal:
sudo usermod -aG grupo usuario
No te olvides de poner los flags -aG
. El primero sirve para agregar grupos en vez de sustituirlo. Más te vale no olvidar ponerlo, o podrías borrar los grupos a los que pertenezca la cuenta en este momento. El segundo parámetro sirve para especificar precisamente esos grupos. grupo
será wheel
o sudo
según el tipo de distribución que uses, y usuario
es el nombre de la cuenta que quieres agregar.
Por ejemplo, para meter a julian
al grupo de administradores en Debian, usaríamos:
sudo usermod -aG sudo julian
Y para agregar a laura
al grupo de administradores de Fedora, usaríamos:
sudo usermod -aG wheel laura
Para los casos más exagerados: modificar manualmente el archivo sudoers
El archivo sudoers guarda la configuración de sudo. Es importante modificar este archivo utilizando el comando visudo
, para que tras editarlo se valide. La razón de esto es que si el archivo /etc/sudoers
tiene errores, es posible que sudo deje de funcionar. visudo
se ocupará de avisarte si está mal configurado antes de cerrar sesión, potencialmente bloqueando el sistema.
Para modificar este archivo, generalmente basta con escribir lo siguiente en una terminal para abrir el archivo con tu editor por defecto en estos casos (nano, vim…):
sudo visudo
La forma más rápida de agregar una cuenta a este archivo es incorporando una línea que contenga lo siguiente:
[usuario] ALL=(ALL:ALL) ALL
La razón por la que hay que escribir tantas veces la palabra ALL
es compleja de contar ahora y no viene al caso, pero lo podría dejar para el futuro. También puede que aprendas algo al respecto si miras el manpage que define este archivo, con man 5 sudoers
.
Por ejemplo, para agregar manualmente a julian
como sudoer, podrás agregar lo siguiente a tu archivo de configuración:
julian ALL=(ALL:ALL) ALL
Sin embargo, en cualquier caso, generalmente es más flexible si agregas todo un grupo de usuarios y luego usas usermod
para agregar y quitar personas de un grupo.
Para permitir a todo un grupo utilizar sudo
, puedes usar un formato parecido, pero poniendo un símbolo de porcentaje como prefijo. Es decir, algo como esto:
%[grupo] ALL=(ALL:ALL) ALL
Es raro que no esté, pero debería haber una línea en tu archivo de configuración que tenga este formato:
%sudo ALL=(ALL:ALL) ALL
Esta es la línea que permite a cualquier cuenta que forme parte del grupo sudo
ejecutar cualquier comando del sistema como superusuario.
¿Grupos o edición manual?
Sobre qué es mejor, diría que el grupo. Es más flexible, no te obliga a editar el archivo sudoers manualmente, que siempre trae riesgos, y es más rápido. Además, un grupo te permite hacer cosas como dar permisos para leer o escribir en archivos, lo que también permite a esa cuenta poder conceder o restringir el acceso a logs y otros archivos relacionados.
Sin embargo, existen algunas situaciones donde puede venir bien editar manualmente el archivo sudoers
. Este archivo es realmente complejo y puede usarse para permitir cosas como limitar qué comandos puede ejecutar una cuenta mediante sudo
, e incluso permitir que una cuenta que no sea administradora pueda ejecutar algunos comandos concretos. Esto tiene casos de usos específicos, como permitir que una cuenta pueda ejecutar ciertos comandos sin darle acceso global a toda la máquina.