Wie erreiche ich den /etc-Ordner von CD /Macintosh/HD?

Ich verwende Monterey macOS v12.3.

Weißt du, wie ich den /etcOrdner aus dem finden kann cd /Macintosh/ HD?

Ich habe meine beschädigt sudoersund möchte sie im Einzelbenutzermodus ändern, aber ich kann den Pfad nicht erreichen. Ich habe folgendes versucht, auf der Suche nach /etc.

 cd /Macintosh/ HD/System/Volumes/Data
 cd /Macintosh/ HD/System/private

Ich habe dieses Thema gelesen, aber es gab keine Ahnung, wie ich es erreichen könnte: Was ist /System/Volumes/Data?

Unten ist der Text aus der derzeit geschlossenen Frage , die bei Stack Overflow gestellt wurde.

Titel: Ich habe meine Sudoers-Datei auf dem MAC beschädigt – wie kann ich sie im Einzelbenutzermodus ändern?

Aus Versehen habe ich meine sudoersDatei beschädigt. Ich habe es geändert und ein Wort falsch geschrieben, das die Datei beschädigt hat.

Ich schrieb NOPASSEDstatt NOPASSWD.

In der Zwischenzeit kann ich es nicht mehr bearbeiten.

Ich verwende ein MacBook Pro (16 Zoll, 2021) mit macOS 12.3.

Ich habe im Einzelbenutzermodus neu gestartet und das Terminal geöffnet, aber ich kann nicht auf das Verzeichnis zugreifen, um die Datei zu ändern.

Dieses Protokoll unten stammt vom normalen Terminal macOS, nicht aus dem Einzelbenutzermodus.
oahmed@oahmed-mac /etc % ls -l | grep sudo
-r--r-----   1 root wheel      257 26 Feb 02:05 sudo_lecture
-r--r-----   1 root wheel     1573  2 Feb 12:18 sudoers
drwxr-xr-x   2 root wheel       64 26 Feb 02:05 sudoers.d
oahmed@oahmed-mac /etc % more sudoers
sudoers: Permission denied
oahmed@oahmed-mac /etc % sudo vi sudoers
/etc/sudoers:56:34: syntax error
%admin      ALL = (ALL) NOPASSED: ALL
                             ^
Password:
Sorry, user oahmed is not allowed to execute '/usr/bin/vi sudoers' as root on oahmed-mac.

 

Ich glaube, /Macintosh/ HDsollte sein /Macintosh\ HD. Ist dies das, was Sie in ein Terminal-Anwendungsfenster eingegeben haben oder nur als Sie Ihre Frage eingegeben haben?
Ich würde einfach BBEdit herunterladen und die Datei damit bearbeiten -- es kann als root bearbeitet werden , ohne durchzugehen sudo.
@GordonDavisson: Haben Sie versucht, mit BBEdit zu bearbeiten sudoers. Ich konnte mit hosts, aber nicht sudoers. Ich musste dem Benutzer Schreibzugriff hinzufügen sudoers, dann konnte ich. Das kann der OP aber nicht, da er es nicht nutzen kann sudo. Ich habe mich an die hier gegebenen Anweisungen gehalten .
Das Hinzufügen von NOPASSWD ist eine schlechte Idee und Sie sollten es nicht tun.
Interessant; Ich hatte nicht versucht, /etc/sudoers speziell zu bearbeiten, aber ich habe es gerade getan und ich erhalte das gleiche Ergebnis (selbst nachdem ich BBedit "Vollzugriff auf die Festplatte" gewährt habe). Ich bin mir nicht sicher, was das verursacht, aber ich ziehe die Empfehlung zurück.
Hast du die Datei ohne bearbeitet visudo? visudoist der Befehl, den Sie immer verwenden sollten, um sudoers speziell zu bearbeiten , da er vor dem Ersetzen der alten Dateien nach Syntaxfehlern sucht und verhindert, dass Ihr System gemauert wird ...
Ich habe mit normal bearbeitet.

Antworten (4)

Sie müssen nicht in den Einzelbenutzermodus booten, um Ihren Fehler zu beheben. Sie müssen lediglich Ihre Benutzer-ID auf Superuser ( root) umstellen. Unter normalem Unix wäre der Befehl su, dieser Befehl funktioniert jedoch nicht wie erwartet, bis Sie den rootBenutzer aktivieren. Das Verfahren ist unten angegeben.

Aktivieren Sie den rootBenutzer

Beachten Sie, dass das Schlosssymbol ähnlich wie das unten gezeigte Bild aussehen sollte.

Sperrsymbol

Die Schritte sind unten angegeben.

  1. Wählen Sie das Apple-Menü () > Systemeinstellungen und klicken Sie dann auf Benutzer & Gruppen (oder Konten).
  2. Klicken Sie auf das Schlosssymbol und geben Sie dann einen Administratornamen und ein Kennwort ein.
  3. Klicken Sie auf Anmeldeoptionen.
  4. Klicken Sie auf Beitreten (oder Bearbeiten).
  5. Klicken Sie auf Verzeichnisdienstprogramm öffnen.
  6. Klicken Sie im Fenster „Verzeichnisdienste“ auf das Schlosssymbol und geben Sie dann einen Administratornamen und ein Kennwort ein.
  7. Wählen Sie in der Menüleiste im Verzeichnisdienst „Bearbeiten“ > „Root-Benutzer aktivieren“ und geben Sie dann das Kennwort ein, das Sie für den rootBenutzer verwenden möchten.
  8. Beenden Sie die Systemeinstellungen. Lassen Sie das Fenster „Verzeichnisdienste“ der Einfachheit halber geöffnet.

Korrigieren Sie die sudoersDatei

Fahren Sie mit den folgenden Schritten fort.

  1. Gehen Sie zu einem Terminal-Anwendungsfenster und geben Sie den Befehl ein su. Geben Sie das rootPasswort des Benutzers ein, wenn Sie dazu aufgefordert werden.
  2. Sobald Sie der rootBenutzer sind, nehmen Sie die erforderliche Korrektur an der sudoersDatei vor.
  3. Wenn es gesperrt ist, klicken Sie auf das Schlosssymbol im Fenster „Verzeichnisdienste“ und geben Sie dann einen Administratornamen und ein Kennwort ein.
  4. Wählen Sie in der Menüleiste im Verzeichnisdienst „Bearbeiten“ > „Root-Benutzer deaktivieren“.
  5. Beenden Sie das Verzeichnisdienstprogramm.

Verweise

Diese Option hat bei mir funktioniert, vielen Dank
Omar: Wenn eine Antwort für Sie funktioniert hat, sollten Sie die Antwort akzeptieren. Dies lässt andere wissen, dass eine Lösung gefunden wurde. Außerdem erscheint neben der Antwort ein grünes Häkchen.
Tut mir leid, ich habe es gerade getan, ich bin jetzt beim Stapelüberlauf :)

Beim Booten im Einzelbenutzermodus können die folgenden Meldungen beobachtet werden.

Um auf das /etcVerzeichnis zuzugreifen, lesen Sie oben und geben Sie die folgenden Befehle ein.

/sbin/mount -P 1
/usr/libexec/init_data_protection
/sbin/mount -P 2

Die Eingabe ls /etc/sudoersführt zu folgendem Ergebnis.

-sh-3.2# ls /etc/sudoers
/etc/sudoers

Wie Sie sehen können, ist der Name des Volumes, das das Root-Verzeichnis enthält, irrelevant. Mit anderen Worten, Sie brauchen nicht einzugeben Macintosh\ HD.

Ich habe diese Lösung ausprobiert, aber sie hat mir die Datei nicht angezeigt, ich wollte einen Screenshot teilen, aber es gibt keine Option zum Anhängen. Ich habe photos.app.goo.gl/4tmLU3nxujfm9vAj6 auf mein Google-Laufwerk hochgeladen
Omar: Ich glaube, Ihr Bild zeigt, dass Sie sich nicht im Einzelbenutzermodus befinden. Ich denke, Sie befinden sich in der macOS-Wiederherstellung oder haben von einem USB-macOS-Installationsprogramm gebootet. Ihre Frage besagt ausdrücklich Folgendes: "Ich möchte es aus dem Einzelbenutzermodus ändern" . Außerdem zeigt Ihr Bild, wie Sie den Befehl eingeben /sbin/mount -uw /. Meine Antwort weist Sie nicht an, diesen Befehl einzugeben. Es ist wichtig, dass Sie die Anweisungen befolgen, die tatsächlich in der Antwort angegeben sind.
Hallo David: Ich bin neu bei Mac und dachte, dass dieser Modus der Einzelbenutzermodus ist, aber laut Ihrer Antwort scheint es nicht so zu sein. Danke, dass du mir das erklärt hast :). Es scheint also, was der Wiederherstellungsmodus genannt wird. Ich werde es jetzt googeln, um die Single mit M1-Maschine zu bekommen.
und für den zusätzlichen Befehl /sbin/mount -uw / war es in dem Screenshot, den Sie teilen, vorhanden, ich dachte, Sie hätten den Text gerade verpasst, tatsächlich habe ich die Schritte zweimal versucht, einmal mit dem Befehl und einmal ohne. aber trotzdem bin ich in beiden fällen der falsche modus.
Omar: Ich habe eine weitere Antwort hinzugefügt , die erklärt, wie das Problem von der macOS-Wiederherstellung behoben werden kann. Diese neue Antwort ist wahrscheinlich das, wonach Sie ursprünglich gesucht haben.

Verwenden der macOS-Wiederherstellung oder eines bootfähigen Installationsprogramms für macOS

Diese Antwort wurde mit einem bootfähigen Installationsprogramm für macOS 12.0.1 (Build 21A559) getestet. Sie können stattdessen auch von der macOS-Wiederherstellung booten.

Hier gehe ich davon aus, dass ein Terminalfenster geöffnet wurde, indem Dienstprogramme > Terminal aus der Menüleiste „Wiederherstellung“ ausgewählt wurde.

Zunächst sollte ich anmerken, dass das OP falsch eingegeben wurde Macintosh/ HD. Stattdessen hätte das OP Macintosh\ HDoder verwenden sollen "Macintosh HD".

Führen Sie die unten angegebenen Schritte aus.

  1. Geben Sie den folgenden Befehl ein, um eine Z-Shell aufzurufen. Der chrootBefehl ändert das Stammverzeichnis so, dass es dasselbe ist wie beim Booten in macOS Monterey. Wenn Sie eine Bash-Shell bevorzugen, ersetzen bashSie zsh.

    Hinweis: Wenn Sie auf installierte Software von Drittanbietern zugreifen möchten, können Sie /usr/local/bindie PATHVariable hinzufügen.

    chroot "/Volumes/Macintosh HD" zsh
    
  2. Nehmen Sie die erforderliche Korrektur an der sudoersDatei vor. Der folgende Befehl verwendet beispielsweise den nanoEditor, um die sudoersDatei zu bearbeiten.

    nano /etc/sudoers
    

    Hinweis: Der Benutzer GACy20 hat einen Kommentar gepostet , in dem die Verwendung des visudoBefehls empfohlen wird.

  3. Wenn Sie fertig sind, geben Sie den folgenden Befehl ein, um zur ursprünglichen Bash-Shell zurückzukehren.

    exit
    

Unten ist eine Beispielausgabe.

-bash-3.2# chroot "/Volumes/Macintosh HD" zsh
root@Mac / # nano /etc/sudoers
root@Mac / # exit

Saving session...shell_session_save:7: read-only file system: /dev/null

...copying shared history...
...saving history...truncating history files...
...completed.
-bash-3.2# 

Verweise

Diese Reihe von Antworten – alle von David Anderson (bis jetzt) ​​– sind Schätze für diejenigen von uns, die sich durch Apples Praxis der Software-, Systementwicklung und -verwaltung behindert und/oder frustriert fühlen.

Ich füge diese Antwort nur hinzu, um die Informationen in Mr. Andersons erster Antwort zu ergänzen und vielleicht anderen Benutzern zu helfen, die ältere Versionen von macOS ausführen. Speziell:

  • Ich benutze immer noch macOS Catalina (10.15.6) auf meinem Rechner (weil ich die Erfahrung gemacht habe , dass Apples Upgrades eine größere Risikofläche für Funktionsstörungen schaffen).

  • Beim Befolgen des Verfahrens zum Aktivieren des rootBenutzers - das ich dank des detaillierten Rezepts erfolgreich abgeschlossen habe - stellte ich fest, dass der suAnsatz nach Abschluss für mich auf meinem System nicht verfügbar war:

    % su
    Password:
    su: Sorry
    % <repeated several times>
    

    Was seltsam erscheint, da sues definitiv auf Catalina installiert ist und für andere Benutzer (einschließlich Administratoren) funktioniert. Vielleicht wurde das in gemacht /etc/pam.d/su?

    Stattdessen musste ich darauf zurückgreifen, um die rootEingabeaufforderung zu erhalten, die natürlich für die Wiederherstellung auf einem Catalina-System (vielleicht anderen?) Unbrauchbar ist , wenn Sie den Rechtschreibfehler des OP gemacht hätten:

    % sudo su     # or 'sudo su -' if you prefer
    Password:
    sh-3.2# whoami
    root
    sh-3.2#
    

    ref Nachträge Anmerkungen 1. & 2. in der Fortsetzung

  • Das OP stellte eine andere Frage:

    Weißt du, wie ich den /etcOrdner aus dem finden kann cd /Macintosh/ HD?
    * Nachträglich korrigiert aufcd /Macintosh\ HD

    Auf meinem alten Catalina-System Macintosh HDerscheint unter Finder"Standorte", aber:

    % cd /Macintosh\ HD
    cd: no such file or directory: /Macintosh HD  
    % cd Macintosh\ HD 
    cd: no such file or directory: Macintosh HD 
    % cd 'Macintosh HD'
    cd: no such file or directory: Macintosh HD
    

    Ich kann jedoch den Inhalt sehen, Macintosh HDwenn ich im Finder-Fenster darauf klicke. Ich bin mir sicher, dass es nur mir so geht : Das erscheint mir ein bisschen wie eine Trennung ... aber kein Grund für ein Upgrade :)

    Aber zurück zur vorliegenden Frage, hier ist, was ich sehe, wenn ich versuche, den Inhalt des /etcOrdners auf meinem Catalina-System aufzulisten:

    % ls -l /etc
    lrwxr-xr-x@ 1 root  admin  11 Dec  5  2019 /etc -> private/etc 
    
    # should this have been '/etc -> /private/etc' ?? 
    

    Wir können jedoch so dorthin gelangen:

    ~ % cd /etc 
    /etc % ls -l
    total 1072
    -rw-r--r--   1 root  wheel     515 Nov  9  2019 afpovertcp.cfg
    lrwxr-xr-x   1 root  wheel      15 Dec  5  2019 aliases -> postfix/aliases
    -rw-r-----   1 root  wheel   16384 Nov  9  2019 aliases.db
    
    ...
    
    /etc %
    
  • Zum Schluss, wrt Bearbeitung /private/etc/sudoers( oder wie auch immer es jetzt heißt ), HINWEIS , es gibt auch einen Ordner mit dem Namen:/private/etc/sudoers.d

    sudoers.dist auf meinem Catalina-System leer, aber es ist möglicherweise ein großartiger Ort, um Dinge wie das Zuweisen der NOPASSWDOption (oder NOPASSEDwenn Sie es vorziehen :) zu einem Benutzer hinzuzufügen. Beachten Sie, dass Sie diese Zeile in Ihre Datei sudoers.daufnehmen müssen, wenn Sie zusätzliche Regeln in erstellen möchten :sudoers

    #includedir /etc/sudoers.d

    Man sollte visudo -fzum Bearbeiten von Dateien unter verwenden sudoers.d- es führt die gleiche Syntax- und "Rechtschreibprüfung" der Einträge durch, aber wenn ein Eintrag mit einem herkömmlichen Editor hinzugefügt wird, wird gesagt , dass Fehler einen nicht aus ihrem System ausschließen. Es hat andere Vorteile, aber ich weiß nicht, wie nützlich sie für macOS-Benutzer sind.

    Verwenden Sie immer sudo visudo, um die sudoersDatei zu bearbeiten - unabhängig davon, wo sie sich auf Ihrem System befindet. Dadurch wird ein Abstecher in den Einzelbenutzermodus vermieden - besonders wichtig, wenn der suBefehl Sie nicht zur rootEingabeaufforderung auf Ihrem System bringt (z. B. Catalina).


Das "Addendum/FYI/Not part of the answer section":

Anmerkung 1:

Ich finde es immer noch seltsam, dass dies sogar funktioniert, bevor (und nachdem) der rootBenutzer aktiviert wurde ... was die Frage aufwirft: "Was haben sie sich dabei gedacht?"

Anmerkung 2:

Nebenbei für Neugierige sh:

% sh --version
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin19)
Copyright (C) 2007 Free Software Foundation, Inc.

:) Lol