Soru PAM: pam_mkhomedir'den önce bir komut yürütmek mi?


Bir kullanıcı bir sistemde oturum açtığında ve giriş dizini olmadığı zaman, kullanıcının giriş dizinini kullanarak oluşturmak isteriz. pam_mkhomedir. Bu yaygın bir uygulamadır. İşte pam_mkhomedir'in kısa bir açıklaması:

Pam_mkhomedir PAM modülü, oturum başladığında mevcut olmayan bir kullanıcı giriş dizini oluşturacaktır. Bu, kullanıcıların dağıtılmış dosya sistemi kullanmadan veya çok sayıda dizini önceden oluşturmadan merkezi veritabanında (NIS, kerberos veya LDAP gibi) bulunmalarına olanak tanır. İskelet dizini (genellikle / etc / skel /), varsayılan dosyaları kopyalamak için kullanılır ve ayrıca oluşturma için bir umask ayarlar.

Ancak, bu ZFS çalışan bir FreeBSD 8.2 sistemidir. Önce bir ZFS komutu yürütmeliyiz, çünkü istediğimiz kullanıcı başına bir ZFS dosya sistemi. pam_mkhomedir yapabilirsin mkdirama bizim gibi bir şeyler yapmalıyız zfs create /zpool/home/$USER.

Bir kullanıcının ilk oturum açma oturumu sırasında komutları yürütmek için PAM kullanmanın mümkün olup olmadığını bilen var mı?


7
2018-05-24 00:51


Menşei


Solarisinternals.com bağlantısını archive.org'dan arşivlenmiş bir sürümle değiştirdim, çünkü eski bir alandaki bir gecekondu tarafından işgal edildi. Bunu işaretlemek için @Norman Gray'e teşekkürler. - Stefan Lasiewski


Cevaplar:


Adında bir PAM modülü var pam_exec - ZFS birimini denetleyen ve / veya yaratan bir komut dosyası yazarsanız, bunu mevcut PAM kurallarınıza zincirleyebilir ve etkileşimli oturum açma, varsayılan kabuklar ve iskelet dizinleri vb. varsayımı olmadan işleri iyi tutabilirsiniz. Örneğin,

session required pam_unix.so
session required pam_exec.so check_zfs.sh $PAM_USER

veya belirli kurulumunuza uygun olan her şey.

(Tom Shaw'un yazdığı gibi, session required pam_mkhomedir.so gereksiz olurdu.)


8
2018-05-24 02:49



Pam_mkhomedir.so satırında bir yazım hatası dışında iyi - pam.conf içinde yazım hataları iyi değil! - ve check_zfs.sh betiğinin tüm kirli işleri yapması durumunda bu hatta gerekli olduğunu düşünmüyorum. - Tom Shaw
@Tom PAM modülü sizin için ne zaman yapsın? - Andrew
Sorunun amacı, "mkdir" yerine "zfs create" ile oluşturulacak ana dizinin olmasını istiyor. Bu pam_exec kullanılarak gerçekleştirilir. Bu noktada dizin var, böylece sonraki pam_mkhomedir hiçbir şey yapmayacak! - Tom Shaw
@TomShaw gerçekten. - Andrew


Sorulduğunda, sorunuzun geçersiz bir varsayım içerdiğine işaret etmeye değer: PAM'ın kullanıcının ilk girişi olup olmadığı konusunda hiçbir fikri yok; Sadece kullanıcının bir giriş dizini olup olmadığını bilir.

Yani, bu uyarı akılda tutularak, PAM yapmak değil, ama /etc/bashrcKomutun bir kontrolle önceliği vardır ve ardından kullanıcının giriş dizinindeki bir nokta dosyası açılır. Kök özellerine mi ihtiyacınız var? Ya uygun şekilde kilitlenmiş sudoYa da bir setuid ikili, muhtemelen sizin için en iyi şekilde çalışacaktır. Her iki seçenek de, dotfile'ı kullanıcının değiştiremeyeceği veya silemeyeceği bir yere koymanızı sağlar (bu tür bir şeyi önemsiyorsanız).


2
2018-05-24 01:20



Kafam karıştı. Pam_mkhomedir, bu ana dizinleri oluşturma, / etc / skel, vb içeriğini kopyalama değil mi? C koduna (FreeBSD'de) baktım ve iskelet dosyalarının yeni oluşturulmuş homedirine nasıl kopyalandığını görebileceğimi düşündüm. - Stefan Lasiewski
Bir kullanıcının bir giriş dizini olmaması, daha önce bu sisteme giriş yapmadıkları anlamına gelmez. Örneğin, giriş dizini silinmiş olabilir. Ancak bu çoğunlukla semantik ve yarma kıllarıdır. - Red Tux
@red: Anlayın. Sorumu güncelledim. - Stefan Lasiewski


Yani burada iki seçeneğin var:

1) dizini yapmadan önce zfs dosya sistemini oluşturmak için pam_mkhomedir kaynağını değiştirin. 2) pam_mkhomedir normal çalışacak şekilde çalışmasına izin verin, ardından kullanıcının oturumu kapattığı kendi zfs dosya sisteminde olmayan klasörlerin olup olmadığını kontrol etmek ve görmek için bir komut dosyası ekleyin. Bu vakaları yakaladığınızda, / home dizinini taşıyın, dosya sistemini yapın ve dosyaları tekrar dizine taşıyın.

Bir kullanıcının ilk gün için ana / evden ayrılmasının çok fazla sorun yaratmayacağından şüpheleniyorum, bu yüzden ikinci seçenek için daha basit olanı seçeceğim.


0
2018-05-24 02:06