Estoy escribiendo un script para verificar los permisos de los archivos en los directorios del usuario y si no son aceptables, los advierto, pero quiero verificar los permisos no solo de los que han iniciado sesión usuario, pero también grupo y otros. ¿Cómo puedo hacer esto? Me parece que .access() en Python solo puede verificar los permisos para el usuario que ejecuta el script.Comprobando los permisos de archivos en Linux con Python
Respuesta
Tiene razón en que os.access, como el syscall subyacente access, busca un usuario específico (ID reales en lugar de efectivos, para ayudar con las situaciones de suid).
os.stat es la forma correcta de obtener más información general sobre un archivo, incluidos los permisos por usuario, grupo y otros. El atributo st_mode
del objeto que os.stat
devuelve tiene los bits de permiso para el archivo.
Para ayudar a interpretar esos bits, es posible que desee utilizar el módulo stat. Específicamente, querrá las máscaras de bits definidas here, y usará el operador &
(bit-and) para usarlas para enmascarar los bits relevantes en ese atributo st_mode
, por ejemplo, si solo necesita un valor verdadero/falso comprobar si un determinado archivo es un grupo legible, un enfoque es: cuidado
import os
import stat
def isgroupreadable(filepath):
st = os.stat(filepath)
return bool(st.st_mode & stat.S_IRGRP)
tomar: la llamada os.stat
puede ser algo costoso, así que asegúrese de extraer toda la información que te importa con una sola llamada, en lugar de sigue repitiendo llamadas por cada bit de interés ;-).
Utilice os.access()
con las banderas os.R_OK
, os.W_OK
y os.X_OK
.
Editar: Consulte this related question si está probando permisos de directorio en Windows.
que aún no ha leído la pregunta, os.access sólo comprueba los permisos de el usuario actual. –
Puede consultar los permisos de archivos a través del os.stat(path)
junto con el módulo stat
para interpretar los resultados.
sólo para ayudar a otras personas como yo que vinieron aquí por algo un poco diferente:
import os
import stat
st = os.stat(yourfile)
oct_perm = oct(st.st_mode)
print(oct_perm)
>>> 0o100664 //the last 3 or 4 digits is probably what you want.
ver este para más detalles: https://stackoverflow.com/a/5337329/1814774
- 1. ¿Cómo cambiar los permisos de acceso a archivos en linux?
- 2. Comprobando los permisos del propietario del archivo
- 3. Evite que subversion modifique los permisos de archivos de Linux.
- 4. Comprobando permisos de ntfs de carpeta/archivo usando python
- 5. Permisos de archivos de Linux para dispositivos USB en Android
- 6. ¿Cómo cambio programáticamente los permisos de archivos?
- 7. Obtener tiempo de creación de archivos con Python en linux
- 8. python shutil.copytree - ignore los permisos
- 9. ¿Establecer permisos predeterminados para los archivos y subdirectorios recién creados en un directorio de Linux?
- 10. Mantener los permisos de archivos y carpetas dentro de los archivos
- 11. Conservación de permisos de archivos con Git
- 12. Tomar posesión de archivos con permisos 'rotos'
- 13. Creando archivos ejecutables en Linux
- 14. Escribir archivo con permisos específicos en Python
- 15. Verificar permisos de escritura en Windows/Linux
- 16. acerca de los permisos de archivos en C#
- 17. Permiso de grupo de cambio de Linux para que coincida con los permisos del propietario
- 18. Python - Probar los permisos del directorio
- 19. Los permisos de archivo no heredan los permisos de directorio
- 20. Lista los archivos con recursiva ruta absoluta en Linux
- 21. implementar rsync y permisos de archivos/directorios
- 22. Configuración de permisos para WordPress en Amazon EC2 (Amazon Linux)
- 23. ¿Cómo cambiar los permisos de archivos de Java 1.4.2?
- 24. ¡Obtén los deltas del mouse con Python! (en Linux)
- 25. ¿Se puede hacer Mercurial para conservar los permisos de archivos?
- 26. Permisos de archivos Java para hilos
- 27. Permisos en archivos de solución para modificar
- 28. ¿Los archivos Python 2.5 .pyc son compatibles con los archivos .pyc de Python 2.6?
- 29. ¿Cómo recorrer los archivos con Python?
- 30. Una pregunta general de permisos de archivos de Linux: Apache y WordPress
Maravilloso, esto es exactamente lo que esperaba encontrar. Muchas gracias. Acabo de empezar a buscar python para un pequeño proyecto en el trabajo, por lo que puedes decir que todavía estoy aprendiendo. ¡Muchas gracias! – jphenow
Muy buena utilidad. ¡Gracias! – zerocog