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)

dtech
źródło

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
ckhan
źródło
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> && ...
użytkownik72025
źródło
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.

Tyler Collier
źródło
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
dtech
źródło
Bardzo interesująca opcja.
Alex