Ketika pengguna masuk ke sistem dan tidak ada direktori home, kami ingin membuat direktori home pengguna menggunakan pam_mkhomedir . Ini adalah praktik umum. Berikut deskripsi singkat tentang pam_mkhomedir:
Modul PAM pam_mkhomedir akan membuat direktori home pengguna jika tidak ada saat sesi dimulai. Ini memungkinkan pengguna untuk hadir dalam basis data pusat (seperti NIS, kerberos atau LDAP) tanpa menggunakan sistem file terdistribusi atau pra-membuat banyak direktori. Direktori kerangka (biasanya / etc / skel /) digunakan untuk menyalin file default dan juga menetapkan umask untuk pembuatannya.
Namun, ini adalah sistem FreeBSD 8.2 yang menjalankan ZFS. Kita perlu menjalankan perintah ZFS terlebih dahulu, karena kita menginginkan satu sistem file ZFS per pengguna . pam_mkhomedir
dapat melakukan mkdir
, tetapi kita perlu melakukan sesuatu seperti zfs create /zpool/home/$USER
.
Adakah yang tahu apakah mungkin menggunakan PAM untuk menjalankan perintah selama sesi login pertama pengguna?
Jawaban:
Ada modul PAM yang disebut
pam_exec
- jika Anda menulis skrip yang memeriksa dan / atau membuat volume ZFS, Anda dapat rantai ini ke aturan PAM yang ada dan menjaga hal-hal baik tanpa mengasumsikan login interaktif, kerang default & direktori kerangka, dll. Untuk Misalnya, Anda bisaatau apa pun yang sesuai dengan pengaturan spesifik Anda.
(Seperti yang ditunjukkan Tom Shaw dalam komentar, memiliki
session required pam_mkhomedir.so
akan berlebihan.)sumber
Layak untuk ditunjukkan, seperti yang ditanyakan, pertanyaan Anda mengandung asumsi yang tidak valid: bahkan PAM tidak tahu apakah itu login pertama pengguna; hanya tahu apakah pengguna memiliki direktori home atau tidak.
Jadi, dengan peringatan itu dalam pikiran, itu bukan PAM yang melakukannya, tetapi Anda dapat dengan mudah menjalankan sesuatu
/etc/bashrc
, dengan perintah didahului dengan cek untuk, dan diikuti oleh setetes, sebuah dotfile di direktori home pengguna. Perlu root privs? Entah yang dikunci dengan tepatsudo
, atau biner setuid, mungkin akan bekerja paling baik untuk Anda. Kedua opsi juga memberi Anda opsi untuk meletakkan dotfile di suatu tempat di mana pengguna tidak dapat memodifikasi atau menghapusnya (jika Anda peduli tentang hal semacam itu).sumber
Jadi Anda punya dua pilihan di sini:
1) memodifikasi sumber untuk pam_mkhomedir untuk membuat sistem file zfs terlebih dahulu sebelum membuat direktori. 2) biarkan pam_mkhomedir berjalan seperti biasanya, kemudian tambahkan skrip untuk memeriksa dan melihat ketika ada folder tidak pada sistem file zfs mereka sendiri di mana pengguna telah logout. Ketika Anda menangkap kasus-kasus itu, pindahkan direktori / home, buat sistem file, lalu pindahkan file kembali ke direktori.
Saya menduga meninggalkan pengguna di main / home untuk hari pertama tidak akan menyebabkan terlalu banyak masalah, jadi saya akan memilih opsi yang terakhir, lebih sederhana.
sumber