sirve sep que para examples python uid

sep - os.system python examples



¿Cuál es la diferencia entre os.getuid() y os.geteuid()? (2)

La documentación para os.getuid() dice:

Devuelve la identificación de usuario del proceso actual.

Y de os.geteuid() dice:

Devuelve la identificación de usuario efectiva del proceso actual.

Entonces, ¿cuál es la diferencia entre la identificación de usuario y la identificación de usuario efectiva ?

Para mí ambos funcionan igual (tanto en 2.xy 3.x) . Lo estoy usando para comprobar si el script se está ejecutando como root.


La función os.getuid() devuelve el ID de un usuario que ejecuta su programa. La función os.geteuid() de un usuario de la que su programa usa permisos. En la mayoría de los casos esto será lo mismo. Un caso bien conocido cuando estos valores serán diferentes es cuando se establece setuid bit para el archivo ejecutable de su programa, y ​​el usuario que ejecuta su programa es diferente del ejecutable del programa que posee el usuario. En este caso, os.getuid() devolverá el ID del usuario que ejecuta el programa, mientras que os.geteuid() devolverá el ID del usuario que posee el ejecutable del programa.


Para comprender en qué se diferencian os.getuid y os.geteuid , debe comprender que no son funciones específicas de Python (aparte del prefijo del módulo os ). Esas funciones están envolviendo las llamadas al sistema getuid y geteuid que son provistas esencialmente por todos los sistemas operativos tipo Unix.

Por lo tanto, en lugar de consultar los documentos de Python (que probablemente no brinden muchos detalles), debería consultar los documentos de su sistema operativo. Here está la documentación relevante para Linux, por ejemplo. Wikipedia también tiene un buen artículo sobre las ID de usuario de Unix .

La diferencia entre el UID normal y el UID efectivo es que solo se verifica el EUID cuando hace algo que requiere un acceso especial (como leer o escribir un archivo o hacer ciertas llamadas al sistema). El UID indica el usuario real que está realizando la acción, pero (generalmente) no se tiene en cuenta al examinar los permisos. En los programas normales serán los mismos. Algunos programas cambian su EUID para agregar o restar de las acciones que pueden tomar. Un número más pequeño también cambia su UID, para efectivamente "convertirse" en otro usuario.

Aquí hay un ejemplo de un programa que cambia su EUID: el programa passwd (que se usa para cambiar su contraseña) debe escribir en el archivo de contraseña del sistema, que es propiedad del usuario root. Los usuarios normales no pueden escribir en ese archivo, ya que si pudieran, también podrían cambiar la contraseña de todos los demás. Para resolver esto, el programa passwd tiene un bit establecido en sus permisos de archivo (conocido como setuid bit ) que le indica al sistema operativo que debe ejecutarse con el EUID del propietario del programa (por ejemplo, root ) incluso cuando es iniciado por otro usuario. El programa passwd vería entonces su UID como usuario de lanzamiento y su EUID como root. Escribir en el archivo de contraseñas del sistema requiere que EUID tenga privilegios. El UID también es útil, ya que passwd necesita saber para qué usuario está cambiando la contraseña.

Hay algunos otros casos en los que el UID y el EUID no coinciden, pero no son demasiado comunes. Por ejemplo, un servidor de archivos que se ejecuta como superusuario puede cambiar su EUID para que coincida con un usuario específico que solicita algunas manipulaciones de archivos. El uso del EUID del usuario permite que el servidor evite acceder a cosas que el usuario no puede tocar.