PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : shadow in chroot, hard links und binds



Tom975
30.07.12, 15:13
Hallo allerseits,
ich habe folgendes Problem: Ich richte auf einem Server für jeden (nicht vertrauenswürdigen) Benutzer eine eigene chroot Umgebung ein und erlaube über SSH einzuloggen und einen ausgewälten Satz von Programmen zu benutzen. Das funktioniert bisher auch ganz gut mit der Einschränkung dass die Benutzer ihr Passwort nicht ändern können.
Der erste Ansatz dazu war, die /etc/shadow mit mount in die chroot Umgebung zu binden. Wenn dann ein benutzer versucht sein Passwort zu ändern, kommt folgende Meldung:

$ passwd
Changing password for test.
(current) UNIX password:
Enter new UNIX password:
Retype new UNIX password:
passwd: Authentication token manipulation error
passwd: password unchanged
Es kann also auf die shadow in der chroot Umgebung zugegriffen werden, aber das Passwort kann nicht geändert werden.
Binde ich die /etc/shadow über einen hard link in die chroot Umgebung ein, ist das ändern des Passworts erfolgreich, jedoch nur in der chroot Umgebung zu sehen. Ausserhalb der chroot Umgebung ist noch das alte Passwort. Da SSH beim login aber in der System shadow nach dem Passwort sucht, kann sich der Benutzer nur mit seinem alten Passwort anmelden.
Die beiden Dateien sind sogar nach einem Neustart verschieden, es kann also nicht an einem sync Problem liegen.
Weiß jemand Rat? Wie kann es sein dass bei einem hard link nach einer Änderung zwei verschiedene Dateien vorhanden sind? Und wieso kann man die über mount gebindete shadow nicht ändern? mount sagt die Datei ist rw eingebunden...
Vielen Dank schonmal

medhefgo
31.07.12, 10:07
Um die Passwortdatei nicht zu beschädigen, speichert passwd die Änderungen zuerst in eine temporäre Datei und verwendet dann das atomare rename um die alte Datei mit der neuen zu ersetzen. Hardlinks werden dadurch natürlich aufgehoben, und Änderungen verbleiben damit nur im chroot.

Tom975
31.07.12, 10:50
Dann gibt es vermutlich keine saubere Lösung das ändern des Passworts im chroot zu erlauben außer Netzwerkbasiert mit LDAP oder ähnliches. Seht ihr ein Sicherheitsrisiko wenn ich ein Skript laufen lasse dass nach Unterschieden in der shadow des Systems und der Benutzer sucht und diese dann in die Systemdatei einträgt?