- Cuando ejecuta un ejecutable, a veces el sistema operativo le negará su permiso. Por ejemplo, ejecutar
make installcon 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? - A veces, ejecutar un programa no se le negará el permiso, pero el programa podrá hacer más cosas si se ejecuta con
sudo. Por ejemplo, cuando se ejecutaduen algún directorio del sistema, solo consudoél podrá acceder a algún directorio. ¿Por qué el sistema operativo no niega el permiso de ejecutar un programa de este tipo, o notifica amigablemente que se prefiere más privilegio, antes de que el programa pueda ejecutarse? - ¿Es cierto que siempre que
sudofuncione,sutambién funcionará, y cuandosufuncione,sudotambién funcionará? o consu, un usuario puede hacer más que consudo? ¿Cómo decide el sistema operativo cuándosudofunciona y cuándosuse necesita?
permissions
sudo
StackExchange para todos
fuente
fuente

Respuestas:
sudousted, lo está ejecutando con el nombre de otro usuario. Si ese usuario es "capaz de hacer más cosas" que su usuario y lasudoconfiguración le permite hacer estas cosas en nombre del otro usuario, entonces sí,sudole permitirá hacer más cosas. Sin embargo, esto no es necesario. Si acaba de virarsudoal comienzo de la línea de comando, en realidad estásudoentrandoroot, por lo que generalmente puede hacer más cosas que un simple mortal.sudo, debe proporcionar su propia contraseña de usuario y luego puede hacer algunas cosas en nombre del usuario objetivo. Para usarlosu, necesita la contraseña del usuario objetivo y, si la tiene, se convierte en ese usuario objetivo en lo que respecta al sistema y puede hacer cualquier cosa que el usuario pueda hacer.Ver también
fuente
chmodsiempre que sea el propietario del archivo oroot.chmod 400 hello && /lib64/ld-linux-x86-64.so.2 ./helloproduce un bonito "¡Hola, mundo!" salida.Para los fines que ha descrito, el sistema operativo no decide si necesita sudo para ejecutar inicialmente el programa. En cambio, después de que el programa comienza a ejecutarse y luego intenta hacer algo que el usuario actual no permite (como escribir un archivo
/usr/binpara instalar un nuevo comando), el sistema operativo impide el acceso al archivo. La acción a tomar en esta condición depende del programa;makedeja de ejecutarse peroducontinuará con el siguiente archivo / directorio después de imprimir un mensaje.Los comandos
suysudoson dos formas diferentes de ejecutar un programa con privilegios de root. Pueden diferir en detalles menores, como el contenido del entorno al iniciar el nuevo programa, según las opciones utilizadas. El sistema operativo no necesita decidir cuándo funcionará uno u otro.fuente
suysudoson programas privilegiados.sucambia (después de una autenticación exitosa) la identificación real y efectiva del usuario y del grupo a la del usuario al que sesudirige. Por lo tanto,sues similar alogin. Tenga en cuenta quesuse puede usar para cambiar a cualquier usuario, no solo root.sudotambién cambia los identificadores de usuario y grupo reales y efectivos. Hasta este puntosuysudoson similares (pero no relacionados), más allá de eso son muy diferentes.Con
su, debe conocer la contraseña del objetivo y, una vez que se haya autenticado, puede hacer lo que quiera como ese usuario. El uso desupuede restringirse mediante la configuraciónSU_WHEEL_ONLYde/etc/login.defs. Si está configurado, solo los usuarios del grupowheelpueden usarlosu; de lo contrario, no está restringido. Aparte de eso,sues todo o nada.sudoes completamente diferente con respecto a eso. Consudousted puede definir políticas bastante complejas/etc/sudoerssobre lo que el sudoer (el usuario que llamasudo) puede hacer. Por ejemplo, puede definir políticas donde ciertos usuarios pueden ejecutar solo ciertos programas con ciertos privilegios, mientras que otros usuarios pueden ejecutar otros programas con otros privilegios.Una de las características más llamativas
sudoes que puede configurarlo de modo que un usuario tenga que autenticarse con su propia contraseña (en lugar de la del objetivo). Por lo tanto, sesudoha vuelto muy popular entre los administradores, ya que permite autorizar a los usuarios a realizar solo operaciones privilegiadas definidas sin tener que acceder a la contraseña del superusuario, además de obtener cierto grado de responsabilidad.fuente
tl; dr El acceso lo determina el usuario que ejecuta la aplicación y
sudoejecuta las aplicaciones como un usuario diferente.Versión completa:
No lo sabe UNIX gestiona los permisos no a nivel de aplicación sino a nivel de sistema de archivos: se otorgan permisos para que los usuarios accedan a archivos específicos. Las aplicaciones se ejecutan en nombre del usuario: cada proceso en ejecución tiene un usuario asociado. Ese usuario se utiliza para determinar los permisos para esa aplicación. Sudo funciona ejecutando aplicaciones en nombre de otro usuario (con permisos asociados con ese otro usuario), es decir
root, el superusuario.En cuanto a sus ejemplos:
Si el usuario tiene acceso de escritura a un directorio en particular, puede
make installingresar a ese directorio. De lo contrario, pueden haberloroothecho mediante el usosudo.Si no puede acceder a los archivos en un directorio,
duejecutarlo tampoco puede acceder a él.rootpuede acceder a prácticamente todos los archivos, por lo quesudo du(duejecutar en nombre deroot) también puede acceder a ellos.Si y no. Sí, si el programa se ejecuta realmente , debería comportarse igual bajo ambos
sudoysu. Sin embargo,sudoproporciona permite un control más detallado de quién puede ejecutar qué mediante un conjunto de reglas almacenadas en el/etc/sudoersarchivo.sues más simple: si conoce la contraseña del usuario objetivo, puede ejecutar programas en nombre de ese usuario.Última nota: cómo la aplicación maneja la denegación de acceso (si aborta o ignora o advierte al usuario) depende de la aplicación.
fuente
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?
sudoysuhacer 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.suera la herramienta original, se requiere que introduzca la contraseña del usuario / grupo que se va a cambiar a.sudoes 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 essudoeditparte de estosudoy 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).fuente