GNU/Linux >> Tutoriales Linux >  >> Linux

¿Diferencia entre el usuario de Sudo y el usuario raíz?

Cerrado . Esta pregunta necesita detalles o claridad. Actualmente no está aceptando respuestas.

¿Quieres mejorar esta pregunta? Agrega detalles y aclara el problema editando esta publicación.

Cerrado hace 4 años.


Mejorar esta pregunta

El /etc/sudoers El archivo enumera qué usuarios pueden hacer qué con el sudo comando

El usuario root crea y modifica el /etc/sudoers archivo.

Este concepto es difícil de entender para mí.

Si todos los usuarios que tienen privilegios de sudo pertenecen a sudoers grupo, entonces todos ellos pueden convertirse en root dando 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 sudoers?

Por favor, explícamelo.

Respuesta aceptada:

Resumen ejecutivo:“raíz” 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 del 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 un aviso de inicio de sesión² de alguna manera, o con 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 que su identificación de usuario esté en el archivo sudoers, lo que le otorga la autorización necesaria.

Entonces, p. sudo vi /etc/hosts le permitiría editar el archivo de hosts como si estuviera ejecutando como root. Ni siquiera necesita la contraseña raíz, solo su propia contraseña de inicio de sesión.

Y por supuesto, sudo su le permitiría simplemente convertirse en root. El resultado es el mismo que si hubiera iniciado sesión como root o ejecutado el su 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é puede hacer con él.

El archivo sudoers es lo que le brinda múltiples administradores⁴. Efectivamente, sus administradores son raíz, 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 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 trabajé, con una enorme granja de servidores, solo un número muy, muy pequeño de personas conocía las contraseñas de root. 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.

Relacionado:¿Escapar caracteres desconocidos de la cadena para -exec?

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

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 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 en caso de que un usuario malicioso 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 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 serie, 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 otorgar acceso de 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, 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 "raíz" indistintamente, pero hay otros tipos de administradores. A menudo se denominan "cuentas de funciones", lo que quiere decir que estas cuentas no pertenecen a humanos reales, sino que existen para desempeñar una función específica en el sistema. Si echas un vistazo a /etc/passwd archivo en su sistema, encontrará docenas y docenas de tales cuentas.

Por ejemplo, si se instaló mysql 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. Solo 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 solo para mysql.

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


Linux
  1. ¿Cuál es la diferencia entre Sudo Su y Sudo Su?

  2. ¿Diferencia entre Eot y Eof?

  3. ¿Diferencia entre Snat y Masquerade?

  4. diferencia de linux entre sudo crontab -e y simplemente crontab -e

  5. ¿Qué es diferente entre root y sudo?

La diferencia entre sudo y su explicada

Aprenda la diferencia entre los comandos "su" y "su -" en Linux

Comprender la diferencia entre los comandos sudo y su en Linux

¿Diferencia entre $HOME y '~' (tilde)?

diferencia entre cgroups y espacios de nombres

¿Cuál es la diferencia entre el espacio de usuario y el espacio del kernel?