So aktivieren Sie „sudo“ in OSX 10.12 Sierra

Wenn ich "sudo some_command" eingebe, zeigt das Terminal:

sudo: unable to stat /etc/sudoers: Permission denied
sudo: no valid sudoers sources found, quitting
sudo: unable to initialize policy plugin

Mein Konto ist ein Administratorkonto und die /etc/sudoers enthält:

root        ALL = (ALL) ALL
%admin      ALL = (ALL) ALL

Wie kann man das beheben?

Bitte fügen Sie die Ausgabe von hinzuls -l /etc/sudoers
@patrix die Ausgabe ist-r--r-----+ 1 root wheel 1563 Jan 11 10:42 /etc/sudoers
Uhh, ls -le /etc/sudoersund ls -led /etcdann bitte auch
@Patrix -rw-rw-r--+ 1 root wheel 1563 Jan 11 10:42 /etc/sudoers 0: group:admin allow read,write,append,readattr,writeattr,readextattr,writeextattr,readsecurityundlrwxr-xr-x@ 1 root wheel 11 Dec 10 21:13 /etc -> private/etc
Hat es jemals funktioniert? Die ACL scheint etwas seltsam zu sein (ich habe keine in dieser Datei), aber ich bin mir nicht sicher, ob dies irgendwelche Probleme verursacht (und ich zögere, es hier zu versuchen).
@patrix Nach der Neuinstallation von OSX Sierra funktioniert es endlich. Ich weiß wirklich nicht, was mit sudo falsch ist.
2c-Tipp: visudoZum Bearbeiten von Sudoern verwenden.

Antworten (2)

Öffnen Sie das Terminal und aktivieren Sie root mit:

dsenableroot -u <your_admin_username> -p <your_password> -r <root_password> #choose some root password here 

Wenn der Sudoer beschädigt ist, können Sie dies immer noch nicht tun sudo- aber Sie können sudie Berechtigungen entsprechend reparieren:

su #when asked afterwards enter the above <root_password>
chown root:wheel /etc/sudoers
chmod 440 /etc/sudoers
chmod -a "admin allow read,write,append,readattr,writeattr,readextattr,writeextatt‌​r,readsecurity" /etc/sudoers
exit

Zurück in Ihrem Administratorkonto deaktivieren Sie root:

dsenableroot -d -u <your_admin_username> -p <your_password>

Falls das obige nicht hilft, aktivieren Sie das Root-Konto erneut, indem Sie dasselbe wie oben tun, melden Sie sich von Ihrem Konto ab, melden Sie sich an als root(yup, wirklich):

Öffnen Sie das Terminal und geben Sie ein chmod g+x /, schließen Sie den Begriff, melden Sie sich ab und tada, sudo funktioniert wieder :) Dieses Problem tritt meistens auf, wenn Sie Ihr /durchgehendes Linux im rw-Modus mounten (für hfsplusim r/w-Modus verwenden Sie fuse und bindfs)


Übrigens scheint die Gruppenadministrator- ACL die sudoers-Datei nicht zu beschädigen!

Booten Sie besser in den Einzelbenutzermodus, da Root nicht aktiviert werden muss
Und was machen Sie genau mit dem Einzelbenutzer-Login? Sie müssen wissen, wie Sie sich in launchctl/diskarbitrioned bewegen (da Sie sich in romount befinden) und dies tun, mount -rw /und dann visudowird dies nicht gelöst.
@mark Könnte dann eine andere Antwort wert sein
@PJJ OK, ich habe deine Antwort stark modifiziert ;-) - aber nach der zweiten dsenableroot-Zeile solltest du dich nicht mehr als root anmelden können. Sie müssen entweder chmod g+x /im su-Modus laufen oder Ihren letzten Satz vor die 2. dsenableroot-Zeile verschieben. Außerdem: das sollte in Sierra nicht nötig sein!
Wahr, wahr, übersehen, dass - hoffentlich nicht allzu verwirrend gemoddet ;) - meistens, weil h4x0rs chmod g+x /Darwin mit Linux verwechseln und glücklich ihre Guids über Darwins abbilden, um später zu erkennen, dass in Darwin Guids bei 500 statt 1000 beginnen ;)
Aber der Kommentarabschnitt der Frage ist irgendwie zweifelhaft: Desmond Chens Kommentar am 11. Januar um 15:40 Uhr zeigt eine andere ls-Ausgabe für die Sudoers-Datei als Desmond Chens Kommentar am 12. Januar um 1:29 Uhr! Die "erste" sudoers-Datei sollte funktionieren.
Ja, die am 12. aufgeführte ist falsch, sollte chmod 440und ist stattdessen 644 oO
Ungültiger Berechtigungstyp 'writeextatt​r', wenn versucht wird, chmod -a "admin allow read...etc etc etc :(

Hier ist eine High-Level-Schritte:

$ dsenableroot -u <user-username> -p <your-user-password> -r <new-password-for-root>

Erstellen Sie dann eine Sicherungskopie der sudoers-Datei und bearbeiten Sie sie

$ su
Password:<your-new-root-password>
sh-3.2# cp /etc/sudoers /etc/sudoers.bak
sh-3.2# vi /etc/sudoers.bak
sh-3.2# cp /etc/sudoers.bak /etc/sudoers
sh-3.2# exit

Root-Zugriff zuletzt deaktivieren:

$ dsenableroot -d -u abdi -p <root-password>
dsenableroot:: ***Successfully disabled root user.