So beheben Sie den Ordner / etc / unter Mac OS X.

7

Ich folgte einem Tutorial mit diesem Befehl zum Erstellen einer Datei launchd.conf in / etc /

sudo echo "some command" > /etc/launchd.conf

Aber es würde nicht funktionieren, ich habe die Erlaubnis verweigert, nachdem ich mein Administratorkennwort eingegeben habe. Es schien, als ob die Berechtigungen für den Link falsch waren, also habe ich es getan. sudo chmod 755 /etc/ Aber jetzt kann ich kein Terminal laden, ich bekomme den FehlerThe administrator has set your shell to an illegal value

Wenn ich sudojetzt einen Befehl versuche, bekomme ich

sudo: can't open /private/etc/sudoers: Permission denied
sudo: no valid sudoers sources found, quitting
Process *tramp/sudo root@localhost* exited abnormally with code 1

So sieht der Link / etc aus, wie sollte er aussehen und wie kann ich ihn wiederherstellen?

lrwxr-xr-x   1 root           wheel          11 Jul 21  2011 etc -> private/etc

/ privat / etc ...

drw-r--r-- 111 root           wheel    3774 Mar 26 02:25 etc

Bearbeiten: Ich verwende Mac OS X 10.7.3

justinhj
quelle
2
Schön. :-P Es ist immer eine bessere Idee, Ihre eigenen Berechtigungen zu erhöhen, als die Berechtigungen Ihrer Kernverzeichnisse zu ändern. Die verweigerte Erlaubnis war wahrscheinlich auf ein anderes Problem zurückzuführen.
NReilingh

Antworten:

6

Die Antwort von Kyle Jones wird auf jeden Fall funktionieren, aber haben Sie versucht, eine Berechtigungsreparatur über das Festplatten-Dienstprogramm auszuführen? Das könnte den Trick machen ...

NReilingh
quelle
1
Bist du sicher? Es hat das Problem
behoben
2
@WilliamJackson Meines Wissens überprüft es die Berechtigungen des Dateisystems anhand installierter Pakete (möglicherweise anhand von .pkg-Belegen). Da / etc / eine Datei ist, die mit dem Kernbetriebssystem installiert ist, verstehe ich nicht, warum es nicht funktionieren würde.
NReilingh
1
@NReilingh Ich hätte mehr Nachforschungen anstellen sollen, bevor ich ausstieß. Ich habe mich geirrt und du hast recht. Ich habe die Antwort trivial bearbeitet, damit ich meine Ablehnung entfernen kann.
William Jackson
4
Ich habe auch festgestellt, dass Sie (zumindest in 10.7) herausfinden können, ob eine Datei oder ein Ordner mit den Berechtigungen zum Reparieren von Datenträgern repariert wird, indem Sie diesen Befehl in Terminal: ausführen pkgutil --file-info /etcund ihn /etcdurch einen beliebigen Speicherort ersetzen, den Sie überprüfen möchten. Das ist natürlich keine große Hilfe, wenn Sie Terminal nicht laden können.
William Jackson
1
@IgorG. Seit diese Antwort geschrieben wurde, hat Apple die Reparatur von Berechtigungen entfernt, da sie dank SIP nicht mehr erforderlich ist. Es wurde zuvor im Festplatten-Dienstprogramm gefunden.
NReilingh
10

command-sStarten Sie Ihren Mac neu und halten Sie die Taste gedrückt , wenn Sie das Startsignal zum ersten Mal hören. Halten Sie die Taste gedrückt, bis Sie Text auf dem Bildschirm sehen. Das System startet im Einzelbenutzermodus mit einer Root-Shell.

mount -uw /
chmod a+x private/etc

wird / etc wieder zugänglich machen. Geben Sie exitin die Shell ein und der Mac beendet den Startvorgang.

Kyle Jones
quelle
Müssen Sie die fs nicht zuerst montieren?
Slhck
private / etc befindet sich auf der Root-Partition.
Kyle Jones
2
Die Root-Partition wird im Einzelbenutzermodus schreibgeschützt bereitgestellt. Sie müssen es für den Schreibzugriff ( mount -uw /) erneut bereitstellen, damit der Befehl chmod funktioniert.
Gordon Davisson
1
@ Gordon in der Tat. Vielen Dank für den Hinweis. Ich habe die Antwort so bearbeitet, dass sie den erforderlichen Befehl mount enthält.
Kyle Jones
1
Upvote für die Lösung, wollte aber auch hinzufügen, dass in meinem Fall die Wurzel die falschen Berechtigungen hatte. Also chmod a+x /für mich gearbeitet. Vielen Dank!
RARay
-1

Berechtigungen und Eigentum an /etcund /private/etcscheinen mir beide richtig zu sein; Sie haben übrigens vergessen, auch zu überprüfen /private, was auch falsche Berechtigungen haben könnte.

Ich hatte genau das gleiche Problem und in meinem Fall wurden die Berechtigungen des Stammordners selbst beschädigt. Was die Leute übersehen, ist, dass /es sich tatsächlich auch um ein echtes, normales Verzeichnis handelt und genau wie jedes Verzeichnis Eigentümer und Berechtigungen sind. Eigentum sollte sein root:wheelund Erlaubnis sollte sein 755(das ist rwxr-xr-x).

Der einfachste Weg, beide wiederherzustellen, bestand darin Script Editor, das Skript zu starten und dann einzugeben und auszuführen:

do shell script "/usr/sbin/chown root:wheel /" with administrator privileges
do shell script "/bin/chmod 755 /" with administrator privileges

Sie sind für amdin Passwort gefragt und dann chownund chmodkommen zur Rettung. Danach sudofunktionierte es wieder.

Mecki
quelle
Die Berechtigungen sind nicht korrekt. xFlag wird benötigt, um einen Ordner einzugeben.
ivan_pozdeev
@ivan_pozdeev 755setzt das X-Kennzeichen für alle Benutzer, 755Mittel rwxr-x-r-x: permissions-calculator.org/decode/755 und natürlich eine Zugriffsberechtigung jeder braucht /als sonst haben Sie Zugang zu nichts (wie alle Dateien / Ordner, die alle Laufwerke montiert, ja sogar alle Geräte sind Unterordner von /und Sie haben keinen Zugriff auf sie ohne die XFlagge)
Mecki