El /etc/sudoers
archivo enumera qué usuarios pueden hacer qué con el sudo
comando
El usuario root crea y modifica el /etc/sudoers
archivo.
Este concepto me es difícil de entender.
Si todos los usuarios que tienen privilegios de sudo pertenecen al sudoers
grupo, todos pueden convertirse en root al dar el sudo su
comando.
Entonces, ¿quién es el usuario raíz real y cómo controla los poderes de los usuarios en el grupo de sudoers?
Por favor, explícamelo.
permissions
sudo
users
root
access-control
rancho
fuente
fuente
root
acceso ysudo
derechos se vuelve irrelevante SI permitesudo su
que se ejecute. Sin embargo, no tienes que permitir eso. Puede permitir solo un conjunto específico de comandos, por ejemplo, otorguesudo
acceso a su administrador de sistemas junior solo para comandos de respaldo específicos.Respuestas:
Resumen ejecutivo: "root" es el nombre real de la cuenta de administrador. "sudo" es un comando que permite a los usuarios comunes realizar tareas administrativas. "Sudo" no es un usuario.
Respuesta larga:
"root" (también conocido como "superusuario") es el nombre de la cuenta de administrador del sistema. Los orígenes del nombre son un poco arcaicos, pero eso no importa.
El usuario raíz tiene una identificación de usuario 0 y nominalmente tiene privilegios ilimitados. Root puede acceder a cualquier archivo, ejecutar cualquier programa, ejecutar cualquier llamada al sistema y modificar cualquier configuración. (Pero ver más abajo¹).
Antes de la invención del comando "sudo", si deseaba realizar tareas administrativas, tenía que iniciar sesión como root, ya sea obteniendo una solicitud de inicio de sesión² de alguna manera, o con el
su
comando ("su" es la abreviatura de usuario sustituto) ³Eso es un poco complicado, y tampoco le permite otorgar a los usuarios poderes administrativos parciales. Entonces se inventó el comando "sudo" (abreviatura de "usuario sustituto do").
El comando "sudo" le permite ejecutar comandos con privilegios de superusuario siempre y cuando su identificación de usuario esté en el archivo sudoers, otorgándole la autorización necesaria.
Entonces, por ejemplo,
sudo vi /etc/hosts
le permitiría editar el archivo de hosts como si estuviera ejecutando como root. Ni siquiera necesita la contraseña de root, solo su propia contraseña de inicio de sesión.Y, por supuesto,
sudo su
te permitiría simplemente convertirte en root. El resultado es el mismo que si hubiera iniciado sesión como root o haya ejecutado elsu
comando, excepto que no necesita conocer la contraseña de root, pero sí debe estar en el archivo sudoers.El archivo sudoers determina quién puede usar el comando sudo y qué pueden hacer con él.
El archivo sudoers es lo que le brinda múltiples administradores⁴. Efectivamente, sus administradores son root, además de todos los que figuran en el archivo sudoers. Sin el archivo sudoers, el único administrador es root.
De hecho, en las organizaciones en las que alguien más administra su computadora por usted, es bastante común que no conozca la contraseña raíz de su propia computadora, siempre que esté en el archivo sudoers, no importa.
En una empresa para la que trabajé, con una enorme granja de servidores, solo un número muy pequeño de personas conocía las contraseñas raíz. En cambio, había una base de datos de quién podía trabajar en qué servidores. Un proceso automatizado lo agregaría a los archivos sudoers de aquellos servidores a los que estaba autorizado a acceder y lo eliminaría cuando expirara su autorización.
¹ Una cosa más: las versiones modernas de Unix ahora pueden restringir incluso lo que el usuario root puede hacer.
Bajo SELinux (Security Enhanced Linux), existe efectivamente una lista de control de acceso que determina qué programa puede hacer qué, e incluso el root no puede superar esas restricciones.
Bajo el Sistema de Protección de la Integridad del Sistema (SIP) de Apple (también conocido como "sin raíz"), ciertos archivos y directorios están bloqueados para que solo las aplicaciones en la lista blanca apropiada puedan acceder a ellos.
Estos sistemas existen para proteger un sistema del caso en que un usuario malintencionado logra obtener acceso de root. (O, en algunos casos, para evitar que los usuarios rompan sus dispositivos incrustados). Por razones obvias, es extremadamente difícil eludir estas restricciones, incluso con acceso de root.
² El mensaje "login:" es otra pieza arcaica de la historia de Unix, que se remonta a cuando todos usábamos terminales ascii en líneas seriales, en lugar de sistemas de ventanas. Todavía puede obtener un mensaje de "inicio de sesión:" simplemente escribiendo
login
en cualquier ventana de terminal o abriendo una conexión ssh (o telnet o rsh) a su computadora desde otro lugar. Puede iniciar sesión como otro usuario desde allí si lo desea. (Y si su computadora tiene puertos seriales, aún puede configurarla para permitir inicios de sesión en ellos).³ También es posible que los programas individuales tengan acceso a la raíz. Estos programas pueden hacer cualquier cosa que pueda hacer un usuario con acceso de root, incluso cuando lo ejecuta un usuario común. Estos suelen estar limitados a tareas específicas. Por ejemplo, el programa crontab tiene privilegios de root para que pueda editar las tablas cron. Obviamente, "sudo" tiene privilegios de root para que pueda hacer lo que hace.
⁴ Voy a cubrir un punto más que pasé por alto anteriormente. He estado usando "administrador" y "root" indistintamente, pero hay otros tipos de administradores. A menudo se denominan "cuentas de roles", lo que quiere decir que estas cuentas no pertenecen a humanos reales, sino que existen para desempeñar algún rol específico en el sistema. Si observa el
/etc/passwd
archivo en su sistema, encontrará docenas y docenas de esas cuentas.Por ejemplo, si mysql estaba instalado en su sistema, habría un usuario "mysql", y todos los archivos de la base de datos, los archivos de configuración, etc. serían propiedad de ese usuario. Solo ese usuario tendría los permisos necesarios para acceder a los archivos y ejecutar el servidor mysql. En cierto sentido, ese usuario sería una cuenta de administrador, pero solo para mysql.
Si necesita realizar tareas administrativas de la base de datos, puede convertirse en "mysql" con el
su mysql
comando, o usarsudo
donde el archivo sudoers le otorgará privilegios mysql para esos comandos específicos.fuente
The "sudo" command lets you execute commands with superuser privileges as long as your user id is in the sudoers file [..]
. En mi máquina (Solus OS 3), esto está mal. Mi nombre de usuario no está en el archivo sudoers. y todavía puedo hacerlosudo
.su
es una abreviatura de "usuario sustituto";sudo
es, por lo tanto, "usuario sustituto". Puede usarsu
para iniciar sesión como otro usuario, no soloroot
. Y puede usarsudo
para ejecutar comandos como otro usuario.