błąd sudo, to tryb 0777, powinien być 0440

26

Otrzymuję błędy sudo, jak mogę naprawić ten błąd?

sudo: /etc/sudoers is mode 0777, should be 0440
sudo: no valid sudoers sources found, quitting 
użytkownik20698
źródło
Jak zauważyli wcześniej użytkownicy, użycie „chmod 0440 / etc / sudoers”, gdy plik sudoers.d / README ma niewłaściwy chmod NIE DZIAŁA.
kentfx
Czy sugerujesz, że gdy problem dotyczy uprawnień /etc/sudoers.d/README, błąd nadal może powiedzieć sudo: /etc/sudoers is mode 0777, should be 0440?
Eliah Kagan,

Odpowiedzi:

26

Pierwsza opcja

Śledząc ten post :

  1. Uruchom ponownie komputer
  2. 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).
  3. 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ą:

chmod 0440 /etc/sudoers.d/README
chmod 0700 /var/lib/sudo

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.

Alex Stevens
źródło
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.

Eliah Kagan
źródło
4

Uruchom komputer w trybie odzyskiwania, wybierz powłokę główną i:

chmod 0440 /etc/sudoers

Lub jeśli nie chcesz restartować, możesz użyć tej alternatywy:

pkexec chmod 0440 /etc/sudoers
pkexec chmod 0440 /etc/sudoers.d/README

zmieni to uprawnienie. Spróbuj, to zadziała.

Atul Makwana
źródło
1
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ć.

    1. Uruchom komputer na Live CD i wybierz „Wypróbuj”
    2. 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
    3. Otwórz terminal , przechodząc do Aplikacje => Akcesoria => Terminal
    4. 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.
    5. 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 {} \;
      
    6. 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
      
    7. 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.
Lekensteyn
źródło
1

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.

pkexec chmod 0440 /etc/sudoers
K. Kilian Lindberg
źródło
0

Dla mnie musiałem dodać jeszcze jeden krok pkexecsugestii, w związku z tym miałem szczęście, że miałem dwie sesje ssh, kiedy popełniłem głupi błąd:

  1. Otwórz 2 terminale
  2. W terminalu 2 biegnij, echo $$aby uzyskać PID
  3. Uruchom pkttyagent --process PID_FROM_STEP2w terminalu 2
  4. W terminalu 1 uruchom pkexec chmod 0440 /etc/sudoers
  5. W moim przypadku musiałem także biec pkexec chown root:root /etc/sudoers
4oo4
źródło