* 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 joe
y el archivo /long/path/to/file.txt
. Incluso si file.txt
fue 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 joe
no 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 1
permite 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
path
para estar vacío? o/
?path
se establece por/long
primera vez alrededor del ciclo, lo cual es correcto. ¿Debo establecerpath
nada 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
,0700
y0777
). Emití./script.sh /root/test/test.txt joe
y 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 joe
y 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
, unwhile
bucle, ydirname
.He creado este script
walkdir.bash
:Lo ejecutas así:
fuente