Estoy tratando de entender cómo funcionan los permisos de usuario en Linux. El núcleo arranca y comienza init
como root, ¿verdad? Init luego ejecuta scripts de inicio y ejecuta getty
( agetty
), nuevamente como root. Agetty solo lee el nombre de usuario y se ejecuta login
, aún como root, creo. Nada interesante todavía. Pero, ¿qué hace el inicio de sesión ? No pude encontrar nada mejor que "intenta iniciar sesión". Supongamos que el inicio de sesión encuentra que la contraseña coincide (e intentamos iniciar sesión como usuario habitual), ¿cómo cambia la identificación del usuario? Pensé que debería haber una llamada al sistema para eso, pero no pude encontrarlo (¿tal vez solo estoy ciego?)
Además, sobre su
. su
tiene el bit 'setuid' establecido, de modo que cuando lo ejecutamos, siempre se ejecuta como root. Pero cuando le pedimos que inicie sesión como usuario habitual, nuevamente necesita cambiar la identificación del usuario. ¿Entiendo correctamente que ocurre la misma "magia" su
y login
cuándo necesitan cambiar de usuario? Si es así, ¿por qué tener dos programas diferentes? ¿Hay algún tipo de negocio serio al ejecutar el inicio de sesión?
fuente