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

Immer wenn ich versuche, etwas auszugeben su, bekomme ich Folgendes:

$ su  
Password:  
su: Sorry

Unnötig zu sagen, dass ich das richtige Admin-Passwort eingebe, das mit funktioniert sudo. sudoWas ich möchte, ist, nicht jedes Mal eintreten zu müssen.

Antworten (7)

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

Wenn Sie den Root-Benutzer aktivieren müssen , lesen Sie den technischen Hinweis von Apple: Enabling and using the "root" user in Mac OS X .

sudo sufunktioniert immer noch, also ist es nicht wirklich deaktiviert. Es hat nur kein Passwort.
@FakeName Das ist die urkomischste Hintertür! Wenn Sie laufen können sudo su, was in aller Welt bringt es sudann, es zu deaktivieren?
@KolobCanyon - Es geht nicht wirklich darum, "deaktivieren su", sondern die Root-Anmeldung zu verhindern . Indem Sie die Anmeldung als verbieten root, verhindern Sie eine Reihe möglicher Sicherheitsprobleme. Jemandem nicht zu erlauben, der es kann sudo, suist irgendwie albern. Ändert im Grunde sunur die aktuelle Benutzer-ID und führt einen Befehl aus (eine Shell, falls nicht angegeben). Wenn die Benutzer-ID bereits 0 (root) ist, z. B. wenn sie mit ausgeführt sudowird, gibt es nichts zu tun, also führt sie einfach die Shell aus. Sie können einen ähnlichen Effekt erzielen, indem Sie sudo bash.
@FakeName Immer noch verwirrt. Was ist der Unterschied zwischen der Anmeldung als root und dem Ausführen von 'sudo su'? Ist es nicht effektiv das gleiche Niveau?
@KolobCanyon - Nein. Wenn Sie login deaktivieren , bedeutet dies im Grunde, dass ein Hacker eine Schwachstelle im Anmeldeprozess nicht verwenden kann, um direkt root zu werden. Im Grunde verschiebt es die erforderliche Root-Kompromittierung von "Login-Kompromittierung" zu "Login-Komprimierung für Benutzerkonto + privesc". Es wird im Grunde als Tiefenverteidigungssache durchgeführt.

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

Der Apple Way(tm) dient dazu sudo, Befehle auszuführen, die erhöhte Berechtigungen erfordern, und nicht, zu einer Root-Shell zu wechseln und von dort aus zu arbeiten.
@ Ian C. - Nein, das ist eigentlich der Unix-Weg. Apple verwendet es nur, weil es auch *nix-basiert ist.
@Fake Name: Apple gibt sich große Mühe, niemals mit Benutzern über die Root-Shell zu sprechen oder sie offenzulegen. Man könnte sagen, dass sie das sudoEthos auf die Spitze treiben. Aber egal: Semantik. Verwenden Sie keine Root-Shells in OS X.
@Ian C - Apple tut nicht viel mehr als die * nix-Designer, Apple spricht nur nicht viel darüber. In beiden Fällen ist es da, nur bei Dingen wie Linux, die dir sagen, wie man es einfach benutzt. Wenn es dadurch häufiger verwendet wird, deutet dies nicht auf einen zugrunde liegenden Architekturunterschied hin.

Moderne Lösung:sudo -u

Um als andere Verwendung ausgeführt zu werden, verwenden Sie sudo -u.

Um beispielsweise einen Texteditor wie nano auszuführen :

sudo -u someuser nano

…und geben Sie Ihr Mac-Administratorkennwort ein, wenn Sie dazu aufgefordert werden. An dieser Stelle ist es Ihr Mac-Admin-Benutzer, der aufruft sudo, nicht der someuserBenutzer, also geben Sie das someuserPasswort nicht ein.

  • sudobedeutet, etwas mit Superuser-Rechten auszuführen.
  • -ubedeutet „einen angegebenen Befehl als diesen angegebenen Benutzer ausführen“.
  • someusersollte durch Ihren gewünschten Benutzernamen ersetzt werden.

Verwenden Sie -I.

sudo -u someuser -i nano

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

Wenn wir uns dafür entscheiden, keinen auszuführenden Befehl oder keine App anzugeben, erhalten wir eine interaktive Shell, die als dieser Benutzer ausgeführt wird.

sudo -u someuser -i

Alte Schule:sudo su someuser

Ein anderer Ansatz verwendet den suBefehl in Kombination mit der sudo. Der suBefehl bedeutet „Benutzer wechseln“.

sudo su someuser

Oder fügen Sie den Bindestrich hinzu, um die Startskripts des Benutzers auszuführen.

sudo su - someuser

rootBenutzer

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

Apple hat sich entschieden, das Konto in macOS zu deaktivieren, um das rootAusnutzen von Sicherheitslücken zu vermeiden und Sie davor zu schützen, sich selbst ins Knie zu schießen. Apple hat die Idee der Administrator - Benutzerkonten entwickelt, die viele Befugnisse haben, mehr Befugnisse als ein Standard -Benutzerkonto, aber keine absolute Macht wie rootsie hat. Weitere Informationen finden Sie in diesem Apple Support-Hinweis .

Bei Bedarf können Sie den Benutzer in macOS aktivieren rootund dann zu diesem Benutzer wechseln. Davon wird dringend abgeraten. Ich würde diesen Weg nur als verzweifelten letzten Ausweg gehen.


Eine Diskussion dazu im Kontext des postgresBenutzers, der das Postgres -Datenbanksystem unter macOS ausführt, finden Sie in dieser Frage auf der Schwesterseite DBA Stack Exchange .

Ich denke, das kann man als "normaler" User nicht machen...

Wenn es ein anderes Benutzerkonto mit Admin-Rechten 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
Das liegt an einer Zeile in /etc/pam.d/su. account required pam_group.so ...weist das System an, su nur rooten zu lassen, wenn Sie von einem Konto in der Gruppe adminoder wechseln wheel. Sie können diese Zeile auskommentieren, wenn Sie das wirklich wollen, aber ich würde es nicht tun, da es für die (hoffentlich seltenen) Gelegenheiten, in denen Sie root werden müssen, nicht wirklich notwendig ist.

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

Ich hatte das gleiche Problem und wie @Nohillside vorgeschlagen hat, gibt es keine Möglichkeit, über den Befehl su als normaler Benutzer auf root zuzugreifen, indem Sie einfach su verwenden . Wie bereits erwähnt, wird das Hinzufügen des Administratorkontos zum Befehl su erkannt. Auf diese Weise konnte ich mich als Root verbinden. Es ist nicht etwas, was ich oft tun werde. Ich wollte es nur testen und das Ergebnis war eine sofortige Verbindung.

> admin-server:~ admin$ su
> Password:
> su: Sorry
> admin-server:~ admin$ su - admin
> Password:
> admin-server:~ admin$
interessant! Ich bevorzuge, sudo suda es auch unter Linux funktioniert.

Versuchen Sie das Passwort alpine?! Der Legende nach alpinewar das viele Jahre lang das Root-Passwort auf macOS! Sie können von einer Admin-Konto-Shell aus rooten mit:

sudo su 

Ich empfehle dann das Passwort für root zu ändern mit:

passwd

Danach kann ich einfach sudas eigentliche Root-Passwort ausführen und eingeben. Praktisch, um von einem normalen Benutzerkonto aus root zu werden.