¿Cómo verifico los permisos de archivo/accesibilidad efectivos para/de un archivo dado y un usuario dado?

¿Cómo verifico los permisos de archivo efectivos (incluidas las ACL)/accesibilidad para/de un archivo determinado y un usuario determinado (incluidas las cuentas de servicio/sistema) sin verificar la ruta completa manualmente?

Ejemplo: supongamos un usuario joe y el archivo /long/path/to/file.txt. Incluso si file.txt se cambió a 777, joe aún debe poder acceder a /long/, y luego a /long/path/ y luego a /long/path/to/ antes. Si joe no tiene al menos acceso de lectura a todas las carpetas en la ruta, no puede acceder (leer/escribir/ejecutar) el archivo. Entonces, los permisos efectivos para él (como usuario "mundial/todos") son 0 y no puede acceder al archivo.

Alternativamente: ¿cómo obtengo una lista de los permisos (incluidas las ACL) de todos los usuarios (incluidas las cuentas de servicio/sistema) para un archivo determinado?

Una aplicación o un script bash también son bienvenidos.

Ya se ha hecho una pregunta similar con un enfoque ligeramente diferente en Unix y Linux: ¿ Cómo comprobar si un usuario puede acceder a un archivo determinado?

ls -del FILE|DIRenumerará los permisos estándar de Unix y las ACL. ¿Que es exactamente lo que está buscando?
@patrix Su lscomando muestra los permisos de archivo para un archivo dado. Pero como se describe en la pregunta vinculada de Unix y Linux, los permisos en la ruta superior pueden configurarse de manera diferente para que un usuario arbitrario no pueda leer un archivo que es legible para todo el mundo. Resultado: los permisos de archivo son (77) 7 pero los permisos de archivo efectivos son (77) 0 (para un usuario arbitrario que no sea el propietario y no en el mismo grupo)
¿Puede aclarar su pregunta entonces para que se sostenga por sí sola y tal vez agregar algunos ejemplos? También podría ser útil diferenciar entre los permisos de archivo (que se muestran con ls -del) y la capacidad de acceso (que parece ser lo que está buscando).
¡Interesante desafío en realidad! Si tiene en cuenta los enlaces duros en los archivos, se volverá muy interesante :-)

Respuestas (1)

Una aplicación comercial que proporciona los permisos efectivos para un usuario y un archivo o carpeta seleccionados es TinkerTool System :

En el siguiente ejemplo , se muestran los permisos efectivos del archivo /private/var/log/clamav.log para el usuario Spotlight . El usuario Spotlight no puede leer ni escribir datos.

ingrese la descripción de la imagen aquí

Al activar la pestaña Mostrar o establecer permisos, los permisos/propiedad de POSIX se muestran explícitamente.

ingrese la descripción de la imagen aquí