* Uprawnienia użytkownika nix są bardzo proste, ale sprawy mogą się popsuć, gdy trzeba wziąć pod uwagę dostęp do katalogu nadrzędnego przed dotarciem do danego pliku. Jak mogę sprawdzić, czy użytkownik ma wystarczające uprawnienia? Jeśli nie, to który katalog odmawia dostępu?
Załóżmy na przykład użytkownika joe
i plik /long/path/to/file.txt
. Nawet jeśli file.txt
został chmoded do 777, Joe nadal musi mieć dostęp /long/
, /long/path/
a potem /long/path/to/
jeszcze raz. Potrzebuję sposobu, aby to automatycznie sprawdzić. Jeśli joe
nie ma dostępu, chciałbym również wiedzieć, gdzie mu odmówiono. Może ma dostęp /long/
, ale nie /long/path/
.
źródło
namei <path> || exit 1
pozwala na łatwe wykrycie problemu z uprawnieniami w skrypcie.Możesz użyć bash, aby to zrobić.
Aby to sprawdzić dla konkretnego użytkownika, możesz użyć
sudo
.źródło
path
aby być pustym? czy/
?path
ustawiono/long
po raz pierwszy wokół pętli, co jest poprawne. Czy powinienem ustawićpath
jawnie na nic (path=
)? Dziękuję również za uproszczenie mojego korzystania ztr
.Jak otrzymałem z twojego pytania, powinieneś to sprawdzić dla różnych użytkowników (nie tylko Joe), więc w takim przypadku najłatwiej jest to sprawdzić rekurencyjnie za pomocą sudo w następujący sposób:
stosowanie:
źródło
0755
,0700
i0777
). Wydałem./script.sh /root/test/test.txt joe
i echooriginal file /root/test/test.txt is readable for joe
. Ponadto, próbując tego, źle wpisałem test reż:./script.sh /root/tst/test.txt joe
i echooriginal file /root/tst/test.txt is readable for joe
. Coś przeoczyłem?-r $FILE
, prawda?Oto moja próba zapewnienia tej funkcjonalności. Ja zdecydowaliśmy się użyć
stat
, awhile
pętlę, idirname
.Stworzyłem ten skrypt
walkdir.bash
:Uruchamiasz to tak:
źródło