* Los permisos de usuario de nix son realmente simples, pero las cosas pueden complicarse cuando tienes que tener en cuenta todo el acceso al directorio principal antes de llegar a un archivo determinado. ¿Cómo puedo verificar si el usuario tiene suficientes privilegios? Si no, ¿qué directorio está negando el acceso?
Por ejemplo, suponga un usuario joey el archivo /long/path/to/file.txt. Incluso si file.txtfue modelado a 777, Joe todavía tiene que poder acceder /long/, y luego /long/path/y /long/path/to/antes. Lo que necesito es una forma de verificar esto automáticamente. Si joeno tiene acceso, también me gustaría saber dónde se le ha denegado. Quizás él pueda acceder /long/, pero no /long/path/.
fuente

namei <path> || exit 1permite detectar un problema de permisos con mucha facilidad en un script.Puedes usar bash para hacer esto.
Para verificar esto para un usuario específico, puede usar
sudo.fuente
pathpara estar vacío? o/?pathse establece por/longprimera vez alrededor del ciclo, lo cual es correcto. ¿Debo establecerpathnada explícitamente (path=)? Además, gracias por simplificar mi uso detr.Como obtuve de su pregunta, debe verificarlo para diferentes usuarios (no solo Joe), por lo que en ese caso la forma más fácil es verificarlo de manera recursiva a través de sudo de esta manera:
uso:
fuente
0755,0700y0777). Emití./script.sh /root/test/test.txt joey se hizo ecooriginal file /root/test/test.txt is readable for joe. Además, al intentar esto, escribí mal el directorio de prueba:./script.sh /root/tst/test.txt joey se hizo ecooriginal file /root/tst/test.txt is readable for joe. ¿Me perdí algo?-r $FILE, ¿verdad?Aquí está mi intento de proporcionar esta funcionalidad. He optado por usar
stat, unwhilebucle, ydirname.He creado este script
walkdir.bash:Lo ejecutas así:
fuente