Linux mint; Ist das "Su-Passort" das Benutzerpasswort mit dem man sich der Benutzer anmeldet?
Hallo,
Linux mint; Ist das "Su-Passort" das Benutzerpasswort mit dem man sich der Benutzer anmeldet?
5 Antworten
Der Befehl su verlangt das Passwort von root.
Der Befehl sudo verlangt das Passwort des angemeldeten Users. Braucht man su, so ruft man einfach sudo su auf und gibt sein Passwort ein.
Bei Debian hat der Anwender keine sudo-Berechtigung, wenn der root-Zugang eingerichtet wurde. Da muss mann also das Passwort von root kennen.
Bei Ubuntu und Mint ist die sudo-Berechtigung für den bei der Installation eingerichteten eingerichteten User aktiv. Will man auch den Zugang für root freischalten, ruft man einfach sudo passwd root auf.
su steht für "substitute user". So kann man sich als einen anderen Benutzer "ummelden".
Ohne Benutzernamen, also nur "su" wird automatisch "su root" gemacht. Dann muss man das Passwort vom "root" eingeben.
Mint hat aber nach der Installation kein root Benutzerkonto, also gibt es auch kein Passwort dafür.
Man muss "sudo" benutzen. Das steht für "substitute user - do". Hier wird dann alles was dahinter steht mit root rechten ausgeführt. Da es ja keinen Benutzer "root" gibt, muss man dann das eigene benutzerpasswort angeben. Der erste Account den man bei der Installation anlegt hat die Rechte dafür.
Bei allen weiteren Accounts die man anlegt muss man das in den Account Einstellungen frei schalten, nur der erste Account kann also immer "sudo" benutzen.
Gibt es einen "root account", dann muss man auch bei sudo das Passwort vom root Account eingeben. Bei Mint, SteamOS und Ubuntu (und anderen) ist das aber nicht der Fall.
Du kannst aber einen root account anlegen. Ich persönlich bevorzuge ein echtes Root-Passwort.
Dazu kannst Du "sudo -s" verwenden. Das wirkt dann wie "su", benötigt aber das normale sudo passwort. Schon bist Du permanent mit root-rechten unterwegs. Jetzt kannst Du im nächsten Schritt mit "passwd" das root-passwort einstellen.
Ab dann kannst Du dich als "root" anmelden und "su" benutzen.
Bei einigen Distris ist "sudo -s" gesperrt. Dann sollst Du nicht "root" werden können. Das lässt sich aber leicht austricksen. Fast immer klappt dann "sudo su" um "root" zu werden und dann ein Passwort an zu legen.
root ist kein Account. Deswegen findet man "root" auch nicht in der Liste der User und der root hat auch keine User-ID.
"root" ist also kein User und kein Account. "Root" ist aber fester Bestandteil des Systems und kann nicht entfernt werden. Daher ist "root" auch in Distris drin die keinen "root" haben wollen.
Es wird ja schon fast von den Anfängen von Linux geraten sich nicht als "root" an zu melden und stattdessen sudo zu verwenden. Aber da das sozusagen untrennbar im System drin steckt, kann man auch bei Disris die eine Anmeldung als "root" nicht wollen als solcher anmelden. Bei vielen ist auch das sudo -s so umprogrammiert, dass das nicht funktioniert. aber "sudo su root" oder "sudo su" als Kurzfassung funktioniert noch.
root ist der Account mit der UID 0, mit dem man sich, sobald man ein Passwort gesetzt hat, auch anmelden kann. Dass man das normalerweise nicht tun sollte, ist eine andere Frage.
Debian fragt bei der Installation, ob ein Passwort für root gesetzt werden soll. Wenn ja, dann bekommt der bei der Installation eingerichtete User keine sudo-Berechtigung. Ubuntu und Mint fragen bei der Installation nicht, geben dem User aber sudo-Berechtigung.
root ist aber kein Account. Man könnte das höchstens als "Simulierten Account" ansehen.
Denn ohne User-ID kann das Sytem nicht auf einen Account zugreifen.
In meinem Beitrag hatte ich mich verleiten lassen das als "account anlegen" zu bezeichnen wenn man ein root Passwort anlegt. Das ist natürlich nicht richtig, man kann sich das aber der Einfachheit halber so vorstellen als wenn das so funktionieren würde
Schau mal in die /etc/shadow rein.
Die Einträge sind wie folgt:
Username: Passwort: Alter: min. Alter: max. Alter: Warnzeit: Pufferzeit: Ungültigkeit: Reserviert
Und bei Root gibt es nur root:Passwort
Denn das ist kein Account, hat also keine weiteren Informationen.
root hat die User-ID 0. Der Account ist nicht simuliert sondern einfach in jedem Linux fest eingebaut. Es ist auch kein Problem, Linux ausschließlich mit root zu betreiben.
Die "0" bedeutet hier "NUL" oder "VOID". Also in dem Fall "kein Account"
Versuch das mal auf "1" oder so was zu setzen. Das geht nicht, eben weil es keinen Account gibt.
Bei root überflüssige Informationen, werden in /etc/shadow weggelassen, weil dieser Account immer gültig ist. Du kannst die zusätzlichen Informationen auch spaßeshalber in die Datei einfügen, sie werden einfach ignoriert.
Der "root" account ist eine Simulation, der wird "on the fly" erzeugt wenn man den benutzt.
Das ist wie mit dem "/proc" verzeichnis. Auch das gibt es nicht. Da scheinen Dateien drin zu sein und die haben auch einen Inhalt. Der Inhalt dieser Dateien wird aber beim abruf vom System "on the fly" erzeugt, der ist nirgendwo gespeichert.
Die "0" bedeutet hier "NUL" oder "VOID". Also in dem Fall "kein Account"
Nein. 0 ist der erste Account auf dem System. Die kleinste natürliche Zahl (was ja für Nummerierungen die einfachste Methode ist), ist nun einmal die 0.
"kein Account" bedeutet zwangsweise "keine Anmeldung".
Warum sind dann die anderen User 1000 und höher wenn es um die ersten verfügbaren Zahlen geht?
Das ist wie mit dem "Return" Werten eines Programmes oder einer Funktion. "0" hat eine besondere Bedeutung. "0" bedeutet dann "kein Fehler", alle anderen Werte sind dann die Nummer des Fehlers.
In programmen benutzt man das Zero-Flag um Entscheidungen zu treffen. ist das an, also man hat eine "0", hat das eine andere Bedeutung als jeder andere Wert.
Das System kann also beim root schnell feststellen ob das ein echter Account ist oder alles was mit Accounts zu tun hat simuliert wird. Deswegen hat root die "0".
root wird nicht "on the fly" erzeugt, schließlich wird der Account zwingend benötigt, um das System überhaupt laufen zu lassen.
Bevor man sich überhaupt am System anmelden kann, laufen schon viele Tasks als root.
Um beim Debian-Zweig zu bleiben: Schon der erste Task (systemd) läuft als root.
Der läuft als root, aber nicht in einem Account.
Schau Dir mal Distris an die kein root Passwort fragen. Da gibt es kein /root und auch kein /home/root.
Man braucht keinen Account für das Rechte Management. Die User-ID "0" schaltet das alles automatisch frei, ganz ohne Accountinfos.
Da sind wir auch wieder bei der "0".
Ist das Zeroflag aus, muss geprüft werden ob der Benutzer das darf. Ist das an, darf der das ohne Prüfung.
Und das macht ja eine Anmeldung als "root" so gefährlich weil da keinerlei prüfungen gemacht werden.
Würde jeder Prozess der als "root" ausgeführt wird immer wieder prüfen ob root das darf, dann wäre Linux "schnarchlangsam".
Warum sind dann die anderen User 1000 und höher wenn es um die ersten verfügbaren Zahlen geht?
Ganz einfach: Das System kennt noch eine Reihe anderer fest implementierte Accounts, und da wurde eben festgelegt, dass für normale User die Zählung bei 1000 beginnt.
Meine /etc/shadow sieht übrigens so aus:
root:$y$j9T$KoAjEolP1.SgeP/PTrpSf/$aOsVpzOD2rq09vnPPlsshyUhbulPrA0ilOELv7C/Sx7:20200:0:99999:7:::daemon:*:20192:0:99999:7:::bin:*:20192:0:99999:7:::sys:*:20192:0:99999:7:::sync:*:20192:0:99999:7:::games:*:20192:0:99999:7:::man:*:20192:0:99999:7:::lp:*:20192:0:99999:7:::mail:*:20192:0:99999:7:::news:*:20192:0:99999:7:::uucp:*:20192:0:99999:7:::proxy:*:20192:0:99999:7:::www-data:*:20192:0:99999:7:::backup:*:20192:0:99999:7:::list:*:20192:0:99999:7:::irc:*:20192:0:99999:7:::_apt:*:20192:0:99999:7:::nobody:*:20192:0:99999:7:::systemd-network:!*:20192::::::systemd-timesync:!*:20192::::::messagebus:!:20192::::::usbmux:!:20192::::::avahi:!:20192::::::speech-dispatcher:!:20192::::::pulse:!:20192::::::saned:!:20192::::::geoclue:!:20192::::::sddm:!:20192::::::polkitd:!*:20192::::::rtkit:!:20192::::::colord:!:20192::::::
boss:$y$j9T$DdNPQqvaIBq1iQ6CDx.3l/$0t9n8WzvTbnPIt5CFydqqT4VB.CtDaX/Yxnv3Ro17B/:20192:0:99999:7:::
Fällt Die etwas bei root auf? Dort stehen genauso viele Informationen wie bei boss (dem einzigen auf dem Rechner eingerichteten User). Ganz einfach, weil ich ein Passwort für root gesetzt habe. Für die ganzen Systemaccounts, die dazwischen aufgelistet sind, habe ich kein Passwort gesetzt, da ist auch nichts mit anmelden. Alle Accounts außer nobody und boss haben UIDs < 1000.
Die ersten 11 übrigens von 0 bis 10, es sind fest implementierte Accounts. nobody mit der 65534 übrigens auch. Die anderen Accounts hängen von der jeweiligen Installation ab.
Das ist wie mit dem "Return" Werten eines Programmes oder einer Funktion. "0" hat eine besondere Bedeutung. "0" bedeutet dann "kein Fehler", alle anderen Werte sind dann die Nummer des Fehlers.
0 hat bei verschiedenen Dingen verschiedene Bedeutungen. Ein Return > 0 KANN eine Fehlermeldung sein, muss es aber nicht. Und wenn ein Programm einen berechneten Wert zurückliefern soll, kann der auch 0 sein.
Das System kann also beim root schnell feststellen ob das ein echter Account ist oder alles was mit Accounts zu tun hat simuliert wird. Deswegen hat root die "0".
root ist ein echter Account, nur eben fest im Kernel implementiert und mit allen im System verfügbaren Rechten. Dieser Account wird NICHT "on the fly" erstellt, er ist mit dem ersten Task des Systems bereits aktiv. Kannst Du leicht überprüfen:
ps -u 0 | more
Wenn Du jetzt damit kommst "da ist ja die 0 nicht dabei": Richtig, 0 ist der aufrufende Prozess, kannst Du in einer login-shell leicht überprüfen mit kill -9 0, dann fliegst Du raus.
Wenn aber der erste Task bereits als root läuft, mit welchem Task wurde dann der User root "on the fly erstellt"? Dafür bräuchte man root-Rechte. Die Lösung ist einfach: Der gesamte Kernel Mode läuft schon als root, ein "on the fly" erstellen des Users hat sich also erledigt. Sobald der Kernel geladen ist, noch bevor er irgendwelche Module lädt oder Tasks startet, werkelt schon der Account root.
Der läuft als root, aber nicht in einem Account.
doch
Schau Dir mal Distris an die kein root Passwort fragen. Da gibt es kein /root und auch kein /home/root.
Das Verzeichnis ist nicht der Account. Prinzipiell kommt jeder Account ohne eigenes Verzeichnis aus.
Die Tatsache, dass ein User in /etc/shadow gelistet ist, ist Beweis genug, dass der Account existiert. Dafür benötigt er KEIN Home-Verzeichnis. Auch alle anderen User können mit einem simplen useradd ohne Home-Verzeichnis angelegt werden. Die landen dann eben in /, wo sie zwar keine Daten ablegen können, was die Nutzung also auf nur sehr wenige Möglichkeiten einschränkt. Für bestimmte Jobs kann das sinnvoll sein, SAP (übrigens auch Linux) macht davon massiv gebrauch.
In meinem Beitrag hatte ich mich verleiten lassen das als "account anlegen" zu bezeichnen wenn man ein root Passwort anlegt. Das ist natürlich nicht richtig, man kann sich das aber der Einfachheit halber so vorstellen als wenn das so funktionieren würde.
useradd root führt zu "account already exists", selbst wenn man einem User explizit das Recht gibt, Accounts anzulegen und das Kommando useradd zu benutzen (also Schreibrechte auf /etc/shadow und /etc/passwd und Ausführungsrechte auf /sbin/useradd gibt) und kein root angemeldet ist (der Account root also nach Deiner Darstellung nicht existiert).
Nein, Su steht bei Linux für Super User. Das ist der, der alles darf, auch das was der Nutzer nicht darf. So ähnlich wie der Admin bei Windows. Ich frage mich aber ob Linux das Richtige für jemanden ist der schon daran scheitert solche Kleinigkeiten zu googeln.
https://linux-bibel.at/index.php/2023/09/03/sudo-und-su-administrator-unter-linux/
Linux soll für alle da sein! Früher war das kaum möglich, weshalb Linux auch keine echte Alternative zu Windows war. Nun Linux-User wegen Unwissenheit zu vergraulen macht keinen Sinn.
Das war so nett wie ich konnte. Und die Absicht war nicht ihn von Linux abzuhalten sondern ihn anzuspornen doch einfach mal zu googeln wenn man was nicht weiß.
PS.:
Linux soll für alle da sein! Früher war das kaum möglich, weshalb Linux auch keine echte Alternative zu Windows war.
Den Spruch höre ich seit ich meinen ersten PC hatte. Ist das jetzt endlich wirklich so?
Nein, "su" steht für "substitute user".
Man kann zum Beispiel "su meier" eingeben um zu Benutzer "Meier" zu werden. Das macht den Meier noch lange nicht zum "Super User".
Wenn man "su" ohne alles eingibt, ist das genau wie "su root". Das ist einfach nur eine Vereinfachung um nicht immer " root" mit tippen zu müssen.
su steht für switch user oder substitute user. Gibt man keinen User an, geht das Kommando davon aus, dass root gemeint ist.
su (substitute user) nimmt ohne explizite Nutzerangabe an, daß root verlangt wird und fragt nach dessen Passwort.
Nein, das wäre ja fatal! Das ist das root-user-Passwort.
Dann sollte es bei Mint Dein Passwort sein. Das wird bei anderen Linux-Distris verschieden gehandhabt.
Unter Mint wird nowmalerweise kein Passwort für root gesetzt, daher ist die Anmeldung als root nicht möglich. su geht da auch nicht. Dafür funktioniert beim User, der bei der Installation eingerichtet wurde, das Kommando sudo.
ach steht sudo -> su do -> super user do -> super user is doing
Ja das ist dann äquivalent dazu, dass du eben mit sudo die Bash startest, du meldest dich aber nicht direkt mit root an wie es su alleine machen würde.
Bei Ubuntu ind Mint wird bei der Installation kein root-Passwort gesetzt, deshalb kann man sich auch nicht als root anmelden. Dafür erhält der User, der bei der Installation eingerichtet wird, sudo-Berechtigung.
Auf einem Mac läuft es auch so und unter Windows ähnlich.
Eigentlich steht su für substitute user und sudo für substitute user do.
Du kannst mit su einen login auf ein anderes Konto machen das kann root sein muss aber nicht.
Sudo hingegen führt den nachstehenden Befehl lediglich mit den Nutzerrechten des gewählten Nutzers aus.
Das ist eine der ersten Änderungen, die ich bei Ubuntu und seinen Derivaten (also auch Mint) vornehme. Ich setze ein Passwort für root, und schon kann sich root auch anmelden.
Kann man so machen du solltest dann eben nur bei einem ssh Server den direkten Login per root deaktivieren.
Also das hat schon einen Grund warum root per Default deaktiviert ist aber wie viel zusätzliche Sicherheit bringt, darüber lässt sich natürlich streiten.
OpenSSH hat root von Hause aus deaktiviert. Sollte man so lassen. Am sichersten ist es, wenn man den Login bei SSH über Zertifikat UND Passwort einrichtet.
Geht weniger um den Login an sich sondern mehr darum dass du ein Programm hast welches direkt eine Rootshell von außen öffnen kann.
Wenn der root user selbst keine Anmeldung erlaubt könnte der ssh server nur eine shell für einen nonroot user öffnen.
su verlangt immer das Passwort von root. Solange für root kein Passwort gesetzt wurde, funktioniert su nicht. Dafür funktioniert sudo für den bei der Installation eingerichteten User.
Raspberry Pi OS fragt gleich nach dem ersten Login, ob man für den User und für root die default-Passwörter ändern will. Muss man natürlich machen, wenn das System sicher sein soll.
Ich weiß, dass es das tut, es geht viel mehr darum, dass das System von Grund auf nicht auf Sicherheit ausgelegt war und diese nachträglich erst wieder hinzugenommen wird.
Raspbian war eben von Grund auf für Bastler konzipiert die sich nicht viel mit Linux beschäftigen wollen, sondern die eben mit Python direkt loslegen wollen. Also gleicher Default Nutzer, sudo ohne Passwort usw.
Wenn das System sicher sein soll würde ich aus diesem Grund kein Raspbian drauf laufen haben sondern Debian selbst.
Wenn der root user selbst keine Anmeldung erlaubt könnte der ssh server nur eine shell für einen nonroot user öffnen.
Und das ist auch gut so.
Ja es war auch genau so gemeint, dass das sinnvoll ist wenn der root user keine Anmeldung erlaubt, daher hat er ja eben unter Ubuntu kein Passwort, als zusätzlichen Schutz.
Denn account root gibt es auf jedem Linux. Mit sudo passwd gibt man ihm ein Passwort und kann sich dann auch als root anmelden.