/etc/passwd und login shell ?

Domme.

Member
Hallo,
es ist doch normalerweise so, dass man die login shell für einen Benutzer in der Datei /etc/passwd unter dem entsprechenden Benutzernamen angibt. Ich habe das nun bei meinem root und einem normalen Benutzer geändert. Komischerweise hat er aber nur die Shell von root von der csh auf die bash umgestellt. Bei dem anderen User hat sich nichts geändert.

Danke schon mal im voraus!

Domme.
 
Nimm chsh, die passwd kannst du nicht direkt editieren da sie aus der master.passwd generiert wird. Willst du die passwd "direkt" aendern kannst du das auch mit hilfe von z.B. vipw machen.
 
Und bitte auch nicht die master.passwd editieren, denn dann schießt du dir alles weg. Die Magie steckt übrigens in /etc/pwd.db, welche binär ist :)
 
Ok. Erstmal Danke bis hier hin.

Jetzt frage ich mich jedoch warum dann die shell für root geändert wurde ?

Mfg Domme
 
Root ist besonders. Der Nutzeraccount nutzt viel weniger Voodoo als die anderen, damit er auch dann noch funktioniert, wenn das ganze System zerschossen ist. Das betrifft das Auslesen der Shells, aber auch Dinge wie 10 nur für ihn reservierte Prozesse und so.
 
ich habe damit bisher keine Probleme, daß mir etwas in der master.passwd zerschossen ist.
Da trage ich immer die Sprachzugehörigkeit meiner Nutzer ein und ich denke, daß ich da auch schon erfolgreich die shell geändert habe, von sh auf tcsh, was aber ohne genaues Hinsehen auch nicht so einfach zu sehen ist.
 
Genau. passwd generiert den Hash. Welchen Hash genau ist in der Loginklasse in /etc/login.conf.db - generiert aus /etc/login.conf - festgelegt. Diesen Hash schreibt er in /etc/master.passwd. Diese Datei wir auf /etc/passwd umkopiert, im mit alten Programmen, die kein PAM sprechen, kompatibel zu bleiben. Zum Abschluss wird auf /etc/master.passwd das Kommando pwd_mkdb angewandt, um /etc/pwd.db zu generieren. Nun wisst ihr, wie es funktioniert, daher nocheinmal die Warnung: Macht es bitte nicht manuell, außer ihr steht auf Schmerzen.
 
das ist im übrigen mal wieder eine Gelegenheit darauf hinzuweisen, weshalb ich versuche, nicht LINUX zu sagen, wenn ich GNU meine.
Es kann gar nicht gesagt werden, wie das unter LINUX funktioniert, denn Linux ist als Kernel an der Passwortfindung recht uninteressiert.
So gibt es also zusammen mit Linux auch die verschiedensten Möglichkeiten. Ein busybox, das ich hier habe, nutzt etwa eine /etc/passwd und zwar direkt. Es stehen hier die User-Einträge und Passwörter und die werden direkt ausgewertet (die Passwörter sind dabei verschlüsselt). Es leuchtet jedem ein, daß dies schwach ist, denn es kann bei einem User (inklusive root) der Passworteintrag einfach gelöscht werden und schon ist man in der Lage, sich als solcher ohne Passwort einzuloggen. Natürlich muß man zunächst auf der /etc/passwd Schreibrechte erhalten, doch das ist bei den hier genutzten, meist unverschlüsselten Dateisystemen, mitunter einfach und entgegenkommend.
So eine passwd sieht der in FreeBSD genutzten und der master.passwd ähnlich:
Code:
root@dreambox:~> cat /etc/passwd
root:$1$wMskwclU$oxaS8C2XP.HeU79CGElTN/:0:0::/:/bin/sh
sshd:*:65532:65534::/:/bin/false
ftp:*:65533:65534::/:/bin/false
nobody:*:65534:65534::/:/bin/false
pit:$1$zxzuznzo$CKPLz7XGNyiLVUBNmRsSn0:0:0::/:/bin/sh
test:$1$4sBkMtPV$x.OYt5EA.ntc3mrLMYIqI0:100:1000::/:/bin/sh
Bei diesem Beispiel gibt es keine login-Klassen und keine weiteren Feinheiten, nur die passwd.
Auf einem anderen Modell, ebenfalls ein busybox, kein GNU, sieht das so aus:
Code:
root@127.0.0.1:~# cat /etc/passwd
root:x:0:0:root:/root:/bin/sh
sshd:*:33:33:sshd:/:
nobody:*:99:99:nobody:/:
ftp:*:44:44:ftp:/raid/data/ftproot:/dev/null
admin:*:1001:101:admin:/dev/null:/dev/null
sys:x:0:0::/root:/bin/sh
pit:x:1002:1002:Linux User,,,:/home/pit:/bin/sh

root@127.0.0.1:~# cat /etc/shadow
root:$1$$6eRv7PwhvBtV5oAp0CJXn1:11807:0:99999:7:::
sshd:*:12032:0:99999:7:::
nobody:*:11808:0:99999:7:::
ftp:*:12035:0:99999:7:::
admin:$1$$CoERg7ynjYLsj2j4glJ34.:11964:0:99999:7:::
sys:$1$tW$v.OpC0O.s.Oi4qY/6iKl91:13974:0:99999:7:::
pit:$1$$ESMdnFVQn3wyeYv4hFU3Z1:14109:0:99999:7:::
Ähnlichkeiten sind sichtbar, unschwer zu erkennen, daß hier die Passwörter nicht in der passwd stehen und eine eigene Datei, die /etc/shadow genommen wird.
Auf diesem System wird auch irgendeine Benutzerdatenbank gepflegt, die ich nicht verändern konnte. Ihr seht, daß ich einen Nutzer pit anlegen konnte, der auch ein passwort hat, aber der darf sich nicht anmelden und die entsprechenden Systemdateien sind auf einem verschlüsselten RO-Medium geparkt, werden nur beim Booten in die Ramdisk geladen und somit wären alle Änderungen flüchtig.
Also, zweimal busybox und zwei unterschiedliche Modelle, von den unterschiedlichen Verschlüsselungsmethoden für die Passwörter ganz abgesehen.
Dabei bleibt busybox das eher unbekannte Betriebssystem auf einem Linux, GNU ist weitaus gebräuchlicher, doch ich habe da keines greifbar. Es gibt aber unter GNU die unterschiedlichsten Versionen. Im Grunde genommen, fast so viele, wie es unterschiedliche Distributionen gibt. Beinahe, es ist jedenfalls unüberschaubar.

Deshalb stimmt das natürlich auffällig: unter FreeBSD ist das anders.
Es ist auch unter Solaris wieder anders und Mac-OS-X ganz zu schweigen. Intuitiv kann das nicht erfaßt werden, es braucht schon solche Erklärungen, wie yamagi sie lieferte.
 
Zurück
Oben