Ogranicz użytkownika do wykonywania selektywnych poleceń (Linux)

14

Jak mogę ograniczyć mojego użytkownika do wykonywania tylko selektywnych poleceń. Mam użytkownika tomc w grupie tomc. Potrzebuję tego użytkownika, aby był użytkownikiem sudo, a następnie mieć ograniczony bash. Próbowałem śledzić kod w /etc/sudoerspliku, ale nie działa, ponieważ użytkownik jest w stanie wykonać inne polecenia, takie jak mkdir,rm

%tomc ALL=/bin/bash,/usr/bin/vim /*
nowicjusz17
źródło
3
Chociaż korzystanie z sudo można ograniczyć do określonych poleceń, może to być trudne i wymaga pewnego zaufania. Jeśli nie ufasz użytkownikowi, to przyznanie mu dostępu do sudo jest złym pomysłem. Daje im albo uprawnienia root, albo ukierunkowaną aplikację do ataku w celu uzyskania uprawnień root. Zezwolenie komuś na uruchomienie sudo bashjest pod wieloma względami równoważne z hasłem root. Z poziomu sudo bashpowłoki mogą uruchamiać dowolne polecenia administratora, instalować lub usuwać oprogramowanie, usuwać użytkowników i katalogi itp.
Paul
@Paul Czy możesz zasugerować mi lepsze i praktyczne opcje?
Po pierwsze, jest to nie na temat przepełnienia stosu. Lepsze miejsca do zapytania to superuser, askubuntu lub Linux i Unix. Najpierw wymyśl dokładnie, co chcesz, aby Tomc mógł zrobić. tomc powinien mieć możliwość robienia _____, ale nie ________. Więc zapytaj. Sudo jest dla poleceń, które wymagają uprawnień roota (administratora). Może już uruchomić bash bez uruchamiania go jako root.
Paul

Odpowiedzi:

18

Możesz iść na to w niewłaściwy sposób. Zamiast dawać użytkownikowi „ograniczoną” powłokę bashową, powinieneś dać mu dostęp tylko do poleceń, które musieliby uruchomić jako root. Na przykład w pliku sudoers:

tomc ALL=(root) /usr/bin/vim /etc/myapp.conf
tomc ALL=(root) /usr/bin/less /var/log/myapp/*.log

Bądź ostrożny, pozwalając użytkownikom uruchamiać vima jako root. Vim ma wiele wbudowanych funkcji, takich jak ucieczki do powłoki i możliwość uruchamiania poleceń z poziomu vima. W zależności od dystrybucji możesz mieć sudoeditdostępne. Działa to tak samo jak normalny Vim, z tym wyjątkiem, że jest zaprojektowany do obsługi ucieczek powłoki i tym podobnych.

mtak
źródło
7
Żadna z tych linii nie jest bezpieczna. Jak wspomniałeś,vimmożesz uruchamiać dowolne polecenia powłoki. A druga linia prawdopodobnie pozwoliless /var/log/myapp/../../../etc/shadow! Według moich eksperymentów bezpieczne używanie sudo jest trudne ! Ale jeśli możesz uniknąć*s i użyćsudoeditzamiastvimtego, możesz być w porządku.
joeytwiddle
Unikanie *nie wystarczy! Raz lessjako rootużytkownik, spróbuj wpisać !tail /var/log/secure. Jak to jest Przestudiuj NOEXECtag. Ale weź sobie wiadomość @ joeytwiddle do serca: bezpieczeństwo sudo jest naprawdę trudne.
Bruno Bronosky
3

Na mojej Synology Diskstation z uruchomionym DSM 6 tylko użytkownicy administracyjni mogą konsekwentnie ssh (użytkownicy niebędący administratorami mają powłokę jako / sbin / nologin w / etc / passwd - możesz ustawić tę opcję na / bin / sh, aby tymczasowo zezwolić na ssh, ale przy ponownym uruchomieniu plik / etc / passwd jest resetowany). Z tego powodu potrzebne jest pewne ograniczenie sudo dla konta, które w innym przypadku istnieje tylko w celu wykonania np. / Sbin / poweroff. Dla mnie działały następujące wiersze w / etc / sudoers:

# Allow guestx user to remote poweroff
guestx ALL=(ALL) !ALL
guestx ALL=NOPASSWD: /sbin/poweroff

Tłumaczenie: nie zezwalaj na wszystkie polecenia, a następnie zezwól tylko na żądane polecenie (w tym przypadku bez pytania o hasło).

Przy tej konfiguracji sudo pyta o hasło, a następnie nie wykonuje poleceń innych niż z białej listy:

guestx@ds:~$ sudo su -
Password: 
Sorry, user guestx is not allowed to execute '/bin/su -' as root on ds.
guestx@ds:~$ 
robm
źródło