Ich verwende Monterey macOS v12.3.
Weißt du, wie ich den /etc
Ordner aus dem finden kann cd /Macintosh/ HD
?
Ich habe meine beschädigt sudoers
und 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?
Titel: Ich habe meine Sudoers-Datei auf dem MAC beschädigt – wie kann ich sie im Einzelbenutzermodus ändern?
Aus Versehen habe ich meine sudoers
Datei beschädigt. Ich habe es geändert und ein Wort falsch geschrieben, das die Datei beschädigt hat.
Ich schrieb NOPASSED
statt 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.
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.
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 root
Benutzer aktivieren. Das Verfahren ist unten angegeben.
root
BenutzerBeachten Sie, dass das Schlosssymbol ähnlich wie das unten gezeigte Bild aussehen sollte.
Die Schritte sind unten angegeben.
root
Benutzer verwenden möchten.sudoers
DateiFahren Sie mit den folgenden Schritten fort.
su
. Geben Sie das root
Passwort des Benutzers ein, wenn Sie dazu aufgefordert werden.root
Benutzer sind, nehmen Sie die erforderliche Korrektur an der sudoers
Datei vor.Beim Booten im Einzelbenutzermodus können die folgenden Meldungen beobachtet werden.
Um auf das /etc
Verzeichnis 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/sudoers
fü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
.
/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.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 OPMacintosh\ HD
oder verwenden sollen"Macintosh HD"
.
Führen Sie die unten angegebenen Schritte aus.
Geben Sie den folgenden Befehl ein, um eine Z-Shell aufzurufen. Der chroot
Befehl ändert das Stammverzeichnis so, dass es dasselbe ist wie beim Booten in macOS Monterey. Wenn Sie eine Bash-Shell bevorzugen, ersetzen bash
Sie zsh
.
Hinweis: Wenn Sie auf installierte Software von Drittanbietern zugreifen möchten, können Sie
/usr/local/bin
diePATH
Variable hinzufügen.
chroot "/Volumes/Macintosh HD" zsh
Nehmen Sie die erforderliche Korrektur an der sudoers
Datei vor. Der folgende Befehl verwendet beispielsweise den nano
Editor, um die sudoers
Datei zu bearbeiten.
nano /etc/sudoers
Hinweis: Der Benutzer GACy20 hat einen Kommentar gepostet , in dem die Verwendung des
visudo
Befehls empfohlen wird.
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#
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 root
Benutzers - das ich dank des detaillierten Rezepts erfolgreich abgeschlossen habe - stellte ich fest, dass der su
Ansatz nach Abschluss für mich auf meinem System nicht verfügbar war:
% su
Password:
su: Sorry
% <repeated several times>
Was seltsam erscheint, da su
es 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 root
Eingabeaufforderung 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
/etc
Ordner aus dem finden kanncd /Macintosh/ HD
?
* Nachträglich korrigiert aufcd /Macintosh\ HD
Auf meinem alten Catalina-System Macintosh HD
erscheint 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 HD
wenn 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 /etc
Ordners 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.d
ist auf meinem Catalina-System leer, aber es ist möglicherweise ein großartiger Ort, um Dinge wie das Zuweisen der NOPASSWD
Option (oder NOPASSED
wenn Sie es vorziehen :) zu einem Benutzer hinzuzufügen. Beachten Sie, dass Sie diese Zeile in Ihre Datei sudoers.d
aufnehmen müssen, wenn Sie zusätzliche Regeln in erstellen möchten :sudoers
#includedir /etc/sudoers.d
Man sollte visudo -f
zum 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 sudoers
Datei zu bearbeiten - unabhängig davon, wo sie sich auf Ihrem System befindet. Dadurch wird ein Abstecher in den Einzelbenutzermodus vermieden - besonders wichtig, wenn der su
Befehl Sie nicht zur root
Eingabeaufforderung auf Ihrem System bringt (z. B. Catalina).
Ich finde es immer noch seltsam, dass dies sogar funktioniert, bevor (und nachdem) der root
Benutzer aktiviert wurde ... was die Frage aufwirft: "Was haben sie sich dabei gedacht?"
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
David Anderson
/Macintosh/ HD
sollte sein/Macintosh\ HD
. Ist dies das, was Sie in ein Terminal-Anwendungsfenster eingegeben haben oder nur als Sie Ihre Frage eingegeben haben?Gordon Davisson
sudo
.David Anderson
sudoers
. Ich konnte mithosts
, aber nichtsudoers
. Ich musste dem Benutzer Schreibzugriff hinzufügensudoers
, dann konnte ich. Das kann der OP aber nicht, da er es nicht nutzen kannsudo
. Ich habe mich an die hier gegebenen Anweisungen gehalten .Marc Wilson
Gordon Davisson
GACy20
visudo
?visudo
ist der Befehl, den Sie immer verwenden sollten, umsudoers
speziell zu bearbeiten , da er vor dem Ersetzen der alten Dateien nach Syntaxfehlern sucht und verhindert, dass Ihr System gemauert wird ...Omar M. Ahmed