¿Qué mecanismo impide que cualquier usuario acceda a los archivos de otro usuario a través de la raíz?

¿Qué mecanismo impide que cualquier usuario acceda a los archivos de otro usuario a través de la raíz?

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 sudoy su. Con sudo, no te conviertes en otro usuario (incluido root). sudotiene 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:

sulo cambia a la cuenta de usuario raíz y requiere la contraseña de la cuenta raíz. sudoejecuta 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

tecmint.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á sudodefiniciones que la permitan.

Todo esto tiene sentido hasta que miras algo comoeste enlace, que es un tutorial para usar sudo -Vy 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 sudoy sues el mecanismo utilizado para autenticar. El suusuario debe conocer la rootcontraseña (que debe ser un secreto muy bien guardado), mientras que sudogeneralmente está configurado para solicitar la propia contraseña del usuario. Para evitar que todos los usuarios causen caos, sudoafortunadamente los privilegios descargados por el comando se pueden configurar usando el /etc/sudoersarchivo.

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/sudoersarchivo. Es decir, sonpermitidousar sudo. Armados con esto, usan sudopara obtener privilegios temporalmente root(que es el valor predeterminado cuando no se proporciona ningún nombre de usuario) y para rootiniciar otro shell ( su -). Ahora tienen rootacceso sin saber rootla 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 sudopara ejecutar todos los comandos. Eliminarlos de este grupo significará que no podrán utilizar sudonada de forma predeterminada.

La línea /etc/sudoersque 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 sudopara brindarle un control más detallado sobre quién puede usar sudoy 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 wheelgrupo).

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 sudoy puede detenerse sudo su -mientras permite otros comandos que no le dan al usuario rootacceso al shell o acceso a comandos que pueden cambiar los archivos de otros usuarios. Debe considerar seriamente a quién permite su uso sudoy en qué nivel.

ADVERTENCIA:Utilice siempre el visudocomando para editar el sudoersarchivo, 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 sudoeditar cualquier error. Esto es especialmente cierto en Debian/Ubuntu y variantes donde la rootcuenta está deshabilitada de forma predeterminada.

Respuesta2

Hay dos comandos relacionados con los privilegios de root sudoy su. Con sudo, no te conviertes en otro usuario (incluido root). sudotiene 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 suy sudoes que este último generalmente está configurado para solicitar su propia contraseña en lugar de la contraseña del usuario objetivo, y eso sudoes más flexible. El objetivo de ambos es permitirte convertirte en un usuario más. supuede ejecutar un comando específico y sudopuede 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 sudocomparació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/sudoersestén configuradas para permitirte hacerlo. sudoaunque 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á sudodefiniciones que la permitan.

Todo esto tiene sentido hasta que veas algo como [este enlace][1], que es un tutorial para usar sudo -Vy luego sudo 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 -Vimprime la versión de su sudobinario y sudo -vvalida las credenciales almacenadas en caché y son irrelevantes para la parte posterior.

En segundo lugar, sudo sues algo bastante tonto porque ya existe una sudoopció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/sudoersuna 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.

información relacionada