Mogę skonfigurować sudo (za pomocą pliku sudoers), aby umożliwić użytkownikowi uruchamianie poleceń chown
i chmod
w dowolnym pliku lub katalogu w systemie. Chcę jednak przyznać użytkownikowi uprawnienia tylko do uruchamiania tych poleceń na plikach znajdujących się w /var/www/html
katalogu.
Jak mogę ograniczyć uprzywilejowane polecenia, aby użytkownik mógł je uruchamiać tylko we wcześniej określonym katalogu?
Na przykład: Poniższe polecenie przyznaje 777 uprawnień do index.html
pliku.
sudo chmod 777 /var/www/html/index.html
Teraz chcę wykonać dwie akcje
Ograniczyć
sudo
takie, że użytkownik może uruchomić tylkochmod
ichown
od wewnątrz/var/www/html
Nie zezwalaj użytkownikowi na wykonywanie tych poleceń w innym miejscu w systemie (np. Poleceń nie można uruchomić w
/var/www
lub/var/ftp
)
www-data
grupę eliminującą potrzebęchmod
/chown
czegokolwiek?chown
. Poza tym nie widzę powodu, dla którego miałbychmod
być uruchamiany jako root.Odpowiedzi:
To, o co pytasz, jest trudne, jeśli nie niemożliwe. Nawet jeśli nie ogranicza stosowania
chown
ichmod
do plików w katalogu specyficznym, ktoś może jeszcze przejść link symboliczny a więc wpływać pliki gdziekolwiek chcą.Na szczęście wysoce prawdopodobne jest, że to, co próbujesz zrobić, nie jest właściwym rozwiązaniem twojego rzeczywistego problemu, i działa inna metoda.
Zwykle użytkownicy, którzy potrzebują dodatkowych uprawnień do tworzenia i modyfikowania plików,
/var/www
są dodawani do grupy (częstowww-data
lub możesz mieć różne grupy dla różnych części witryny). Możesz użyć własności grupy i katalogów setgid:chgrp www-data /var/www/html; chmod g+ws /var/www/html
pozwala wszystkim członkomwww-data
grupy pisać do/var/www/html
katalogu, a pliki utworzone w tym katalogu będą własnościąwww-data
grupy, a nie podstawowej grupy użytkownika, który utworzył plik. Nie jest to jednak zbyt elastyczne.To, co prawdopodobnie powinieneś zrobić, to skonfigurować listy kontroli dostępu do plików w obszarze
/var/www
. Najpierw upewnij się, że listy ACL są włączone: włączony system plików/var/www
musi być podłączony zacl
opcją. Aby uzyskać pomoc, zobacz Udostępnij wszystkie nowe pliki w katalogu grupie . Zainstaluj także narzędzia ACL (getfacl
isetfacl
). Następnie daj dodatkowe uprawnienia do drzewa poniżej/var/www/html
użytkownikom, którzy powinni je mieć. Możesz ustawić listy ACL dla poszczególnych użytkowników, ale często łatwiej jest umieścić w grupie użytkowników, którzy powinni mieć takie same uprawnienia do części systemu plików, i ustawić listy ACL dla tej grupy. Na przykład, jeśli użytkownicy w grupiehtml-writers
powinni mieć dostęp do odczytu i zapisu do drzewa pod/var/www/html
:źródło
Możesz ograniczyć polecenie do użycia przez „myuser” wszystkimi argumentami w
/etc/sudoers
pliku za pomocą poleceniavisudo
add:włącz rejestrowanie dla każdej operacji, dodając:
próbka wyjściowa:
Kiedy używasz sudo, założenie powinno być takie, że „mój użytkownik” jest osobą zaufaną. Uważaj na uprawnienia do plików, nie ma prostego sposobu na powstrzymanie złośliwego użytkownika sudo od połączenia pliku z zasobu zewnętrznego i zmiany go.
źródło
su - prashant
lubsu prashant
?sudo /bin/chmod 666 /var/www/html/../../../etc/passwd
a jeśli jakoś to naprawicie,ln -s /etc /var/www/html/foo/etc; sudo /bin/chmod 666 /var/www/html/foo/etc/passwd
W rzeczywistości istnieje dość prosty sposób, aby to zrobić, tworząc skrypt Bash (lub wybraną powłokę), aby ograniczyć modyfikacje wprowadzone do określonego pliku lub katalogu.
W twoim przykładzie wyglądałoby to tak:
Następnie zmieniłbyś plik sudoers, aby umożliwić www-data wykonanie / usr / local / bin / mychmod.
Pamiętaj jednak, że zezwalanie użytkownikom na wprowadzanie danych (na przykład zezwalanie użytkownikowi na zmianę pliku lub katalogu chmodded) w to miejsce jest niezwykle niebezpieczne i musisz wiedzieć, jak odfiltrować ataki wstrzykiwające, jeśli chcesz zrobić coś takiego że. Osoba atakująca może z łatwością wykonać dowolne polecenie jako root w ten sposób, skutecznie zagrażając bezpieczeństwu twojego systemu.
źródło