Ich habe sudo kaputt gemacht - wie kann ich es reparieren?

Anscheinend kann ich auf meinem Mac nicht mehr sudo.

Piers-MacBook-Air:~ piersb$ sudo ls
Password:
Sorry, user piersb is not allowed to execute '/bin/ls' as root on Piers-MacBook-Air.local.
Piers-MacBook-Air:~ piersb$ 

Es hat vor dem letzten El Capitan-Update (dem Upgrade auf 10.11.4) funktioniert, und ich verwende ein MacBook Air von Mitte 2013. Das Konto ist ein Administratorkonto, und ich konnte vorher sudo ausführen. Mein erster Gedanke war, mich in /etc/sudoers einzufügen, aber, haha, dafür braucht man natürlich sudo.

Piers-MacBook-Air:~ piersb$ ls -al /etc/sudoers
-r--r-----  1 root  wheel  272  5 Apr 11:15 /etc/sudoers
Piers-MacBook-Air:~ piersb$ groups
staff com.apple.sharepoint.group.1 everyone localaccounts _appserverusr admin _appserveradm _lpadmin _appstore _lpoperator _developer com.apple.access_ftp com.apple.access_screensharing com.apple.access_ssh

Ich kann einen neuen Admin-Benutzer erstellen, aber dieser Benutzer hat das gleiche Problem.

Piers-MacBook-Air:~ testuser$ sudo ls

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.

Password:
Sorry, user testuser is not allowed to execute '/bin/ls' as root on 
Piers-MacBook-Air.local.

So. Wie gebe ich mir wieder Zugriff auf sudo? Und ist das ein allgemeines Problem?

Fahren Sie dann mit apple.stackexchange.com/questions/229701/… fort . Viel Glück.

Antworten (1)

Sieht so aus, als wäre es nur zufällig beim Update 10.11.4 erschienen; das problem war eigentlich, als ich vagrant installiert habe. Irgendwann habe ich oder ein von mir verwendetes Skript /etc/sudoers mit dem Folgenden überschrieben, anstatt es anzuhängen:

Cmnd_Alias VAGRANT_EXPORTS_ADD = /usr/bin/tee -a /etc/exports
Cmnd_Alias VAGRANT_NFSD = /sbin/nfsd restart
Cmnd_Alias VAGRANT_EXPORTS_REMOVE = /usr/bin/sed -E -e /*/ d -ibak /etc/exports
%admin ALL=(root) NOPASSWD: VAGRANT_EXPORTS_ADD, VAGRANT_NFSD, VAGRANT_EXPORTS_REMOVE

Also war /etc/sudoers Toast. Hier erfahren Sie, wie Sie das Problem beheben können, wenn dies bei Ihnen der Fall ist.

  • Gehen Sie zu den Systemeinstellungen
  • Gehen Sie zu Benutzer & Gruppen
  • Klicken Sie auf das Schloss
  • Authentifizieren Sie sich mit einem Administratorkonto
  • Wählen Sie Netzwerkkontoserver: Beitreten...
  • Klicken Sie auf Verzeichnisdienstprogramm öffnen
  • Klicken Sie auf das Schloss
  • Authentifizieren Sie sich mit einem Administratorkonto
  • Wählen Sie Root-Benutzer bearbeiten / aktivieren
  • Wählen Sie ein Root-Passwort
  • Öffnen Sie ein Terminal
  • Geben Sie su ein
  • Geben Sie Ihr Root-Passwort ein und drücken Sie die Eingabetaste
  • Geben Sie visudo ein

Sie sollten jetzt /etc/sudoers sicher bearbeiten. Oder zumindest so sicher, wie Sie alles tun können, während Sie als Root angemeldet sind.

Ersetzen Sie den Unsinn, den Sie dort haben, durch eine ordnungsgemäß sichere Datei. Hier ist die, die ich verwendet habe:

#
# This file MUST be edited with the 'visudo' command as root.
# Failure to use 'visudo' may result in syntax or file permission errors
# that prevent sudo from running.
#
# See the sudoers man page for the details on how to write a sudoers file.
#

# Host alias specification

# User alias specification

# Cmnd alias specification

# Defaults specification
Defaults    env_reset
Defaults    env_keep += "BLOCKSIZE"
Defaults    env_keep += "COLORFGBG COLORTERM"
Defaults    env_keep += "__CF_USER_TEXT_ENCODING"
Defaults    env_keep += "CHARSET LANG LANGUAGE LC_ALL LC_COLLATE LC_CTYPE"
Defaults    env_keep += "LC_MESSAGES LC_MONETARY LC_NUMERIC LC_TIME"
Defaults    env_keep += "LINES COLUMNS"
Defaults    env_keep += "LSCOLORS"
Defaults    env_keep += "SSH_AUTH_SOCK"
Defaults    env_keep += "TZ"
Defaults    env_keep += "DISPLAY XAUTHORIZATION XAUTHORITY"
Defaults    env_keep += "EDITOR VISUAL"
Defaults    env_keep += "HOME MAIL"

# Runas alias specification

# User privilege specification
root    ALL=(ALL) ALL
%admin  ALL=(ALL) ALL

# Uncomment to allow people in group wheel to run all commands
# %wheel    ALL=(ALL) ALL

# Same thing without a password
# %wheel    ALL=(ALL) NOPASSWD: ALL

# Samples
# %users  ALL=/sbin/mount /cdrom,/sbin/umount /cdrom
# %users  localhost=/sbin/shutdown -h now
  • Drücke ESC und tippe dann :wq! um die Datei zu speichern und zu beenden
  • eingeben exit, um die Root-Shell zu verlassen
  • Gehen Sie zurück zu den Verzeichnisdienstprogrammen
  • Wählen Sie Root-Benutzer bearbeiten/deaktivieren

Und - hurra! - Ihr sudo-Befehl sollte wieder betriebsbereit sein.