Przedmowa
Jest to dość złożone pytanie związane z plikiem Sudoers i ogólnie poleceniem sudo.
UWAGA: Wprowadziłem te zmiany na dedykowanym komputerze z systemem Ubuntu Desktop 13.04, którego używam wyłącznie do celów edukacyjnych. Rozumiem, że włączenie NOPASSWD sudo jest ogromnym zagrożeniem dla bezpieczeństwa.
Pytanie
Początkowo moją jedyną zmianą w pliku sudoers (/ etc / sudoers) była jedna linia, specyfikacja użytkownika, która powinna umożliwić „nicholsonjf” uruchamianie wszystkich poleceń za pomocą sudo bez konieczności wprowadzania hasła (patrz wiersz rozpoczynający się od „nicholsonjf” „):
# 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
nicholsonjf 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
Jednak to nie zadziałało, a za każdym razem, gdy uruchamiałem polecenie jako „nicholsonjf”, wciąż pojawiał się monit o podanie hasła. Mogłem uruchomić polecenia sudo jako „nicholsonjf” dopiero po usunięciu „nicholsonjf” z grup sudo i admin.
Czy ktoś może wyjaśnić, dlaczego to zadziałało?
Czy to dlatego, że użytkownik „nicholsonjf” odziedziczył prawa sudo z dwóch specyfikacji grup „admin” i „sudo” (patrz poniżej w pliku sudoers), które zastępowały specyfikację użytkownika „nicholsonjf”, ponieważ znajdowały się w dalszej części plik konfiguracyjny?
Odpowiedzi:
Dodana linia została zastąpiona. Od
man sudoers
:W twoim przypadku
nicholsonjf
był członkiem grupy,sudo
więc dla niego ta linia miała zastosowanie:Jeśli chcesz zastąpić wpisy, po
/etc/sudoers
prostu wstaw nowe wpisy po nich.Nowy wpis powinien wyglądać
myuser ALL=(ALL) NOPASSWD: ALL
dla jednego użytkownika lub%sudo ALL=(ALL) NOPASSWD: ALL
dla grupy.źródło
NOPASSWD
w tej odpowiedzi ...%sudo ALL=(ALL) NOPASSWD:ALL
nicholsonjf ALL=NOPASSWD: ALL
jest poprawny. To było po prostu w niewłaściwym miejscu, jak wyjaśniłem w odpowiedzi. ------Runas
Specyfikacja - w twoim przypadku(ALL)
- jest opcjonalna. Jeśli pominiesz specyfikację, możesz uruchomić polecenia jakoroot
i nie możesz ich używać-u
oraz-g
opcjisudo
.W przypadku pojedynczego użytkownika dodaj ten wiersz na końcu
sudoers
pliku, używającsudo visudo
Dla grupy
źródło
%sudo ALL=NOPASSWD: ALL
to i działa. Czy jestem jedyną osobą, która uważa, że formularz Extended Backus-Naur jest naprawdę trudny do zrozumienia?sudo
bez hasła jako użytkownik bez uprawnień sudo. Np.sudo -u root -i
Działa, alesudo -u git -i
nie działa.Aby nigdy nie poprosi bieżącego użytkownika o hasło, gdy dany użytkownik korzysta
sudo
zrobićspowoduje to utworzenie pliku o nazwie
/etc/sudoers.d/dont-prompt-<YOUR USERNAME>-for-sudo-password
i będzie oznaczać, że użytkownik, który uruchomił to polecenie, nie będzie monitowany o podanie hasła podczas wykonywaniasudo
polecenia. Nadal będziesz monitowany o podanie hasła w innych kontekstach, na przykład podczas instalowania programów z aplikacji graficznej Ubuntu Software .Zalety robienia tego w ten sposób w porównaniu z dodawaniem wiersza w
echo
poleceniu do/etc/sudoers
używaniasudo visudo
(jak sugerują inne odpowiedzi) to:/etc/sudoers
jest czasem modyfikowany przez aktualizacje systemu, podczas gdy pliki w nim/etc/sudoers.d
nie sąsudo visudo
metoda jest podatna na błąd (jak wynika z tego samego pytania), podczas kopiowania / wklejania polecenia jest znacznie trudniejsze do bałaganZgodnie z
sudo cat /etc/sudoers.d/README
tą funkcją (wstawianie dodatkowych plików sudoer/etc/sudoers.d
) jest domyślnie włączony od Debiana 1.7.2p1-1, który pojawił się pod koniec lat 90. (Ubuntu jest oparty na Debianie ).źródło
Jak Vince nie wspomniano w komentarzu , można skorzystać z tej linii:
(Różni się to od linii pokazanych w tych odpowiedziach i rozwiązało to problem).
źródło
supergroup
w odpowiedzi Fedira słowemsudo
. Co dalej, kolejny użytkownik grupywheel
? Lub jakakolwiek inna grupa, z której korzysta użytkownik?supergroup
w odpowiedzisudo
Fedira słowem .” Co? Wymianasupergroup
zesudo
w linii%supergroup ALL=(ALL) NOPASSWD:ALL
plonów%sudo ALL=(ALL) NOPASSWD:ALL
, nie%sudo ALL=NOPASSWD: ALL
.supergroup
zsudo
. To jest własna odpowiedź, a nie post dzięki lub kopia innej odpowiedzi. Ale tak, zgadzam się: jeśli nie zamierzają tego , dla większości użytkowników nie będzie to tak dobre, jak metody z innych odpowiedzi. (Ale, szczególnie biorąc pod uwagę pytanie, które brzmi „wszystkie polecenia”, a nie „wszyscy docelowi użytkownicy”, nie sądzę, że w efekcie nawet nie próbuje odpowiedzieć na zadane pytanie.)