Nadie tiene un ✓ todavía, así que preparé una respuesta que tiene todo lo que se me ocurre.
1 Cuando ejecuta un ejecutable, a veces el sistema operativo le negará su permiso. Por ejemplo, ejecutar make install con el prefijo que es una ruta del sistema necesitará sudo, mientras que con el prefijo que es una ruta que no es del sistema no se solicitará sudo. ¿Cómo decide el sistema operativo que ejecutar un ejecutable requeriría más privilegios que los que tiene un usuario, incluso antes de que el programa haga algo?
No, no se hace cuando se inicia un ejecutable. Se realiza cuando el ejecutable intenta hacer algo.
El sistema operativo será comprobar los permisos del sistema de archivos y capacidades (estos no están cubiertos por los permisos del sistema de archivos, e incluyen reducir el nivel agradable, haznodo, un poco de materia red de bajo nivel, matar a otros procesos de arrancar, de tiempo determinados, etc.). Si no tiene los permisos, entonces no puede hacerlo. Raíz tiene un conjunto completo de capacidades, incluyendo CAP_DAC_OVERRIDE (ignorar permisos de ficheros).
2 A veces, no se le negará permiso para ejecutar un programa, pero el programa podrá hacer más cosas si se ejecuta con sudo. Por ejemplo, cuando se ejecuta en algunos du directorio del sistema, solamente con sudo será capaz de acceder a algún directorio. ¿Por qué el sistema operativo no niega el permiso de funcionamiento de un programa de este tipo, o usar notificar se prefiere más privilegio, antes de que el programa puede funcionar?
El sistema operativo no puede saber lo que hará el programa. Por lo que corresponde al programa para comprobar los permisos antes de que comience, y decidir qué hacer. No tiene que hacer esto, sin embargo.
Nota: en android hay un manifiesto, en este la aplicación declara qué privilegios se puede utilizar. El sistema operativo matará cualquier aplicación que intenta utilizar un privilegio que no declara, y el sistema operativo no siempre garantiza que un privilegio puede ser honrado. por ejemplo, el acceso a la red puede no estar disponible.
2 ¿Es cierto que cada vez que las obras de sudo, su trabajo también, y cada vez que trabaja su, sudo también el trabajo? o con su, un usuario puede hacer más que con sudo? ¿Cómo funciona el sistema operativo decidir cuándo obras sudo, y cuando se necesita Do?
sudo
y su
hacer más o menos samething. Algunas diferencias son el manejo de las variables de entorno y otras evitaciones de problemas de seguridad. Sin embargo, son las dos herramientas que le permiten convertirse en otro usuario, y ambos tienen un usuario por defecto de raíz.
su
era la herramienta original, se requiere que introduzca la contraseña del usuario / grupo que se va a cambiar a.
sudo
es más reciente y requiere, de manera predeterminada, que ingrese su propia contraseña, pero puede configurarse para aceptar la contraseña del usuario / grupo al que se está cambiando o no tiene contraseña. También permite mucha configuración, de qué comandos funcionará, para quién y cómo se autenticará con este programa para este usuario en esta máquina. También es sudoedit
parte de esto sudo
y se puede usar para permitir la edición como un usuario diferente y evitar el problema de seguridad de sub-bombardeo de un editor (llamando a exec desde el editor para ejecutar un proceso arbitrario con privilegios escalados).