14.04 tutaj. SSHed do mojego komputera, dodałem następujący wiersz do /etc/sudoers
:
myuser ALL=NOPASSWD: ALL
A potem próbował uruchomić:
sudo mkdir /etc/blah
... i jestem proszony o podanie hasła. Dlaczego?!?
Ja nie chce zostać poproszony o hasło podczas wykonywania tej operacji. Uwaga: po uruchomieniu ls -ltr /
otrzymuję:
drwxr-xr-x 94 root root 4096 Jul 30 13:28 etc
Ale nie sądzę, żeby to miało znaczenie, ponieważ ustawiłem się jako „sudoer”, prawda?
Co ważniejsze, co muszę zrobić, aby móc działać sudo mkdir /etc/blah
jako mój bieżący użytkownik ( myuser
) bez pytania o hasło?
Oto cały mój /etc/sudoers
plik:
#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults env_reset
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
# Host alias specification
# User alias specification
# Cmnd alias specification
# User privilege specification
root ALL=(ALL:ALL) ALL
fizzbuzz ALL=NOPASSWD: ALL
chadmin ALL=NOPASSWD: ALL
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
# See sudoers(5) for more information on "#include" directives:
#includedir /etc/sudoers.d
visudo
jednak ręczne edytowanie tego pliku nie kopiuj-n-wklej pracy, Wpisałem wszystko jak jest. Ale czyvisudo
edytuje inne pliki oprócz tego? To może być to .../etc/sudoers.d/
, mogą być nadrzędne w stosunku do/etc/sudoers
Odpowiedzi:
To sekwencja / kolejność reguł spowodowała to. Ostatnia reguła ma pierwszeństwo.
Aby rozwiązać problem, po prostu przesuń linie,
z
sudoers
pliku doJest to lepsze podejście niż edytowanie
sudoers
pliku za pomocą zwykłego edytora tekstowego. Jeśli przypadkowo wstawisz błędy do pliku, uruchomienie może być niemożliwesudo
. Zawsze używajvisudo
, aby sprawdzić składnię i otrzymywać ostrzeżenia o błędach!Twoja dyrektywa nie działa, ponieważ jest nadpisana przez:
Jeśli uruchomisz
groups
polecenie, zobaczysz, że użytkownik należy do tych grup.źródło
nn-somename
, na przykład/etc/sudoers.d/20-myoverrides
Jeśli mój użytkownik jest w grupie sudo , to kolejność wierszy nie zapewni dostępu bez hasła (jak zauważył Florian Diesch), ponieważ trzecia linia zastępuje pierwszą.
Więc po prostu wstaw linie w tej kolejności:
W ramach konta myuser użyj,
sudo -l
aby sprawdzić, jakie uprawnienia ma mój użytkownik .źródło
Jeśli dla użytkownika pasuje wiele wpisów, użyty zostanie ostatni . Więc jeśli
fizzbuzz
ichadmin
są członkami grup, wadmin
przeciwnym raziesudo
będą nadal proszeni o hasło.Umieść dwie linie na końcu
sudoers
pliku za#includedir
linią.źródło
#includedir
jest to ostatni wpissudoers
.Idealnie, jeśli dostosowujesz, które polecenia mogą być uruchamiane
sudo
, powinieneś wprowadzić te zmiany w osobnym pliku,/etc/sudoers.d/
zamiast bezpośrednio edytowaćsudoers
plik. Powinieneś również zawsze używaćvisudo
do edycji plików. Trzeba przyznać NIGDYNOPASSWD
naALL
polecenia.Przykład:
sudo visudo -f /etc/sudoers.d/mynotriskycommand
Wstaw swoje pozwolenie na udzielenie linii:
myuser ALL= NOPASSWD: /bin/mkdir
Następnie zapisz i wyjdź, a
visudo
ostrzeże Cię, jeśli wystąpią jakiekolwiek błędy składniowe.Możesz uruchomić,
sudo -l
aby zobaczyć uprawnienia przyznane przez użytkownika, jeśli którekolwiek zNOPASSWD
poleceń specyficznych dla użytkownika pojawi się PRZED jakimkolwiek%groupyouarein ALL=(ALL) ALL
poleceniem na wyjściu, zostaniesz poproszony o podanie hasła.Jeśli odkryjesz, że tworzysz wiele takich plików sudoers.d, być może będziesz chciał utworzyć je o nazwach poszczególnych użytkowników, aby były łatwiejsze do wizualizacji. Należy pamiętać, że kolejność NAZW PLIKU i ZASAD w pliku jest bardzo ważna, OSTATNIE załadowane wygrywa, niezależnie od tego, czy jest WIĘCEJ, czy MNIEJ dopuszczające niż poprzednie wpisy.
Spróbuj uruchomić
printf '%s\n' {{0..99},{A-Z},{a-z}} | sort
iprintf '%s\n' {{0..99},{A-Z},{a-z}} | LANG=C sort
sprawdź, czy bieżący język jest drukowanyAaBbCc
itp., AABC
następnieabc
określ najlepszy najlepszy prefiks „ostatniej” litery.źródło