Gdy pojawi się ekran wyboru rozruchu GRUB, wybierz Tryb odzyskiwania. (Jeśli się nie pojawi, naciśnij Shiftklawisz, gdy zobaczysz moduł ładujący GRUB na dole).
Powinien pojawić się czarny terminal, w tym momencie możesz uruchomić tę komendę (powinieneś mieć uprawnienia roota):
chmod 0440 /etc/sudoers
Alternatywnie
Będziesz musiał umieścić Ubuntu na LiveCD, uruchomić się na LiveCD, zamontować partycję Ubuntu na dysku twardym (Otwórz przeglądarkę plików, taką jak Nautilus, i kliknij swoją partycję Ubuntu; lub kliknij Miejsca -> Partycja xxGB / Twoja partycja Ubuntu „).
Następnie otwórz terminal w sesji LiveCD i wpisz te dwa polecenia:
cd /media/<name of permanent ubuntu partition>/etc
sudo chmod 0440 sudoers
Dodatkowe problemy
Jeśli wystąpią jakiekolwiek błędy (jak podano poniżej), postępuj zgodnie z monitami o błędy i odpowiednio dostosuj każdy plik, wykonując jeden z dwóch powyższych kroków:
sudo apt-get update sudo: /etc/sudoers.d/README to tryb 0777, powinien mieć 0440 sudo: / var / lib / sudo zapisywalny przez użytkownika niebędącego właścicielem (040777), powinien być trybem 0700 [sudo] hasło dla
Napraw, wykonując następujące czynności za pomocą:
Oba te polecenia powinny być odpowiednio używane w opisanych powyżej krokach. Zmienią uprawnienia do pliku związane z tym plikiem. 0440 da właścicielowi (rootowi) i grupie uprawnienia do odczytu, a 0700 da właścicielowi (rootowi) uprawnienia do odczytu, zapisu i wykonywania.
Mogę używać polecenia sudo, ale jestem ograniczony. sudo apt-get update sudo: /etc/sudoers.d/README is mode 0777, should be 0440 sudo: /var/lib/sudo writable by non-owner (040777), should be mode 0700 [sudo] password for
user20698
@Alex: ESC jest dla starszej wersji GRUB, prawda? Shift powinien być wciśnięty dla GRUB2.
Lekensteyn
@ user20698: sudopierwszy nie jest potrzebny , drugi należy wykonać z Live CD.
Lekensteyn
Jeśli sudoers ma wartość 0777, czy użytkownik nie powinien mieć możliwości uruchamiania chmod 0440 /etc/sudoersbez sudoers, ponieważ wszyscy mogą zapisywać sudoers?
Seppo Erviälä
2
@ Seppo: nie, tylko właściciel pliku może zmieniać uprawnienia do pliku.
Lekensteyn
16
sudow tej sytuacji jest zepsuty, ale pkexec(interfejs wiersza poleceń dla PolicyKit ) nadal działa, więc możesz to naprawić za pomocą jednego polecenia. Ponowne uruchomienie nie jest konieczne.
pkexec chmod 0440 /etc/sudoers
Zakłada się, że PolicyKit jest zainstalowany. Jeśli jest to system stacjonarny (a nie serwer bez GUI), to właśnie tak.
Dlaczego chmodzapisujesz niektóre pliki, 440a inne 0440? Nie powinieneś używać 0440równomiernie? I dlaczego zmieniasz uprawnienia /etc/sudoers.d/READMEpodczas korzystania ze pkexecsposobu, ale nie inaczej? A co z innymi możliwymi plikami /etc/sudoers.d?
Eliah Kagan
1
Co zrobiłeś, aby uzyskać te błędy?
Jeśli zrobiłeś: sudo chmod -R 777 /etcpotrzebujesz Live CD, aby to naprawić.
Uruchom komputer na Live CD i wybierz „Wypróbuj”
Zamontuj partycję Ubuntu (lub partycję zawierającą, /etcjeśli /etczainstalowano osobną partycję). Można to zrobić za pomocą przeglądarki plików, takiej jak Nautilus lub menu Miejsca
Otwórz terminal , przechodząc do Aplikacje => Akcesoria => Terminal
Określ folder swojej partycji Ubuntu, możesz wyświetlić zawartość zamontowanych partycji za pomocą ls -l /media. Być może ma nazwę ubuntulub disk. W następnych krokach założę ubuntu.
W terminalu ustaw domyślne uprawnienia ograniczające:
sudo find /media/ubuntu/etc -type f -exec chmod g-wx,o-rwx {} \;
sudo find /media/ubuntu/etc -type d -exec chmod g-w,o-rwx {} \;
Następnie użyj Live CD jako punktu odniesienia do przywracania uprawnień do plików. Poniższe polecenie zmieni uprawnienia do plików do /etc/media/ubuntuużywania /etcfolderu na Live CD jako punktu odniesienia. Zmieni tylko uprawnienia do plików ( -type f) i katalogów ( -type d) w tym samym systemie plików ( -xdev). Wszelkie błędy są zapisywane w ~/errors.logbłędach typu „nie znaleziono pliku” oznacza, że plik w systemie jest zainstalowany, ale nie można go znaleźć na Live CD. Polecenie z kroku 5 powinno ustawić dla niego odpowiednie uprawnienia, ale dla uzyskania najlepszych rezultatów lepiej zainstalować ponownie pakiety.
cd /media/ubuntu && sudo find etc -xdev \( -type f -o -type d \) -f -exec chmod --reference=/{} {} \; 2>~/errors.log
Teraz ~/errors.loggdzieś jest bezpieczny (np. Http://paste.ubuntu.com/ ), więc możesz dodać go jako komentarz do tej odpowiedzi, jeśli będziesz mieć problemy z aplikacjami.
W Ubuntu można najpierw uderzyć Ctrl+ Alt+ T, który otwiera terminal. Następnie możesz skopiować i wkleić poniższe polecenie za pomocą Ctrl+ Ci wkleić w terminalu za pomocą Ctrl+ Shift+ V.
/etc/sudoers.d/README
, błąd nadal może powiedziećsudo: /etc/sudoers is mode 0777, should be 0440
?Odpowiedzi:
Pierwsza opcja
Śledząc ten post :
Powinien pojawić się czarny terminal, w tym momencie możesz uruchomić tę komendę (powinieneś mieć uprawnienia roota):
Alternatywnie
Będziesz musiał umieścić Ubuntu na LiveCD, uruchomić się na LiveCD, zamontować partycję Ubuntu na dysku twardym (Otwórz przeglądarkę plików, taką jak Nautilus, i kliknij swoją partycję Ubuntu; lub kliknij Miejsca -> Partycja xxGB / Twoja partycja Ubuntu „).
Następnie otwórz terminal w sesji LiveCD i wpisz te dwa polecenia:
Dodatkowe problemy
Jeśli wystąpią jakiekolwiek błędy (jak podano poniżej), postępuj zgodnie z monitami o błędy i odpowiednio dostosuj każdy plik, wykonując jeden z dwóch powyższych kroków:
Napraw, wykonując następujące czynności za pomocą:
Oba te polecenia powinny być odpowiednio używane w opisanych powyżej krokach. Zmienią uprawnienia do pliku związane z tym plikiem. 0440 da właścicielowi (rootowi) i grupie uprawnienia do odczytu, a 0700 da właścicielowi (rootowi) uprawnienia do odczytu, zapisu i wykonywania.
źródło
sudo apt-get update sudo: /etc/sudoers.d/README is mode 0777, should be 0440 sudo: /var/lib/sudo writable by non-owner (040777), should be mode 0700 [sudo] password for
sudo
pierwszy nie jest potrzebny , drugi należy wykonać z Live CD.chmod 0440 /etc/sudoers
bez sudoers, ponieważ wszyscy mogą zapisywać sudoers?sudo
w tej sytuacji jest zepsuty, alepkexec
(interfejs wiersza poleceń dla PolicyKit ) nadal działa, więc możesz to naprawić za pomocą jednego polecenia. Ponowne uruchomienie nie jest konieczne.Zakłada się, że PolicyKit jest zainstalowany. Jeśli jest to system stacjonarny (a nie serwer bez GUI), to właśnie tak.
źródło
Uruchom komputer w trybie odzyskiwania, wybierz powłokę główną i:
Lub jeśli nie chcesz restartować, możesz użyć tej alternatywy:
zmieni to uprawnienie. Spróbuj, to zadziała.
źródło
chmod
zapisujesz niektóre pliki,440
a inne0440
? Nie powinieneś używać0440
równomiernie? I dlaczego zmieniasz uprawnienia/etc/sudoers.d/README
podczas korzystania zepkexec
sposobu, ale nie inaczej? A co z innymi możliwymi plikami/etc/sudoers.d
?Co zrobiłeś, aby uzyskać te błędy?
Jeśli zrobiłeś:
sudo chmod -R 777 /etc
potrzebujesz Live CD, aby to naprawić./etc
jeśli/etc
zainstalowano osobną partycję). Można to zrobić za pomocą przeglądarki plików, takiej jak Nautilus lub menu Miejscals -l /media
. Być może ma nazwęubuntu
lubdisk
. W następnych krokach założęubuntu
.W terminalu ustaw domyślne uprawnienia ograniczające:
Następnie użyj Live CD jako punktu odniesienia do przywracania uprawnień do plików. Poniższe polecenie zmieni uprawnienia do plików do
/etc/media/ubuntu
używania/etc
folderu na Live CD jako punktu odniesienia. Zmieni tylko uprawnienia do plików (-type f
) i katalogów (-type d
) w tym samym systemie plików (-xdev
). Wszelkie błędy są zapisywane w~/errors.log
błędach typu „nie znaleziono pliku” oznacza, że plik w systemie jest zainstalowany, ale nie można go znaleźć na Live CD. Polecenie z kroku 5 powinno ustawić dla niego odpowiednie uprawnienia, ale dla uzyskania najlepszych rezultatów lepiej zainstalować ponownie pakiety.~/errors.log
gdzieś jest bezpieczny (np. Http://paste.ubuntu.com/ ), więc możesz dodać go jako komentarz do tej odpowiedzi, jeśli będziesz mieć problemy z aplikacjami.źródło
W Ubuntu można najpierw uderzyć Ctrl+ Alt+ T, który otwiera terminal. Następnie możesz skopiować i wkleić poniższe polecenie za pomocą Ctrl+ Ci wkleić w terminalu za pomocą Ctrl+ Shift+ V.
źródło
Dla mnie musiałem dodać jeszcze jeden krok
pkexec
sugestii, w związku z tym miałem szczęście, że miałem dwie sesje ssh, kiedy popełniłem głupi błąd:echo $$
aby uzyskać PIDpkttyagent --process PID_FROM_STEP2
w terminalu 2pkexec chmod 0440 /etc/sudoers
pkexec chown root:root /etc/sudoers
źródło