Za każdym razem, gdy chcę być w stanie uruchomić coś, co wymaga ode mnie sudoer
zbyt wiele razy, muszę google sformatować, /etc/sudoers
aby ponownie przypomnieć mi, jaki jest właściwy sposób na napisanie tego.
Teraz widzę różne style pisania w moim sudoers
pliku, co jest konsekwencją różnych wyników Google w ciągu miesięcy. Zauważyłem również, że drugi przykład (poniżej) wydaje się działać w XFCE, ale nie w Cinnamon (Gnome 3). Może to być całkowicie niezwiązane, ale mimo to chciałbym raz na zawsze wiedzieć, jaka jest prawidłowa gramatyka linii sudoer i jaka jest różnica między podanymi przykładami?
redsandro ALL=NOPASSWD:/path/to/command
redsandro ALL=(ALL) NOPASSWD:/path/to/command
redsandro ALL=(ALL:ALL) NOPASSWD:/path/to/command
Ponadto, po co to wszystko ALL
? Jeden użytkownik, jedno polecenie, ale muszę użyć ALL
słowa kluczowego do trzech razy? Czy robię to źle?
Oczywiście, pomijając NOPASSWD:
sprawia, że można wprowadzić hasło, zanim wolno uruchomić polecenie, ale jeden punkt zamieszania jest wykorzystanie =
i :
, końcowego polecenia, które jest przedmiotem tej linii mogą być poprzedzany przez jedną =
, :
, , lub
)
, myląca gramatyka dla podobnej semantyki.
sudoers
składnią. Czytanie strony podręcznika było jeszcze bardziej frustrujące: opisuje tak zwany zwięzły i dokładny język EBNF, przykłady są wyczerpująco długie. Dlatego nie jestem zaskoczony, że znalazłem tutaj tak wiele wątków dotyczących tego pliku.Odpowiedzi:
To coś więcej niż tylko użytkownik i polecenie:
host
określa nazwy hostów, dla których ta linia jest ważna. Chyba że dzielisz plik asudoers między różnymi hostami, które potrzebują różnych reguł, używając specjalnej wartościALL
oznaczającej, że „wszystkie hosty” to dobry wybór.user
określa, których użytkowników można użyć z-u
opcjami uruchomienia polecenia. Jeśli pominiesz to, nie będziesz mógł skorzystać z tej-u
opcji.group
określa grupy, których można używać z-g
opcjami. Jeśli go pominiesz, nie możesz użyć tej-g
opcji.Zarówno
user
igroup
zrozumieć wartość specjalnąALL
za „wszystkich użytkowników / grup”Jeśli pominiesz całą
(user:group)
rzecz, której nie możesz użyć,-u
a-g
uruchomisz polecenie tylko jako root.tag
pozwala określić niektóre opcje, takie jakNOPASSWD
Tak więc w pierwszym przykładzie możesz uruchomić komendę jako root, ale nie możesz jej użyć
-u
i-g
uruchomić jako jakikolwiek inny użytkownik lub grupa.W przykładzie 2. możesz uruchomić komendę jako root lub użyć
-u
jej jako dowolnego użytkownika.Za pomocą 3. możesz uruchomić polecenie jako root lub użyć
-u
lub,-g
aby uruchomić polecenie jak każdy inny użytkownik lub grupa.źródło
127.0.0.1
lublocalhost
jakhost
dla trywialnego dodatkowego bezpieczeństwa?ALL
to jest.Rozłóżmy to na części:
redsandro ALL=(ALL:ALL) NOPASSWD:/path/to/command
redsandro to nazwa użytkownika, na który zezwalamy. Umieść% z przodu, aby zastosować go do grupy.
WSZYSTKO to nazwa tej reguły. Sudoerzy mogą zrobić znacznie więcej niż tylko przyznawać globalne uprawnienia. Tam jednak komplikuje się.
= nie wymaga wyjaśnienia
ALL: ALL czyta jako (who_to_run_it_as: what_group_to_run_it_as). W ten sposób możesz zezwolić na uruchomienie polecenia, ale tylko w kontekście określonego użytkownika lub grupy.
NOPASSWD: nakazuje wyłączenie monitu o podanie hasła.
/ ścieżka / do / polecenie pozwala określić określone polecenia ścieżka_do_komendy, inna_komenda
Należy pamiętać, że chociaż sudo jest najczęściej używane przez użytkowników domowych do eskalacji uprawnień administratora, może być używane do kontroli dostępu do określonych poleceń w bardziej szczegółowy sposób.
źródło
%
i, another_command
uwagi. Teraz rozumiem%wheel
linię w dystrybucji opartej na Fedorze.