Wie bereite ich eine temporäre Root-Anmeldung vor, bevor ich Sudoers bearbeite?

Ich möchte meine Sudo-Fähigkeiten auf meinem Mac ändern, um unter anderem Passwortabfragen beim Starten von Postgres zu vermeiden. Ich lese Michael Lucas 'Sudo Mastery und habe im Allgemeinen eine gute Vorstellung davon, wie man die Einträge ändert und visudo verwendet .

Michael weist jedoch darauf hin, dass das Bearbeiten von Sudoern , unabhängig davon, was Sie tun, von Natur aus unsicher ist und Sie von Ihrem Computer ausschließen kann. Und er tut alles, um die Leute zu warnen, einen Root-Login zu aktivieren, insbesondere unter macOS. Sobald Ihre sudoers- Datei in Ordnung ist und Sie dies mit einem Neustart bestätigt haben, können Sie den Root jederzeit deaktivieren.

Ich meine, wenn es nur das Kopieren der ursprünglichen Sudoers ist und dann, wenn die Dinge explodieren, sicher booten, zum Terminal gehen und die gesicherten Sudoers wiederherstellen , ist das in Ordnung. Aber ich möchte 110 % sicher sein, dass ich nicht ausgesperrt werde.

Hinweis: Ich könnte mich sehr gut zuerst an den Sudoern einer Linux-VM versuchen, aber ich möchte immer noch einen Fluchtweg haben.

Unter macOS Mojave, unter Berücksichtigung der verschiedenen absichtlichen Sicherheitsbeschränkungen von Apple in Bezug auf sicheres Booten und SIP, was sind die einfachsten Schritte, um eine temporäre Hintertür für die Root-Anmeldung zu erstellen ?

Dies ist das großartigste Setup für eine YAGNI-Antwort aller Zeiten. Willkommen bei macOS mit APFS-Snapshots, Wiederherstellung und Internetwiederherstellung.
Ich bin zuversichtlich, dass Sie alles rechtzeitig bekommen werden. Erstaunliche Antworten hier bereits, keine Eile, tiefer einzutauchen, als Sie möchten. Schade, dass bisher nur eine weitere Person +1 gegeben hat. Tolle Frage.
ok, gut, txs @bmike. Um ehrlich zu sein, dachte ich ursprünglich, Ihr Kommentar sei abfällig gemeint, aber ich glaube, ich habe Ihre Bedeutung falsch verstanden. Dieses Forum scheint zwischen normalen Benutzern von macOS und einigen Terminal-/Unix-Benutzern gut aufgeteilt zu sein, aber sudoers ist für Leute, die keine Systemadministratoren sind, wahrscheinlich ziemlich obskur, daher gehe ich davon aus, dass es eine eher unbemerkte Frage bleiben wird.
Sie haben den Sweet Spot getroffen - es gibt eine Menge Leute, die Ihre Frage gerne beantworten werden - super herzliches Willkommen. Ich könnte sogar eine völlige Nicht-Antwort hinzufügen, die erklärt, dass Sie nicht root brauchen, um alles zu tun, was Sie fragen, aber kontaktieren Sie mich im Ask Different Chat , wenn Sie neugierig auf diesen Weg sind - lassen Sie uns die Antworten, die Sie haben, fürs Erste verlassen ... Ich meinte es ernst mit großartig.
Bitte fügen Sie die Lösung nicht in die Frage ein, sondern posten Sie sie stattdessen als Antwort unten!

Antworten (3)

Es ist keine Hintertür erforderlich, tatsächlich ist wirklich nichts (nicht einmal ein Backup) erforderlich, um die sudoers- Datei zu bearbeiten. Sie können sich nicht von Ihrem Computer aussperren lassen.

Ein Backup ( sudo cp /etc/sudoers /etc/sudoers.bak) ist jedoch bequemer, da Sie es einfach mit einem Einzeiler wiederherstellen können.

Gründe dafür:

  1. sudoers ist nicht erforderlich, um einen Benutzer bei der Anmeldung zu authentifizieren
  2. sudoers ist nicht erforderlich, um den Root-Benutzer mit dem Verzeichnisdienstprogramm zu aktivieren – nur ein funktionierendes Administratorkonto. Die Authentifizierung erfolgt mit den lokalen OD-Diensten.
  3. Wenn Sie eine funktionierende Internetverbindung oder einen funktionierenden lokalen Wiederherstellungsmodus (auch bekannt als Wiederherstellungspartition) haben, können Sie die Standard- Sudoers- Datei jederzeit wiederherstellen, entweder von einer Online-Ressource (z. B. Pastebin oder Github) oder wie bereits erwähnt: bequemer von einer lokalen Sicherungsdatei.
  4. Wenn Sie einen zweiten Mac und ein passendes Kabel haben, können Sie den "kaputten" Mac immer im Target Disk Mode starten und eine funktionierende Sudoers- Datei vom zweiten Mac übertragen.

Getestet in einer Mojave-VM von:

  1. Entfernen Sie einfach die Sudoers-Datei vollständig
  2. Bearbeiten von Sudoern mit nanound Auskommentieren der Root- und %admin- Zeile, Ändern des Besitzes von Sudoern auf 501:staff und Erstellen von 777

Nachweisen:

Geben Sie hier die Bildbeschreibung ein

und all diese Aktivitäten zur Aktivierung des Root-Logins wurden ausgeführt, nachdem Sie Ihre Sudoers atomisiert haben , richtig? Ich habe die Root-Benutzeranmeldung getestet, aber natürlich ohne zuerst meine eigenen Sudoer zu vermasseln. Ich schätze, ich bitte um Bestätigung, dass ich das Verzeichnisdienstprogramm nicht verwenden muss, um die Root-Anmeldung im Voraus einzurichten . Ich kann es tun , nachdem ich Sudoers durcheinander gebracht habe, richtig? Ja, es hört sich so an, als hätten Sie genau das gesagt, aber seien Sie immer noch vorsichtig, dass ich die Abfolge der Ereignisse in Ihrem Test nicht falsch interpretiere.
@JLPeyret Genau, Sie können root aktivieren, nachdem Sie Ihre Sudoers-Datei geschraubt/gelöscht haben - auch nach einem Neustart, Herunterfahren usw. 1. ( rm sudoers) war ein Szenario 2. ( nano/chmod/chown sudoers) war ein anderes Szenario.
exzellent. Sie und @Gordon Davidson waren beide großartig. Sie erhalten es für den Screenshot und vor allem den Test. senden.

Mit gebührendem Respekt vor den anderen Leuten, die bisher Vorschläge gemacht haben, bieten sie weitaus kompliziertere Ideen als nötig.

Hier ist die einfache Wahrheit: Ab mindestens 10.11 müssen Sie Ihre /etc/sudoersDatei nicht mehr anfassen. Keiner. Lass es einfach in Ruhe.

Schauen Sie sich das Ende der /etc/sudoersDatei an und Sie werden diese Zeilen sehen:

## Read drop-in files from /private/etc/sudoers.d
## (the '#' here does not indicate a comment)
#includedir /private/etc/sudoers.d

Das bedeutet, dass Sie Dateien einfügen /etc/sudoers.d/und sudolesen können , als wären sie in der Hauptdatei, sudoersohnesudoers jemals die offizielle Datei berühren zu müssen .

(In einigen Versionen von macOS müssen Sie den Ordner möglicherweise über erstellen, sudo mkdir /etc/sudoers.d/aber in neueren Versionen ist er bereits vorhanden.)

Sie können die Datei wie folgt erstellen/bearbeiten:

sudo visudo -f /etc/sudoers.d/foo

Wenn Sie den Editor verlassen, visudowird die Syntax für Sie überprüft, aber selbst wenn Sie die Warnungen ignorieren und es trotzdem speichern, sudowird jede Datei ignoriert, /etc/sudoers.d/die nicht die richtige Syntax hat, aber Ihre Hauptdatei sudoersbleibt intakt und funktioniert.

Sie können ausführen sudo visudo -c, um die Syntax beliebiger/aller sudoersDateien zu überprüfen und um anzuzeigen, dass sie gelesen/eingeschlossen werden.

Dateien in /etc/sudoers.d/sollten Root gehören, sie sollten chmod 440keine Dateierweiterung haben (dh „foo“ ist ok, aber nicht „foo.txt“). Wenn Sie die Datei damit erstellen, visudowerden automatisch die richtigen Berechtigungen erteilt.

(Oh, und Sie müssen es auf einem Mac nicht aktivieren root. Ich benutze seit 2003 einen und habe alle möglichen seltsamen Sachen gemacht, aber ich habe ihn nie gebraucht.)


Wenn Sie es jemals schaffen, Ihre Datei zu vermasseln /etc/sudoers, können Sie BBEdit verwenden , um die Datei zu bearbeiten. Es wird Sie nach Ihrem Admin-Passwort fragen, aber sobald es eingegeben wurde, kann es die Datei bearbeiten und die anstößige Zeile entfernen. Aber Sie sollten die Datei trotzdem niemals bearbeiten /etc/sudoers.

Sie wissen, wenn Sie darüber nachdenken, gibt es wahrscheinlich auch den Vorteil, dass zukünftige von Apple gelieferte Änderungen an /etc/sudoers selbst Ihre sudo-bezogenen Anpassungen nicht beeinträchtigen werden.

macOS ist in dieser Hinsicht etwas sicherer als die meisten Unix-Betriebssysteme, da es Pfade zum Rooten hat, die nicht von sudo. Wenn Sie /etc/sudoers durcheinanderbringen, gibt es mehrere Möglichkeiten zur Wiederherstellung (auch ohne vorherige Vorbereitung, abgesehen von der Sicherung von /etc/sudoers):

  • Führen Sie das Verzeichnisdienstprogramm aus (es ist in /System/Library/CoreServices/Applications versteckt, aber Spotlight kann es finden). Klicken Sie auf das Vorhängeschloss und authentifizieren Sie sich, wählen Sie dann Bearbeiten > Root-Benutzer aktivieren und geben Sie ein Root-Passwort ein. Wenn Sie mit root fertig sind, können Sie es auf die gleiche Weise deaktivieren.

  • Sie können AppleScript verwenden, do shell script ... with administrator privilegesum Shell-Befehle als root auszuführen. Öffnen Sie /Applications/Utilities/Script Editor und geben Sie etwa Folgendes ein:

    do shell script "cp /etc/sudoers.bkp /etc/sudoers" with administrator privileges
    

    ... und drücken Sie die Schaltfläche Ausführen (nach rechts zeigendes Dreieck) in der Symbolleiste. Authentifizieren Sie sich, wenn Sie dazu aufgefordert werden.

Dann gibt es noch die einfache und universelle Methode: Bevor Sie mit /etc/sudoers herumspielen, führen Sie aus, sudo -sum eine Root-Shell zu öffnen, und lassen Sie sie geöffnet , damit Sie sie bei Bedarf zum Wiederherstellen verwenden können. Natürlich wird es einen Neustart nicht überleben, aber Sie können vor dem Neustart grundlegende Tests an Ihren neuen /etc/sudoers durchführen.