Diferencia entre usuario sudo y usuario root

Diferencia entre usuario sudo y usuario root

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

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

Este concepto me resulta difícil de entender.

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

Entonces, ¿quién es el usuario root real y cómo controla los poderes de los usuarios en el grupo sudoers?

Por favor, explícamelo.

Respuesta1

Resumen ejecutivo: "root" es el nombre real de la cuenta de administrador. "sudo" es un comando que permite a los usuarios normales realizar tareas administrativas. "Sudo" no es un usuario.


Respuesta larga:

"root" (también conocido como "superusuario") es el nombre de la cuenta del administrador del sistema. El origen del nombre es un poco arcaico, pero eso no importa.

El usuario raíz tiene ID 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 un mensaje de inicio de sesión² de alguna manera o con el sucomando ("su" es la abreviatura de usuario sustituto).³

Esto es un poco complicado y tampoco permite otorgar a los usuarios poderes administrativos parciales. Entonces se inventó el comando "sudo" (abreviatura de "usuario sustituto hacer").

El comando "sudo" le permite ejecutar comandos con privilegios de superusuario siempre que su identificación de usuario esté en el archivo sudoers, lo que le brinda la autorización necesaria.

Entonces, por ejemplo, sudo vi /etc/hostsle permitiría editar el archivo de hosts como si lo estuviera ejecutando como root. Ni siquiera necesita la contraseña de root, sólo su propia contraseña de inicio de sesión.

Y, por supuesto, sudo sule permitiría simplemente convertirse en root. El resultado es el mismo que si hubiera iniciado sesión como root o ejecutado el sucomando, excepto que no necesita saber 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 organizaciones donde otra persona administra su computadora por usted, es bastante común no saber la contraseña raíz de su propia computadora; siempre que esté en el archivo sudoers, no importa.

En una empresa para la que trabajaba, con una enorme granja de servidores, sólo un número muy, muy pequeño de personas conocía las contraseñas de root. En cambio, había una base de datos sobre 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 su autorización expirara.


¹ Una cosa más: las versiones modernas de Unix ahora pueden restringir incluso lo que puede hacer el usuario root.

BajoSELinux(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 AppleProtección de la integridad del sistema(SIP) (también conocido como "sin raíz"), ciertos archivos y directorios están bloqueados para que solo las aplicaciones en la lista blanca adecuada puedan acceder a ellos.

Estos sistemas existen para proteger un sistema en caso de que un usuario malintencionado logre obtener acceso de root. (O en algunos casos, para evitar que los usuarios hagan jailbreak a sus dispositivos integrados). Por razones obvias, es extremadamente difícil evitar estas restricciones, incluso con acceso de root.

² El mensaje "iniciar sesión: " es otra pieza arcaica de la historia de Unix, que se remonta a cuando todos usábamos terminales ascii en líneas serie, en lugar de sistemas de ventanas. Aún puede obtener un mensaje de "iniciar 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 serie, aún puede configurarla para permitir inicios de sesión en ellos).

³ También es posible otorgar acceso root a programas individuales. Estos programas pueden hacer cualquier cosa que pueda hacer un usuario con acceso root, incluso cuando los ejecuta un usuario normal. Por lo general, se limitan a tareas específicas. Por ejemplo, elcrontabEl programa tiene privilegios de root para poder 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 existen otros tipos de administradores. A menudo se les llama "cuentas de roles", es decir, estas cuentas no pertenecen a humanos reales, sino que existen para desempeñar algún rol específico en el sistema. Si echas un vistazo al /etc/passwdarchivo de tu sistema, encontrarás docenas y docenas de dichas cuentas.

Por ejemplo, si mysql estuviera instalado en su sistema, habría un usuario "mysql" y todos los archivos de base de datos, archivos de configuración, etc., serían propiedad de ese usuario. Sólo ese usuario (y root, por supuesto) 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 sólo para mysql.

Si necesitara realizar tareas administrativas de la base de datos, se convertiría en "mysql" con el su mysqlcomando o usaría sudoel archivo sudoers donde le otorgaría privilegios mysql para esos comandos específicos.

información relacionada