Sudo-Fehler, ist Modus 0777, sollte 0440 sein

26

Ich erhalte Sudo-Fehler. Wie behebe ich diesen Fehler?

sudo: /etc/sudoers is mode 0777, should be 0440
sudo: no valid sudoers sources found, quitting 
user20698
quelle
Wie Benutzer zuvor bemerkt haben, funktioniert die Verwendung von "chmod 0440 / etc / sudoers", wenn die Datei sudoers.d / README das falsche chmod enthält, NICHT.
Kentfx
Schlagen Sie vor /etc/sudoers.d/README, dass der Fehler immer noch angezeigt wird , wenn das Problem bei den Berechtigungen liegt sudo: /etc/sudoers is mode 0777, should be 0440?
Eliah Kagan

Antworten:

26

Erste Wahl

Im Anschluss an diesen Beitrag :

  1. PC neu starten
  2. Wenn der GRUB-Startauswahlbildschirm angezeigt wird, wählen Sie den Wiederherstellungsmodus. (Wenn es nicht hochkommt, drücken Sie die ShiftTaste, wenn Sie den GRUB-Lader unten sehen).
  3. Es sollte ein schwarzes Terminal erscheinen, an dieser Stelle können Sie diesen Befehl ausführen (Sie sollten Root-Rechte haben):

    chmod 0440 /etc/sudoers
    

Alternative

Sie müssen Ubuntu auf eine LiveCD laden, die LiveCD starten, Ihre Ubuntu-Partition auf der Festplatte mounten (Öffnen Sie einen Dateibrowser wie Nautilus und klicken Sie auf Ihre Ubuntu-Partition; oder klicken Sie auf Orte -> "xxGB-Partition / Ihre Ubuntu-Partition ").

Öffnen Sie dann ein Terminal in der LiveCD-Sitzung und geben Sie diese beiden Befehle ein:

cd /media/<name of permanent ubuntu partition>/etc
sudo chmod 0440 sudoers

Zusätzliche Probleme

Wenn Fehler auftreten (siehe unten), befolgen Sie die Fehleraufforderung und passen Sie jede Datei entsprechend an, indem Sie einen der beiden oben genannten Schritte ausführen:

sudo apt-get update sudo: /etc/sudoers.d/README ist mode 0777, sollte 0440 sein sudo: / var / lib / sudo beschreibbar für Nicht-Besitzer (040777), sollte mode 0700 sein [sudo] Passwort für

Fix durch Befolgen mit:

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

Beide Befehle sollten mit den oben beschriebenen Schritten verwendet werden. Sie ändern die dieser Datei zugeordneten Dateiberechtigungen. 0440 gibt dem Eigentümer (root) und der Gruppe Leseberechtigungen und 0700 gibt dem Eigentümer (root) Lese-, Schreib- und Ausführungsberechtigungen.

Alex Stevens
quelle
Ich kann den sudo Befehl aber nur eingeschränkt verwenden. 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 ist für GRUB Legacy richtig? Die Umschalttaste sollte für GRUB2 gedrückt werden.
Lekensteyn
@ user20698: du brauchst sudofür den ersten nicht, der zweite sollte von einer Live CD gemacht werden.
Lekensteyn
Wenn sudoers 0777 ist, sollte der Benutzer nicht in der Lage sein, chmod 0440 /etc/sudoersohne sudo zu laufen, da sudoers von jedem geschrieben werden kann?
Seppo Erviälä
2
@Seppo: Nein, nur der Eigentümer einer Datei kann die Dateiberechtigungen ändern.
Lekensteyn
16

sudoist in dieser Situation fehlerhaft , aber pkexec(das Befehlszeilen-Frontend für PolicyKit ) funktioniert immer noch, sodass Sie es mit einem einzigen Befehl beheben können. Ein Neustart ist nicht erforderlich.

pkexec chmod 0440 /etc/sudoers

Dies setzt voraus, dass PolicyKit installiert ist. Wenn es sich um ein Desktop-System handelt (und nicht um einen Server ohne GUI), ist dies der Fall.

Eliah Kagan
quelle
4

Booten Sie in den Wiederherstellungsmodus, wählen Sie die Root-Shell und:

chmod 0440 /etc/sudoers

Oder wenn Sie nicht neu starten möchten, können Sie diese Alternative verwenden:

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

es wird die Erlaubnis ändern. Probieren Sie es aus, es wird funktionieren.

Atul Makwana
quelle
1
Warum chmodgibst du einige Dateien an 440und andere an 0440? Sollten Sie nicht 0440einheitlich verwenden? Und warum ändern Sie Berechtigungen, /etc/sudoers.d/READMEwenn Sie die pkexecArt und Weise verwenden, aber nicht anders? Und was ist mit anderen möglichen Dateien in /etc/sudoers.d?
Eliah Kagan
1

Was haben Sie getan, um diese Fehler zu erhalten?

  • Wenn Sie dies getan haben sudo chmod -R 777 /etc, benötigen Sie eine Live-CD, um dies zu reparieren.

    1. Booten Sie eine Live-CD und wählen Sie "Try it"
    2. Mounten Sie Ihre Ubuntu-Partition (oder die Partition, die enthält, /etcwenn Sie /etceine separate Partition angelegt haben). Dies kann mit einem Dateibrowser wie Nautilus oder dem Menü Orte erfolgen
    3. Öffnen Sie ein Terminal, indem Sie zu Applications => Accessories => Terminal gehen
    4. Bestimmen Sie den Ordner Ihrer Ubuntu-Partition, indem Sie den Inhalt der gemounteten Partitionen auflisten ls -l /media. Möglicherweise heißt es ubuntuoder disk. In den nächsten Schritten gehe ich davon aus ubuntu.
    5. Legen Sie im Terminal standardmäßig restriktive Berechtigungen fest:

      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. Verwenden Sie als Nächstes die Live-CD als Referenzpunkt für die Wiederherstellung von Dateiberechtigungen. Der folgende Befehl ändert die Dateiberechtigungen für die /etc/media/ubuntuVerwendung des /etcOrdners auf der Live-CD als Referenzpunkt. Es werden nur Berechtigungen für Dateien ( -type f) und Verzeichnisse ( -type d) im selben Dateisystem ( -xdev) geändert . Alle Fehler werden in ~/errors.logFehler wie "Datei nicht gefunden" geschrieben. Dies bedeutet, dass eine Datei auf dem System installiert ist, aber nicht auf der Live-CD gefunden wird. Der Befehl aus Schritt 5 sollte die richtigen Berechtigungen dafür festlegen. Um jedoch die besten Ergebnisse zu erzielen, sollten Sie die Pakete neu installieren.

      cd /media/ubuntu && sudo find etc -xdev \( -type f -o -type d \) -f -exec chmod --reference=/{} {} \; 2>~/errors.log
      
    7. Jetzt sicher ~/errors.logirgendwo (wie http://paste.ubuntu.com/ ), damit Sie es als Kommentar zu dieser Antwort hinzufügen können, falls Sie Probleme mit Anwendungen haben.
Lekensteyn
quelle
1

In Ubuntu können Sie zuerst Ctrl+ Alt+ Tdrücken, um das Terminal zu öffnen. Danach können Sie den folgenden Befehl mit Ctrl+ kopieren Cund im Terminal mit Ctrl+ Shift+ einfügen V.

pkexec chmod 0440 /etc/sudoers
K. Kilian Lindberg
quelle
0

Für mich hatte ich einen weiteren Schritt das die hinzuzufügen pkexecVorschläge pro diesem , ich hatte das Glück , dass ich zwei SSH - Sitzungen haben , passiert ist, als ich die dummen Fehler gemacht:

  1. 2 Klemmen öffnen
  2. Führen Sie echo $$in Terminal 2 aus, um die PID abzurufen
  3. Führen Sie pkttyagent --process PID_FROM_STEP2in Terminal 2
  4. Führen Sie in Terminal 1 aus pkexec chmod 0440 /etc/sudoers
  5. In meinem Fall musste ich auch rennen pkexec chown root:root /etc/sudoers
4oo4
quelle