As permissões de usuário do * nix são realmente simples, mas as coisas podem ficar complicadas quando você precisa levar em consideração todo o acesso ao diretório pai antes de chegar a um determinado arquivo. Como posso verificar se o usuário tem privilégios suficientes? Caso contrário, qual diretório está negando acesso?
Por exemplo, suponha um usuário joe
e o arquivo /long/path/to/file.txt
. Mesmo que tenha file.txt
sido modificado para 777, joe ainda precisa ser capaz de acessar /long/
, e depois /long/path/
e depois /long/path/to/
antes. O que eu preciso é uma maneira de verificar isso automaticamente. Se joe
não tiver acesso, também gostaria de saber onde ele foi negado. Talvez ele possa acessar /long/
, mas não /long/path/
.
fonte
namei <path> || exit 1
permite detectar um problema de permissão com muita facilidade em um script.Você pode usar o bash para fazer isso.
Para verificar isso para um usuário específico, você pode usar
sudo
.fonte
path
para estar vazio? ou/
?path
está definido para/long
a primeira vez no loop, o que está correto. Devo definirpath
nada explicitamente (path=
)? Além disso, obrigado por simplificar meu uso detr
.Como recebi da sua pergunta, você deve checá-la para diferentes usuários (não apenas joe); nesse caso, a maneira mais fácil é checá-la recursivamente via sudo desta maneira:
uso:
fonte
0755
,0700
e0777
). Eu emiti./script.sh /root/test/test.txt joe
e ecoouoriginal file /root/test/test.txt is readable for joe
. Além disso, ao tentar isso, digitei errado o diretório de teste:,./script.sh /root/tst/test.txt joe
e ecoouoriginal file /root/tst/test.txt is readable for joe
. Perdi alguma coisa?-r $FILE
, certo?Aqui está minha tentativa de fornecer essa funcionalidade. Optei por usar
stat
, umwhile
loop edirname
.Eu criei este script
walkdir.bash
:Você executa da seguinte maneira:
fonte