Warum kann ich nicht `su` ausführen? (und wie soll ich tun?)


33

Jedes Mal, wenn ich versuche, eine Ausgabe zu suerstellen, erhalte ich Folgendes:

$ su  
Password:  
su: Sorry

Ich muss nicht erwähnen, dass ich das richtige Administratorkennwort eingebe, mit dem es funktioniert sudo. Was ich möchte, ist nicht sudojedes Mal eingeben zu müssen.

Antworten:


34

In MacOS X ist der Root-Benutzer standardmäßig deaktiviert und sufunktioniert daher nicht. Wie andere gesagt haben, ist es am besten zu verwenden sudo.

Wenn Sie müssen die Root - Benutzer aktivieren, finden Sie Apples technote: Aktivieren und mit dem Benutzer „root“ in Mac OS X .


13
sudo sufunktioniert immer noch, so ist es nicht wirklich deaktiviert. Es hat einfach kein Passwort.
Fake Name

@FakeName Dies ist die witzigste Hintertür! Wenn Sie rennen können sudo su, was in aller Welt ist dann der Grund für die Deaktivierung su?
Kolob Canyon

3
@KolobCanyon - Es geht nicht wirklich darum su, das Root-Login zu "deaktivieren " . Durch Deaktivieren der Anmeldung als rootverhindern Sie eine Reihe möglicher Sicherheitsprobleme. Jemandem nicht zu erlauben, der kann sudo, suist irgendwie dumm. Grundsätzlich wird sunur die aktuelle Benutzer-ID geändert und ein Befehl ausgeführt (eine Shell, falls nicht angegeben). Wenn die Benutzer-ID bereits 0 (root) ist, z. B. wenn sie mit ausgeführt wird sudo, hat sie nichts zu tun, daher wird nur die Shell ausgeführt. Sie können einen ähnlichen Effekt erzielen, indem Sie Folgendes tun sudo bash.
Fake Name

1
@FakeName Immer noch verwirrt. Was ist der Unterschied zwischen der Anmeldung als root und der Ausführung von 'sudo su'? Ist es nicht effektiv das gleiche Niveau?
Kolob Canyon

2
@KolobCanyon - Nein. Grundsätzlich bedeutet das Deaktivieren der Anmeldung , dass ein Hacker bei einer Sicherheitslücke im Anmeldevorgang nicht direkt auf root zugreifen kann. Grundsätzlich wird der erforderliche Root-Kompromiss von "Login-Kompromiss" auf "Login-Kompromiss für Benutzerkonto + Privesc" verschoben. Es ist im Grunde genommen eine Sache der Tiefenverteidigung.
Fake Name

14

Sie haben zwei Möglichkeiten. Die erste ist zu verwenden sudo -s- dies gibt Ihnen Superuser-Zugriff, aber Sie bleiben (sozusagen) immer noch "Sie selbst", so dass Dinge wie ~immer noch Ihr Home-Verzeichnis sind. Alternativ können Sie verwenden sudo su, wodurch Sie eine Shell als eigentlichen Root-Benutzer Ihres Mac erhalten.


5
Der Apple Way (tm) wird verwendet sudo, um Befehle auszuführen, die erhöhte Berechtigungen erfordern, und nicht, um zu einer Root-Shell zu wechseln und von dort aus zu arbeiten.
Ian C.

3
@ Ian C. - Nein, das ist eigentlich der Unix-Weg. Apple benutzt es nur, weil es auch auf * nix basiert.
Fake Name

@Fake Name: Apple hat große Mühe, die Root-Shell niemals für Benutzer zugänglich zu machen. Man könnte sagen, sie bringen das sudoEthos auf das Äußerste. Aber was auch immer: Semantik. Verwenden Sie unter OS X keine Root-Shells.
Ian C.

1
@ Ian C - Apple macht nicht viel mehr als die * nix-Designer, Apple redet nur nicht viel darüber. In beiden Fällen ist es da, nur bei Dingen wie Linux erfahren Sie, wie Sie es einfach verwenden können. Wenn es dadurch weiter verbreitet wird , deutet dies nicht auf einen zugrunde liegenden Architekturunterschied hin.
Fake Name

1

Wenn Sie beispielsweise Dateien verschieben oder git über die CLI verwenden müssen, ist in diesem Fall die Verwendung des sudo -sBefehls die beste Lösung . Nach diesem Befehl müssen Sie das Kennwort nicht immer wieder eingeben.


1

Ich denke, Sie können dies als "normaler" Benutzer nicht tun ...

Wenn es ein anderes Benutzerkonto mit Administratorrechten gibt, müssen Sie dieses verwenden

restricted user$ su
Password:(the root password here)
Sorry!

restricted user$ su - (an admin account here)
password:(the admin account password)
$ su - root
Password:(The root password here)
# -> You are root user now

1

Moderne Lösung: sudo -u

Verwenden Sie zum Ausführen als andere Verwendung sudo -u.

So führen Sie beispielsweise einen Texteditor wie nano aus :

sudo -u someuser nano

… Und geben Sie Ihr Mac-Administratorkennwort ein, wenn Sie dazu aufgefordert werden. Zu diesem Zeitpunkt ruft Ihr Mac-Administrator den Benutzer auf sudo, nicht der someuserBenutzer, sodass Sie das someuserKennwort nicht eingeben .

  • sudo bedeutet, etwas mit Superuser-Rechten auszuführen.
  • -u bedeutet "einen bestimmten Befehl als dieser angegebene Benutzer ausführen".
  • someuser sollte durch Ihren gewünschten Benutzernamen ersetzt werden.

Verwenden Sie, um eine Erstanmeldung als bestimmter Benutzer zu simulieren, einschließlich der Ausführung seiner Startskripte -I.

sudo -u someuser -i nano

Dadurch wird die nanoApp als Benutzer ausgeführt, someuserjedoch erst, nachdem die Startskripts für diesen Benutzer ausgeführt wurden.

Wenn wir keinen Befehl oder keine App angeben, die ausgeführt werden soll, wird eine interaktive Shell als dieser Benutzer ausgeführt.

sudo -u someuser -i

Alte Schule: sudo su someuser

Ein anderer Ansatz verwendet den suBefehl in Kombination mit dem Befehl sudo. Der suBefehl bedeutet "Benutzer wechseln".

sudo su someuser

Fügen Sie den Bindestrich hinzu, um die Startskripte des Benutzers auszuführen.

sudo su - someuser

root Benutzer

Der rootBenutzer in Unix-bezogenen Betriebssystemen hat die absolute Macht, alles zu tun.

Apple hat beschlossen, das rootKonto in macOS zu deaktivieren , Sicherheitslücken zu vermeiden und Sie davor zu schützen, sich in den Fuß zu schießen. Apple entwickelte die Idee der Administrator- Benutzerkonten, die viele Befugnisse haben, mehr Befugnisse als ein Standard- Benutzerkonto, aber keine absoluten Befugnisse wie rootdiese. Weitere Informationen finden Sie in diesem Apple Support-Hinweis .

Wenn nötig, Sie können die ermöglichen rootBenutzer in macOS und wechseln Sie dann zu diesem Benutzer. Dies wird dringend abgeraten. Ich würde diesen Weg nur als verzweifeltes letztes Mittel beschreiten.


Weitere Informationen hierzu im Kontext des postgresBenutzers, der das Postgres- Datenbanksystem unter macOS ausführt, finden Sie unter dieser Frage auf der Schwestersite DBA Stack Exchange .

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.