Wenn sich ein Benutzer bei einem System anmeldet und kein Ausgangsverzeichnis vorhanden ist, möchten wir das Ausgangsverzeichnis des Benutzers mit pam_mkhomedir erstellen . Dies ist eine gängige Praxis. Hier ist eine kurze Beschreibung von pam_mkhomedir:
Das PAM-Modul pam_mkhomedir erstellt ein Benutzerverzeichnis, wenn es zu Beginn der Sitzung nicht vorhanden ist. Auf diese Weise können Benutzer in einer zentralen Datenbank (wie NIS, Kerberos oder LDAP) vorhanden sein, ohne ein verteiltes Dateisystem zu verwenden oder eine große Anzahl von Verzeichnissen vorab zu erstellen. Das Skeleton-Verzeichnis (normalerweise / etc / skel /) wird zum Kopieren von Standarddateien verwendet und legt auch eine Umask für die Erstellung fest.
Dies ist jedoch ein FreeBSD 8.2-System, auf dem ZFS ausgeführt wird. Wir müssen zuerst einen ZFS-Befehl ausführen, da wir ein ZFS-Dateisystem pro Benutzer benötigen . pam_mkhomedir
kann ein tun mkdir
, aber wir müssen so etwas tun zfs create /zpool/home/$USER
.
Weiß jemand, ob es möglich ist, mit PAM Befehle während der ersten Anmeldesitzung eines Benutzers auszuführen?
Antworten:
Es gibt ein PAM-Modul namens
pam_exec
- Wenn Sie ein Skript schreiben, das nach dem ZFS-Volume sucht und / oder es erstellt, können Sie dies in Ihre vorhandenen PAM-Regeln einketten und die Dinge schön halten, ohne interaktives Login, Standard-Shells und Skeleton-Verzeichnisse usw. anzunehmen Beispiel könnten Sie habenoder was auch immer zu Ihrem spezifischen Setup passt.
(Wie Tom Shaw in den Kommentaren betonte,
session required pam_mkhomedir.so
wäre es überflüssig , wenn er es getan hätte.)quelle
Wie bereits erwähnt, enthält Ihre Frage eine ungültige Annahme: Selbst PAM hat keine Ahnung, ob es sich um die erste Anmeldung des Benutzers handelt. Es weiß nur, ob der Benutzer ein Home-Verzeichnis hat oder nicht.
In Anbetracht dieser Einschränkung ist es nicht PAM, das dies tut, aber Sie könnten leicht etwas davon
/etc/bashrc
verlieren, wobei dem Befehl eine Überprüfung auf eine Punktdatei im Home-Verzeichnis des Benutzers vorausgeht und diese anschließend gelöscht wird. Benötigen Sie Root-Privilegien? Entweder eine entsprechend gesperrtesudo
oder eine setuid-Binärdatei funktioniert wahrscheinlich am besten für Sie. Beide Optionen bieten Ihnen auch die Möglichkeit, die Punktdatei an einem Ort abzulegen, an dem der Benutzer sie nicht ändern oder löschen kann (wenn Sie sich für solche Dinge interessieren).quelle
Sie haben hier also zwei Möglichkeiten:
1) Ändern Sie die Quelle für pam_mkhomedir, um zuerst das zfs-Dateisystem zu erstellen, bevor Sie das Verzeichnis erstellen. 2) Lassen Sie pam_mkhomedir wie gewohnt laufen und fügen Sie dann ein Skript hinzu, um zu überprüfen, ob sich Ordner in ihrem eigenen zfs-Dateisystem befinden, in denen sich der Benutzer abgemeldet hat. Wenn Sie diese Fälle abfangen, verschieben Sie das Verzeichnis / home, erstellen Sie das Dateisystem und verschieben Sie die Dateien zurück in das Verzeichnis.
Ich vermute, dass das Verlassen eines Benutzers für einen ersten Tag im Haupt- / Heimbereich nicht zu viele Probleme verursachen wird. Daher würde ich mich für die letztere Option entscheiden, die einfacher ist.
quelle