Diferencia entre usuario sudo y usuario root [cerrado]

21

El /etc/sudoersarchivo enumera qué usuarios pueden hacer qué con el sudocomando

El usuario root crea y modifica el /etc/sudoersarchivo.

Este concepto me es difícil de entender.

Si todos los usuarios que tienen privilegios de sudo pertenecen al sudoersgrupo, todos pueden convertirse en root al dar el sudo sucomando.

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.

rancho
fuente
44
Creo que necesita ampliar en qué parte es difícil de entender.
garethTheRed
¿Quién es usuario root? Esta pregunta es difícil para mí entender. Porque los usuarios de humn solo pueden pertenecer al grupo de sudoers
rancho
@rancho actualiza la pregunta, por favor
peterph
Respuesta simple a su pregunta subyacente (basada en los comentarios sobre la respuesta): es cierto que la diferencia entre rootacceso y sudoderechos se vuelve irrelevante SI permite sudo suque se ejecute. Sin embargo, no tienes que permitir eso. Puede permitir solo un conjunto específico de comandos, por ejemplo, otorgue sudoacceso a su administrador de sistemas junior solo para comandos de respaldo específicos.
Comodín el

Respuestas:

29

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 sucomando ("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/hostsle 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 sute permitiría simplemente convertirte en root. El resultado es el mismo que si hubiera iniciado sesión como root o haya ejecutado el sucomando, 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 loginen 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/passwdarchivo 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 mysqlcomando, o usar sudodonde el archivo sudoers le otorgará privilegios mysql para esos comandos específicos.

Edward Falk
fuente
1
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.
Edward Falk
1
"Bajo SELinux (Security Enhanced Linux), hay efectivamente una lista de control de acceso que determina quién puede hacer qué, e incluso el root no puede superar esas restricciones". - Si incluso la raíz no puede pasar esas restricciones, ¿quién crea esas restricciones en primer lugar?
rancho
1
Para aclarar esto: "Efectivamente, sus administradores son root, además de todos los que figuran en el archivo sudoers". las entradas de sudoers no tienen que significar acceso completo a la raíz o incluso a nivel de raíz; Podría otorgarle a Sven la capacidad de reiniciar un agente de supervisión que se ejecute como monitorizador.
Jeff Schaller
1
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 hacerlo sudo.
Martin Andersson
2
Respuesta anterior y esto es pedantería, pero sues una abreviatura de "usuario sustituto"; sudoes, por lo tanto, "usuario sustituto". Puede usar supara iniciar sesión como otro usuario, no solo root. Y puede usar sudopara ejecutar comandos como otro usuario.
josaphatv