Ich habe versehentlich die sudoers-Datei unter Mac OS X gelöscht. Gibt es eine Möglichkeit, es wiederherzustellen?

9

Ich habe die sudoersDatei unter Mac OS X versehentlich gelöscht . Gibt es eine Möglichkeit, es wiederherzustellen?
Und wie stellen Sie den Modus 0440 ein, wenn Sie ihn wiederhergestellt haben?

Rechen
quelle

Antworten:

8

Wenn ich Ihr Problem richtig verstehe, haben Sie derzeit keine Sudoer und Sie versuchen, Sudo zu machen, und es funktioniert nicht. In diesem Fall können Sie Folgendes tun, um sudo zum Laufen zu bringen:

  1. Erstellen Sie eine Sudoers-Datei in Ihrem Home-Ordner. Standardinhalte finden Sie hier sudoers
  2. Öffnen Sie den Ordner "/ etc" im Finder ("Go" -> "Go to Folder ...").
  3. Kopieren Sie nun die Sudoers-Datei über den Finder aus dem Home-Ordner in den Ordner / etc.
  4. Sie werden aufgefordert, nach dem Passwort zu fragen.
  5. Geben Sie das richtige Passwort ein und Sie sind fertig.

Zu überprüfen, Sudo läuft gut cd /etcund sudo vim sudoers. Sie sollten in der Lage sein, die sudoers-Datei über den vim-Editor anzuzeigen. Jede Lese- / Schreiboperation in / etc würde den Befehl sudo erfordern.

Ich weiß, dass dies ein bisschen überraschend ist, dass wir über die Benutzeroberfläche Operationen ausführen können, auch wenn wir keine Sudoer haben. Aber es hat bei mir funktioniert :)

Tanmay
quelle
1
Es ist in der Tat seltsam, dass das GUI-Äquivalent dessen, was über die Befehlszeile unmöglich ist, funktioniert. Ich denke, Apple testet GUI-Workflows gründlicher als die Befehlszeile. Gott sei Dank, dieser Beitrag hat mich gerettet.
Sridhar Sarnobat
Gut zu wissen, dass es dir geholfen hat.
Tanmay
6

Ich gehe davon aus, dass Sie versuchen, einen sudoBefehl auszuführen, und dass Sie einen Fehler erhalten, /etc/sudoersder nicht über die richtigen Berechtigungen verfügt.

Wenn Sie zuvor Ihren Kontostatus Admingewährt haben, sollten Sie in der Lage sein, die Berechtigungen über die GUI zu korrigieren. Öffnen Sie den Ordner "/ etc" im Finder ("Go" -> "Go to Folder ...") und öffnen Sie die sudoersDateieigenschaften. Klicken Sie auf das Schloss. Gewähren Sie der adminGruppe read/write, dem systemBenutzer read-only, der wheelGruppe read-onlyund der everyoneGruppe no access. Die Berechtigungen sollten jetzt korrekt sein.

Wenn Sie sich nicht in die adminGruppe aufgenommen haben, müssen Sie OSX im Einzelbenutzermodus neu starten und den Befehl ausführen chmod 0440 /etc/sudoers.

George M.
quelle
6

Aktivieren Sie den Root-Benutzer mithilfe der Systemeinstellungen und erstellen Sie dann / etc / sudoers, während Sie als Root-Benutzer angemeldet sind

touch /etc/sudoers; chmod 440 /etc/sudoers

Hinweis: Da der Befehl in diesem Fall als root ausgeführt wird und die Gruppen-ID /etc0 lautet, sollte er nach der Neuerstellung standardmäßig dem richtigen Benutzer und der richtigen Gruppe gehören. Wenn dies jedoch aus irgendeinem Grund nicht der Fall ist, führen Sie ihn aus

chown root:wheel /etc/sudoers

Nachdem Sie erstellt haben, /etc/sudoersverwenden Sie visudo, um diesen Code einzufügen:

# sudoers file.

#
# 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"

# 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
ALL ALL=(ALL)                   NOPASSWD:/opt/dplat/bin/Revision/CMUpdatePackage/Installer.app/Contents/MacOS/I  nstaller
ALL ALL=(ALL)     NOPASSWD:/opt/dplat/bin/UpdatePackageInstaller.app/Contents/MacOS/UpdatePackage    Installer

Wenn Sie kein Administrator sind, können Sie das System stattdessen im Einzelbenutzermodus starten (dies kann durch Ausschalten des Geräts und Halten von Befehl + s beim Start erfolgen) und ausführen:

mount -uw /

und Sie befinden sich im Terminal mit Root-Rechten und können die oben genannten Befehle zum Einrichten ausführen /etc/sudoers

John Militer
quelle
3

Ich habe eine / tmp / sudoers-Datei mit Inhalten in der Antwort von John Militer erstellt und eine Variation des Befehls tmm1 ausgeführt.

osascript -e 'do shell script "cat /tmp/sudoers > /etc/sudoers; chown root:wheel /etc/sudoers" with administrator privileges'

Nett!!!

Noelmcloughlin
quelle
2

Die obigen Antworten beziehen sich auf den Standardinhalt der Datei, wie sie mit Finder verschoben und ihre Berechtigungen geändert werden. Sudo wird sich jedoch beschweren, es sei denn, der Eigentümer der sudoers-Datei ist root. Die einzige Möglichkeit, den Besitzer ohne sudo zu ändern, ist über diesen Befehl:

osascript -e 'do shell script "chown root:wheel /etc/sudoers" with administrator privileges'

tmm1
quelle
1
Dies scheint bei den meisten beantworten den „ wie Sie es in dem Modus 0440 stell“ Teil, der hat schon angesprochen, aber nicht die Wiederherstellung Aspekt adressieren. Wie hilft ihnen das, da dem OP zunächst eine / etc / sudoers-Datei fehlt?
Jeff Schaller
Sie können die Datei mit einem beliebigen Editor erstellen und mit dem Finder verschieben. Der schwierige Teil besteht darin, den Eigentümer in root zu ändern, was mit keiner anderen Methode möglich ist.
tmm1