Przetestuj efektywne uprawnienia pliku dla użytkownika


24

Czy można przetestować skuteczne uprawnienia do pliku dla konkretnego użytkownika?

Zwykle robię to, su useruzyskując dostęp do pliku, ale teraz chcę to przetestować u użytkownika bez powłoki (tj. Użytkownika systemu)

Odpowiedzi:


23

sudoKomenda może działać jak nic konkretnego użytkownika z -uopcją. Zamiast martwić się o powłoki, po prostu spróbuj cat(lub wykonać, cokolwiek) plik jako użytkownik docelowy:

$ sudo -u apache cat .ssh/authorized_keys 
cat: .ssh/authorized_keys: Permission denied

catprawdopodobnie nie jest najlepszym wyborem ... jeśli testujesz duży plik lub plik binarny ...
Alexis Wilke

24

Uznałem, że wygodne w użyciu w skryptach jest coś takiego

 sudo -u <user> test -r <file-to-test> && ...

1
najlepsza odpowiedź, ponieważ możesz przetestować, czy jest możliwy do odczytu (-r), zapisywalny (-w) i wykonywalny (-x) bez faktycznej modyfikacji / tworzenia pliku. man testpo więcej szczegółów
Thomas

12
sudo -u <user> test -r <file-to-test>; echo $?

echo $?Wyjście część będzie kod wyjścia z testu.

Pamiętaj tylko, że wynik będzie, 0jeśli operacja się powiedzie! Lub niezerowa, np. 1Jeśli nie.

Podobnie jak komentarz @ Thomasa do odpowiedzi @ user72025, użyj, man testaby uzyskać więcej testów operacyjnych, takich jak test -xtest wykonywalności, test -wzapisywalności itp.


1
Dla mnie jest to najbardziej pomocna odpowiedź. Ten autorstwa user72025 był blisko, ale nie miałem pojęcia, jaki był wynik. Wyjaśniłeś to. Dzięki. Głosowanie
inspirednz

6

Odkryłem, że możesz użyć, su -s <shellname> <username>aby wprowadzić określoną powłokę jako określony użytkownik. Następnie możesz jak zwykle przetestować uprawnienia do plików.

Na przykład:

su -s /bin/bash Debian-exim
touch /etc/exim4/exim4.conf.template

Bardzo interesująca opcja.
Alex
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.