Zainspirowany tym pytaniem ....
Jestem jedyną osobą korzystającą z mojego systemu z 12.04.
Za każdym razem wydawam sudo
polecenie; system prosi o podanie hasła użytkownika (które jest dobre na swój sposób).
Jednak myślałem; bez aktywacji konta root ; jak mogę wykonać polecenia sudo, które nie będą wymagały hasła użytkownika do uwierzytelnienia.
UWAGA: Chcę wykonać polecenie sudo bez uwierzytelniania za pomocą hasła; tylko wtedy, gdy są wykonywane przez terminal.
Nie chcę usuwać tej dodatkowej warstwy zabezpieczeń z innych funkcji, na przykład podczas korzystania z „Centrum oprogramowania Ubuntu” lub wykonywania skryptu bash poprzez przeciągnięcie pliku coś.sh do terminala.
command-line
password
sudo
root
Bhavesh Diwan
źródło
źródło
Odpowiedzi:
sudo -i
jest właściwą drogą, jeśli nie chcesz wpisywać hasła co 10 minut podczas modyfikowania systemu (lub innych systemów) i nie chcesz modyfikować żadnych plików systemowych.Nastąpi przełączenie na rootowanie przy użyciu
sudo
hasła użytkownika, gdy zamkniesz konsolę lub wpiszeszexit
się w normalnego użytkownika.źródło
exit
lub do zamknięcia okna emulatora terminala.Możesz skonfigurować,
sudo
aby nigdy nie pytać o hasło.Otwórz okno terminala i wpisz:
W dolnej części pliku dodaj następujący wiersz:
Gdzie
$USER
jest twoja nazwa użytkownika w twoim systemie? Zapisz i zamknij plik sudoers (jeśli nie zmieniłeś domyślnego edytora terminali (będziesz wiedział, jeśli masz), naciśnij ctl + x, aby wyjśćnano
i poprosi o zapisanie).Począwszy od Ubuntu 19.04, plik powinien teraz wyglądać mniej więcej tak
Następnie możesz pisać
sudo <whatever you want>
w oknie terminala bez pytania o hasło.Dotyczy to tylko korzystania z
sudo
polecenia w terminalu. Nadal pojawi się monit o podanie hasła, jeśli (na przykład) spróbujesz zainstalować pakiet z centrum oprogramowaniaźródło
sudo visudo
zamiast bezpośredniej edycji. Również zmiana uprawnień sudoers może się zablokować. Podczas edycji za pomocąvim
użyj:wq!
do zapisu plików tylko do odczytu i wyjdź z edytora. W ten sposób uprawnienia 644 nie są konieczne.sudo install crapware
, nie poprosi o hasło w tym przypadku i może zepsuć wszystko, co masz, i nie musisz być fizycznie obok komputera, aby rozpowszechniać skrypty podczas ostatniego sprawdzania. .. To tylko przykład.rm -rf ~
brudząc sporo rzeczy). Ogólnie rzecz biorąc, nie nazwałbym „poważnym zagrożeniem bezpieczeństwa” zwykłym usunięciem hasła z sudo.Limity czasu rootowania sudo są najłatwiejszym i najbezpieczniejszym sposobem na zrobienie tego. Przedstawię wszystkie przykłady, ale ostrzegam, że jest to bardzo ryzykowne, jakkolwiek to zrobisz, chociaż ten sposób jest znacznie bezpieczniejszy:
Spowoduje to otwarcie edytora i skierowanie go do pliku sudoers - Ubuntu domyślnie ma wartość nano, inne systemy używają Vi. Jesteś teraz superużytkownikiem edytującym jeden z najważniejszych plików w systemie. Bez stresu!
(Szczegółowe instrukcje Vi zapisane w (vi!) . Zignoruj je, jeśli używasz nano.)
Użyj klawiszy strzałek, aby przejść na koniec
Defaults
linii.(vi!) naciśnij klawisz A (wielkie „a”), aby przejść na koniec bieżącej linii i przejść do trybu edycji (dołącz po ostatnim znaku w linii).
Teraz wpisz:
gdzie X to limit czasu w minutach. Jeśli podasz 0, zawsze będziesz pytany o hasło. Jeśli podasz wartość ujemną, limit czasu nigdy nie wygaśnie. Np
Defaults env_reset,timestamp_timeout=5
.(vi!) naciśnij Escape, aby powrócić do trybu poleceń. Teraz, jeśli jesteś zadowolony ze swojej edycji, wpisz,
:w
Enteraby zapisać plik i:q
Enterwyjść z vi. Jeśli popełniłeś błąd, być może najłatwiejszym sposobem jest powtórzenie od początku, wyjście bez zapisywania (naciśnij, Escapeaby przejść do trybu poleceń), a następnie wpisz: q! Enter.Naciśnij Ctrl+ X, a następnie Y, Enteraby zapisać plik i wyjść z nano.
Możesz przeczytać strony podręczników sudoers i vi, aby uzyskać dodatkowe informacje.
Zresetuj wartość limitu czasu za pomocą:
Te instrukcje mają usunąć monit o podanie hasła podczas korzystania z polecenia sudo. Polecenie sudo nadal będzie jednak musiało być użyte do uzyskania dostępu do roota.
Edytuj plik sudoers
Otwórz okno terminala. Wpisz
sudo visudo
. Dodaj następujący wiersz do END pliku (jeśli nie na końcu, można go anulować późniejszymi wpisami):Zamień na
<username>
swoją nazwę użytkownika (bez<>
). Zakłada się, że Ubuntu utworzyło grupę o tej samej nazwie co nazwa użytkownika, co jest typowe. Możesz na przemian używać użytkowników grupy lub dowolnej innej takiej grupy, w której się znajdujesz. Upewnij się tylko, że jesteś w tej grupie. Można to sprawdzić, przechodząc do opcji System -> Administracja -> Użytkownicy i grupy.Przykład:
Wpisz ^ X ( Ctrl+ X), aby wyjść. Powinno to poprosić o opcję zapisania pliku, wpisz Y, aby zapisać.
Wyloguj się, a następnie zaloguj ponownie. Powinno to umożliwić uruchomienie polecenia sudo bez pytania o hasło.
Konto root
Włączanie konta root
Włączenie konta root jest rzadko konieczne. Prawie wszystko, co musisz zrobić jako administrator systemu Ubuntu, można zrobić za pomocą sudo lub gksudo. Jeśli naprawdę potrzebujesz trwałego logowania do roota, najlepszą alternatywą jest symulacja powłoki rootowania przy użyciu następującego polecenia:
Jeśli jednak musisz włączyć logowanie roota, możesz to zrobić w następujący sposób:
Ponowne wyłączenie konta root
Jeśli z jakiegoś powodu włączyłeś swoje konto root i chcesz je ponownie wyłączyć, użyj następującego polecenia w terminalu:
Systemowa grupa sudo
Wyloguj się, a następnie zaloguj ponownie.
Zresetuj limit czasu sudo
Możesz upewnić się, że sudo poprosi o hasło następnym razem, uruchamiając:
źródło
sudo env EDITOR=/bin/nano visudo
Do niezawodnej edycjisudoers
w nano. (do ustawienia edytora można także użyć aktualizacji-alternatyw)Preferowanym sposobem udzielania indywidualnych (lub grupowych) uprawnień byłoby dodawanie plików
/etc/sudoers.d
To oddziela lokalne zmiany od domyślnych zasad i oszczędza czas na wypadek zmiany pliku sudoers dystrybucji.
Aby ustawić zalogowanego użytkownika jako sudoer i
sudo
nie monitować go o hasło, użyjspowoduje to utworzenie pliku o nazwie
/etc/sudoers.d/$USER
(gdzie$USER
jest nazwa użytkownika, do którego użytkownik był zalogowany, tak jak podczas uruchamiania tego polecenia), co wyjaśni, którzy użytkownicy mają uprawnienia.Jeśli chcesz to zrobić dla innego użytkownika, po prostu zastąp oba wystąpienia
$USER
inną nazwą użytkownika w powyższym poleceniu.Podobnie jeden plik może służyć do zarządzania wieloma dyrektywami:
Zobacz
/etc/sudoers.d/README
iman sudoers
więcej informacji.źródło
tee
polecenia.sudo sh -c 'echo "$(logname) ALL=(ALL:ALL) NOPASSWD: ALL" > /etc/sudoers.d/$(logname)'
sudo chmod 440 /etc/sudoers.d/$(logname)
sudo ... >file
powłoce przekierowanie jest wykonywane w oryginalnej powłoce, więc może działać tylko w powłoce głównej.echo "username ALL=(ALL:ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/username
Przyjemny jeden wiersz do usuwania monitów sudo dla bieżącego użytkownika
źródło
echo "$USER ALL=(ALL:ALL) NOPASSWD: ALL" | sudo env EDITOR="tee -a" visudo
tylko w końcu (a nawet nie będzie potrzebny w domyślnej konfiguracji, IIRC).visudo
sudo
env
sudo visudo
) podczas testowania wyniku (przy wciąż otwartym edytorze), dla tych nowych użytkowników, którzy mogą ulec pokusie wypróbowania tego „jednowierszowego”.sudo chmod 440 /etc/sudoers.d/$(logname)
poprawić uprawnienia do plików, jak podano w pliku README w tym katalogu.Oczywiście to, co chcesz zrobić, nie jest zalecane. Po chwili wchodzenie
sudo
staje się tak automatyczne, że zmniejsza się jego przydatność.Innym podejściem jest pozostawienie pliku sudoers w niezmienionej postaci i, robiąc coś skomplikowanego dla setek setek serwerów, wejdź
sudo bash
. To da ci powłokę, która będzie uwierzytelniona jako root, dopóki jej nie opuścisz.źródło
sudo -s
lubsudo -i
prawdopodobnie oba są lepszymi pomysłami niżsudo bash
, ponieważ zapewniają, że środowisko jest zdrowe i rzeczy.sudo
poleceń (szczególnie o tymsudo pip ...
) wymagasudo -H
(ustaw HOME), aby polecenie działało poprawnie. W innych przypadkachsudo -E
może być wymagane (zachowanie env). Bieganiesudo bash
prawdopodobnie będzie działać w większości przypadków, ale nie we wszystkich, a gdy nie, nie będzie jasne, dlaczego.Od superużytkownika pochodzi dobra odpowiedź:
Użyj przełącznika -S, który odczytuje hasło ze STDIN:
Zastąp
<password>
swoim hasłem.źródło
echo
nim, aby nie pojawiło się ono w historii?Jedna wkładka
sudo sed -i /etc/sudoers -re 's/^%sudo.*/%sudo ALL=(ALL:ALL) NOPASSWD: ALL/g'
źródło
Jest to jedno-liniowe rozwiązanie, które zmienia również uprawnienia do plików, jak podano w
/etc/sudoer.d/README
:źródło
Rozwijanie pomysłu @upteryx.
W ten sposób zaimplementowałem użytkownika innego niż root, bez hasła, w efemerycznym obrazie Docker do użytku w potoku CICD:
źródło