
En un sistema multiusuario, ¿qué protege contra el acceso de un usuario a los archivos de otros usuarios a través de la raíz? Como contexto, la pregunta se basa en mi entendimiento de la siguiente manera:
Hay dos comandos relacionados con los privilegios de root sudo
y su
. Con sudo
, no te conviertes en otro usuario (incluido root). sudo
tiene una lista predefinida de comandos aprobados que ejecuta en su nombre. Como no se convierte en root ni en otro usuario, simplemente se autentica con su propia contraseña.
Con su
, realmente te conviertes en root u otro usuario. Si desea convertirse en usuario Bob, necesita la contraseña de Bob. Para convertirse en root, necesita la contraseña de root (que se definiría en un sistema multiusuario).
árbitros:howtogeek.com:
su
lo cambia a la cuenta de usuario raíz y requiere la contraseña de la cuenta raíz.sudo
ejecuta un único comando con privilegios de root: no cambia al usuario root.
y
Si ejecuta el comando su bob, se le pedirá que ingrese la contraseña de Bob y el shell cambiará a la cuenta de usuario de Bob; Descripción similar encomputadoraesperanza.com
'sudo' es un setuid binario raíz, que ejecuta comandos raíz en nombre de los usuarios autorizados.
Si te conviertes en root, tienes acceso a todo. Cualquiera que no esté autorizado a acceder a la cuenta de otro usuario no recibirá la contraseña de root y no tendrá sudo
definiciones que la permitan.
Todo esto tiene sentido hasta que miras algo comoeste enlace, que es un tutorial para usar sudo -V
y luego sudo su -
convertirse en root usando solo su propia contraseña.
Si cualquier usuario puede convertirse en root sin la contraseña de root, ¿qué mecanismo protege los archivos del usuario del acceso no autorizado?
Respuesta1
ElimportanteLa diferencia entre sudo
y su
es el mecanismo utilizado para autenticar. El su
usuario debe conocer la root
contraseña (que debe ser un secreto muy bien guardado), mientras que sudo
generalmente está configurado para solicitar la propia contraseña del usuario. Para evitar que todos los usuarios causen caos, sudo
afortunadamente los privilegios descargados por el comando se pueden configurar usando el /etc/sudoers
archivo.
Ambos comandos ejecutan un comando como otro usuario, con bastante frecuencia root
.
sudo su -
funciona en el ejemplo que dio porque el usuario (o un grupo del que el usuario es miembro) está configurado en el /etc/sudoers
archivo. Es decir, sonpermitidousar sudo
. Armados con esto, usan sudo
para obtener privilegios temporalmente root
(que es el valor predeterminado cuando no se proporciona ningún nombre de usuario) y para root
iniciar otro shell ( su -
). Ahora tienen root
acceso sin saber root
la contraseña.
Por el contrario, si no permite que el usuario lo use sudo
, no podrá hacerlo sudo su -
.
Las distribuciones generalmente tienen un grupo (a menudo llamado wheel
) cuyos miembros pueden usar sudo
para ejecutar todos los comandos. Eliminarlos de este grupo significará que no podrán utilizar sudo
nada de forma predeterminada.
La línea /etc/sudoers
que hace esto es:
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
Si bien eliminar usuarios de este grupo haría que su sistema sea más seguro, también haría que usted (u otros administradores del sistema) deba realizar más tareas administrativas en el sistema en nombre de sus usuarios.
Un compromiso más sensato se configuraría sudo
para brindarle un control más detallado sobre quién puede usar sudo
y quién no, junto con qué comandos pueden usar (en lugar del valor predeterminado detodocomandos). Por ejemplo,
## Allows members of the users group to mount and unmount the
## cdrom as root
%users ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom
(solo es útil con la línea %wheel anterior comentada o sin usuarios en el wheel
grupo).
Presumiblemente, las distribuciones no vienen con esta configuración más detallada como estándar, ya que es imposible pronosticar cuáles son los requisitos del administrador para sus usuarios y su sistema.
La conclusión es: conozca los detalles sudo
y puede detenerse sudo su -
mientras permite otros comandos que no le dan al usuario root
acceso al shell o acceso a comandos que pueden cambiar los archivos de otros usuarios. Debe considerar seriamente a quién permite su uso sudo
y en qué nivel.
ADVERTENCIA:Utilice siempre el visudo
comando para editar el sudoers
archivo, ya que verifica sus ediciones por usted e intenta salvarlo de la situación embarazosa en la que un archivo mal configurado (debido a un error de sintaxis) le impide sudo
editar cualquier error. Esto es especialmente cierto en Debian/Ubuntu y variantes donde la root
cuenta está deshabilitada de forma predeterminada.
Respuesta2
Hay dos comandos relacionados con los privilegios de root
sudo
ysu
. Consudo
, no te conviertes en otro usuario (incluido root).sudo
tiene una lista predefinida de comandos aprobados que ejecuta en su nombre (esto soluciona lo que pregunté en el comentario sobre cómo otorga privilegios selectivos a los usuarios seleccionados). Como no se convierte en root ni en otro usuario, simplemente se autentica con su propia contraseña.
Esto es incorrecto. La diferencia más obvia entre su
y sudo
es que este último generalmente está configurado para solicitar su propia contraseña en lugar de la contraseña del usuario objetivo, y eso sudo
es más flexible. El objetivo de ambos es permitirte convertirte en un usuario más. su
puede ejecutar un comando específico y sudo
puede iniciar un shell interactivo, solo que tienen diferentes modos predeterminados.
Lo más común es que tengas un grupo, llamado convencionalmentewheel
, que puede ejecutar cualquier comando como cualquier usuario. Sin embargo, a veces desea restringir a un usuario para que solo ejecute un comando específico como usuario específico, y esto es lo que es más flexible en sudo
comparación con su
.
Con
su
, realmente te conviertes en root u otro usuario. Si desea convertirse en usuario Bob, necesita la contraseña de Bob. Para convertirse en root, necesita la contraseña de root (que se definiría en un sistema multiusuario).
También puedes convertirte en cualquier usuario sudo
, con tu propia contraseña, siempre que las reglas /etc/sudoers
estén configuradas para permitirte hacerlo. sudo
aunque le permite restringir el comando que un usuario puede ejecutar, sí, y le impide tener que revelar las contraseñas de usuarios específicos, o incluso no tener ninguna contraseña para usuarios específicos que no permiten inicios de sesión regulares.
Si te conviertes en root, tienes acceso a todo. Cualquiera que no esté autorizado a acceder a la cuenta de otro usuario no recibirá la contraseña de root y no tendrá
sudo
definiciones que la permitan.
Todo esto tiene sentido hasta que veas algo como [este enlace][1], que es un tutorial para usar
sudo -V
y luegosudo su -
convertirte en root usando solo tu propia contraseña.
Si cualquier usuario puede convertirse en root sin la contraseña de root, ¿qué mecanismo protege los archivos del usuario del acceso no autorizado? [1]:http://home.ubalt.edu/abento/linux/terminal/sudo.html
En primer lugar, sudo -V
imprime la versión de su sudo
binario y sudo -v
valida las credenciales almacenadas en caché y son irrelevantes para la parte posterior.
En segundo lugar, sudo su
es algo bastante tonto porque ya existe una sudo
opción para iniciar un shell interactivo como el usuario especificado ( sudo -i
), y ejecutar una herramienta de autorización de privilegios ( sudo
) para ejecutar otra herramienta de autorización de privilegios ( su
) es realmente tonto.
En tercer lugar, "cualquier usuario" definitivamente deberíaNOpoder convertirse en raíz. Si pueden, todo su sistema no es seguro. el usuario root es todopoderoso y puede hacer cualquier cosa, y ejecutar un comando como root es solo uno de los usos de sudo
, es una herramienta de autorización general que puede permitir que un usuario específico ejecute un comando específico como un usuario específico.
Respuesta3
La respuesta corta es que no puedes.
Si permite que alguien (por ejemplo, simth) entre en el grupo de sudoer, puede emitir un usuario, sudo su -
luego convertirse en root y luego otro usuario (por ejemplo, wesson). Esta es una forma alternativa de darle la contraseña de root a Simth. Sin embargo, él (smith) puede cambiar la contraseña raíz.
Observa también que
1) debes especificar en /etc/sudoers
una línea como
%sudo ALL=(ALL:ALL) ALL
2) smith (en el ejemplo anterior) debe estar en el grupo sudo.
esta no es una configuración predeterminada.
Debes confiar completamente en alguien (smith) para dar sudo su -
acceso.
Respuesta4
Ninguna de estas respuestas aborda la pregunta de ninguna manera. La respuesta correcta es que los permisos de archivos impiden que cualquier usuario acceda al archivo de otro usuario, incluido el root. Sí, hay formas de evitar que root lea y escriba en sus archivos (o directorios, que son archivos).
Por ejemplo, un directorio puede contener las siguientes entradas:
drwxrwxr-x 13 raíz raíz 8192 17 de enero 15:38 bash-5.2.15 drwxr-xr-x 15 raíz raíz 4096 20 de enero 08:13 bitcoin drwxr-xr-x 8 raíz raíz 4096 6 de diciembre 16:37 boost_1_84_0 -rwx- ----- 1 raíz raíz 13210 19 de enero 17:44 doit_configure -rwx------ 1 raíz raíz 7491 17 de octubre 11:44 doit_configure_bash
Los directorios comienzan con una 'd'. Los archivos normales comienzan con un '-'. Luego están los permisos para el archivo/directorio, como rwxrwxrwx dividido en tres secciones: propietario, grupo y otros. r=lectura, w=escritura, x=permiso de ejecución, respectivamente.
Las utilidades de comando 'su' y 'sudo' ayudan con el acceso, pero no son la respuesta real a la pregunta original.