Pregunta

¿Cómo puedo comprobar admin-privilegios de mi guión durante el rodaje?

¿Fue útil?

Solución

En Unix se puede comprobar si usted es la raíz mediante el OS. función getuid:

os.getuid() == 0 and "root" or "not root"

Otros consejos

El concepto de "admin-privilegios" en nuestro día de control de privilegios de grano fino se está volviendo difícil de definir. Si está ejecutando en UNIX con el modelo "tradicional" de control de acceso, para obtener el identificador de usuario efectivo (disponible en el módulo OS) y comprobar que en contra de la raíz (0) podría ser lo que buscas. Si conoces a acceder a un archivo en el sistema requiere los privilegios que desea que el script tiene, puede utilizar la os.access () para comprobar si está lo suficientemente privilegiado.

Desafortunadamente no existe un método fácil ni portátil para dar. Es necesario averiguar o definir el modelo de seguridad utilizado, lo API del sistema siempre están disponibles para consultar y establecer privilegios y tratar de localizar (o posiblemente aplicar a sí mismo) los módulos de Python adecuadas que se pueden utilizar para acceder a la API.

La clásica pregunta, ¿por qué necesita para averiguar? ¿Qué pasa si la secuencia de comandos intenta hacer lo que tiene que hacer y "sólo" capturas y debidamente maneja fracasos?

Si usted está tratando de ver si tiene acceso a un determinado archivo que requiere derechos administrativos, una buena manera de comprobar sería:

import os
print os.access("/path/to/file", os.W_OK) 
#replace W_OK with R_OK to test for read permissions

Por otro lado, si usted realmente necesita saber si un usuario es una cuenta de administrador, también puede utilizar este código en Windows 2000 y versiones posteriores:

import ctypes
print ctypes.windll.shell32.IsUserAnAdmin()

Por lo tanto, una mejor, manera multiplataforma para averiguar si un usuario es un administrador es:

import ctypes, os
try:
 is_admin = os.getuid() == 0
except:
 is_admin = ctypes.windll.shell32.IsUserAnAdmin()

print is_admin

Por supuesto, este método sólo se detecta si el usuario es root en Unix, o es un miembro del grupo Administradores en Windows. Sin embargo, esto es suficiente para la mayoría de los propósitos, en mi opinión.

También tenga en cuenta que esto se producirá un error en las versiones de Windows por debajo de 2000, así como Windows ME, ya que éstas están las versiones de Windows DOS-basada y no tienen ninguna noción de permisos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top