vsftpd - PAM - MySQL ve pam_mkhomedir dizinleri oluşturmak için


11

Ben mysql DB PAM ile bağlanan sanal kullanıcılarla vsftpd başarıyla kullanıyorum. Şimdi, başarılı vsftpd bağlantısıyla kullanıcı dizinlerinin oluşturulmasını otomatikleştirmek istiyorum.

İşte /etc/pam.d/vsftpd yapılandırması:

#%PAM-1.0
session    optional     pam_keyinit.so    force revoke
auth required pam_mysql.so verbose=1 user=root passwd=mypass host=localhost db=mydb table=mytable usercolumn=username passwdcolumn=password crypt=3
account required pam_mysql.so verbose=1 user=root passwd=mypass host=localhost db=mydb table=mytable usercolumn=username passwdcolumn=password crypt=3
session required pam_mkhomedir.so skel=/home/skel/ umask=0022 debug

Pam_mkhomedir eklemek artık herhangi bir günlükte başka mesaj olmadan dizini oluşturamayacağını gösteriyor. Yani belli ki uygulama yapmıyor. İhtiyacım olan başka bir şey var mı?

/Etc/vsftpd/vsftpd.conf'um:

# No ANONYMOUS users allowed
anonymous_enable=NO
# Allow 'local' users with WRITE permissions (0755)
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=NO
xferlog_enable=YES
connect_from_port_20=YES

# define a unique user on your system which the
# ftp server can use as a totally isolated and unprivileged user.
nopriv_user=vsftpd
chroot_local_user=YES
listen=YES

# here we use the authentication module for vsftpd to check users name and passw
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
userlist_deny=YES
# here the vsftpd will allow the 'vsftpd' user to login into '/home/vsftpd/$USER directory
guest_enable=YES
guest_username=vsftpd
local_root=/home/vsftpd/$USER
user_sub_token=$USER
virtual_use_local_privs=YES
download_enable=NO

force_local_data_ssl=NO
force_local_logins_ssl=NO

# PASV - passive ports for FTP 
pasv_enable=YES
pasv_min_port=14000
pasv_max_port=14100

Ben de bunu denedim bu yüzden vsftpd.conf buna ihtiyacım olduğunu söyleyen bir yazı gördüm:

session_support=YES

Ancak artık günlüklerin gösterdiği gibi artık kimlik doğrulaması yapılmıyor gibi görünüyor:

Mar 24 00:46:16 ip-10-212-239-40 vsftpd[1962]: pam_keyinit(vsftpd:session): Unable to look up user "user1"
Mar 24 00:46:16 ip-10-212-239-40 vsftpd[1962]: pam_mkhomedir(vsftpd:session): User unknown.

Bu, dizini zaten oluşturmuş olsam bile. Şimdi kimse içeri giremez.

Herhangi bir fikir?


Merhaba, bu sorunu hiç çözebildiniz mi?
George

@George Hiç de değil.
Tom

Sorunu çok farklı bir şekilde çözdüm, vsftpd'den uzaklaştım ve pureftp ile gittim. Tüm bu sorunlar olmadan birkaç saat içinde kurulum ve çalıştırma. Mükemmel çalışıyor.
George

/ home / vsftpd, vsftpd'ye ait mi?
Luca Gibelli

Yanıtlar:


0

PAM modülü tarafından yapılan kullanıcı aramalarının başarılı olması için, MySQL için NSS modülünü etkinleştirmeniz gerekir nsswitch.conf(5). nss_mysqlsenin arkadaşın.


Bu konuda verebileceğiniz referanslar var mı? Bağlamımda ihtiyaç duyma konusunda hiçbir şey bulamıyorum nss-mysql?
Tom

Oluşturması pam_mkhomedirgereken kullanıcının giriş dizinine giden yolu nasıl bulacaktır? Kullanıcıyı çözmek için hangi veritabanının kullanılacağını nasıl bilebilir? NSS bu bilgiyi sağlar. Sizin durumunuzda, kullanıcı veritabanınızın bir MySQL veritabanında saklandığı varsayılarak nss_mysql gerekir.
Ashish SHUKLA

Sadece bu kütüphane hakkında bir şeyler bulmaya çalışıyorum. Sağladığınız bağlantı, dokümantasyonu olmayan çok eski bir projedir. Bunu kurarsam, nssswitch.conf dosyasına ne koyacağınıza dair hiçbir gösterge vermez. Sadece 3 parametre içerebilir. Herhangi bir rehberlik sağlayabilir misiniz? Pam_mysql, nss-mysql ile aynı şey mi? Ben vsftpd sanal kullanıcılarla kimlik doğrulaması için mysql db kullanır pam_mysql çalışma var.
Tom

PAM , NSS ile aynı değildir . PAM kimlik doğrulamayı hedeflerken, NSS'nin amacı adları (ana bilgisayar adları, kullanıcı adları vb.) Çözümlemektir. Dağıtımların çoğu nss_mysql, örneğin Debian ve türevleri için bir paket sağlar libnss-mysql. Ve evet, yarım on yıldır güncellenmiyor, ama iyi çalışıyor. Modülü kurduktan, yapılandırdıktan ve bilgisayarınıza ekledikten sonra nsswitch.conf(5), işler sizin için çalışmaya başlayacaktır.
Ashish SHUKLA

Dağıtımımdan libnss-mysql ekledim. Kutunun dışında denedim ve hiçbir şey çalışmıyor. Nsswitch.conf dosyasında ne değiştirmem gerektiğine dair bir fikrin var mı?
Tom

0

Kullanmayı deneyebilirsiniz pam_script- bir kullanıcı oturumu açıldıktan sonra (diğerleri arasında) rastgele kabuk komut dosyalarının yürütülmesine izin veren bir pam modülüdür.

pam_scriptBurada bulabilirsiniz : https://github.com/jeroennijhof/pam_script . Ayrıca paket yöneticileri aracılığıyla yüklenebilir olmalıdır, en azından ben apt-get üzerinden yükleyebildim.

Dikkatli olun, vsftpd en azından kimlik doğrulamasını reddettiğinde pam_script ile ilgili bazı problemlere sahip gibi görünüyor, çözülmemiş soruma bakın: başarısız pam_script kimlik doğrulamasından sonra vsftpd donuyor . Ancak sizin durumunuzda bir sorun olmamalıdır.


0

Kısa cevap, sistem ve hizmet kimlik bilgilerini karıştırıyorsunuz ve vsftpd'de pam_mkhomedir'i sanal kullanıcılarla kullanmamalısınız (yapamaz mısınız?).

pam_mkhomedir, kullanıcının yerel dizinlerinin oluşturulması içindir ve kullanıcının sistemde tanımlandığını varsayar. Vsftpd'deki sanal kullanıcılar sistem kullanıcısı değildir (tasarım gereği) ve bu nedenle vsftpd hizmeti dışında herhangi bir ayrıcalığı yoktur (sistemin bu kullanıcılar hakkında bilgisi yoktur). Kimlik doğrulaması için PAM kullanımı yalnızca kullanıcı kimlik bilgilerinin doğrulanmasını sağlar (kullanıcı adı + şifre ==> Tamam). Sanal kullanıcılar kullanılırken kafa karıştırıcı olabilir, çünkü vsftpd PAM ile sistem kullanıcılarını kullanacak şekilde yapılandırılabilir.

Sanal kullanıcı için giriş dizini oluştururken, vsftpd hizmet hesabını / grubunu klasörün sahibi yapmalı ve "sanal giriş dizini" ni, vsftpd hizmeti için uygun izinlerle, vsftpd hizmet yoluna yerleştirmelisiniz. Hangi sorunu çözmeye çalıştığınızdan emin değilim, ancak kullanıcı oturumunu geliştirirken, kullanıcılar arasında bir izolasyon oluşturmaya çalıştığınızı varsayıyorum. Oturum açabilmeleri için kullanıcı veritabanınızda sanal kullanıcıyı oluşturmanız gerektiğinden, neden giriş dizinini aynı anda oluşturmuyorsunuz? Bunu kullanıcı ekleme / değiştirme / silmek için sanal kullanıcı veritabanı ve vsftpd kullanıcı sanal ev klasörleri tutarlı tutmak için bir komut dosyası kullanarak yaptım. YMMV.

Unutmayın, sanal kullanıcılar ile sistemde sadece vsftpd içinde çalışıyorsunuz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.