vsftpd - PAM - निर्देशिका बनाने के लिए MySQL और pam_mkhomedir


11

मैं आभासी रूप से vsftpd का उपयोग वर्चुअल उपयोगकर्ताओं के साथ PAM के साथ अपने mysql DB में जोड़ने में कर रहा हूँ। अब मैं सफल vsftpd कनेक्शन के साथ उपयोगकर्ता निर्देशिकाओं के निर्माण को स्वचालित करना चाहता हूं।

यहाँ /etc/pam.d/vsftpd कॉन्फ़िगरेशन है:

#%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 को जोड़ना अब दिखाता है कि यह किसी भी लॉग में कोई अन्य संदेश के साथ निर्देशिका नहीं बना सकता है। तो यह स्पष्ट रूप से लागू नहीं है। क्या मुझे और कुछ चाहिए?

मेरा /etc/vsftpd/vsftpd.conf:

# 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

मैंने एक पोस्ट देखा कि मुझे अपने vsftpd.conf में इसकी आवश्यकता है इसलिए मैंने इसे भी आजमाया:

session_support=YES

लेकिन अब यह लॉग्स शो के रूप में प्रमाणित नहीं होता है:

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.

यह तब भी है जब मैंने निर्देशिका पहले ही बना ली है। अब कोई अंदर नहीं जा सकता।

कोई विचार?


नमस्ते, क्या आप कभी इस मुद्दे को हल करने में सक्षम थे?
जॉर्ज

@George बिल्कुल नहीं।
टॉम

मैंने इस मुद्दे को बहुत अलग तरीके से हल किया, मैं vsftpd से दूर चला गया और Pureftp के साथ चला गया। इन सभी मुद्दों के बिना कुछ घंटों में सेटअप करें और चलाएं। अच्छी तरह से काम।
जॉर्ज

vsftpd के स्वामित्व में / घर / vsftpd है?
लुका जिबेली

जवाबों:


0

PAM मॉड्यूल द्वारा सफल होने के लिए उपयोगकर्ता के लुकअप के लिए, आपको MySQL के लिए NSS मॉड्यूल को सक्षम करना होगा nsswitch.conf(5)nss_mysqlआपका दोस्त है।


कोई संदर्भ जो आप इस पर प्रदान कर सकते हैं? मुझे nss-mysqlअपने संदर्भ में आवश्यकता के बारे में कुछ भी पता नहीं लग सकता है?
टॉम

pam_mkhomedirजिस उपयोगकर्ता को यह बनाना है, उसके होम डायरेक्टरी के मार्ग का पता कैसे लगाया जाएगा? यह कैसे पता चलता है कि उपयोगकर्ता को हल करने के लिए किस डेटाबेस का उपयोग करना है? एनएसएस इसे उस जानकारी के साथ प्रदान करता है। आपके मामले में, आपको nss_mysql की आवश्यकता होगी , यह मानते हुए कि आपका उपयोगकर्ता डेटाबेस MySQL डेटाबेस में संग्रहीत है।
आशीष शुक्ल

मैं इस पुस्तकालय के बारे में कुछ भी जानने की कोशिश कर रहा हूं। आपके द्वारा प्रदान किया गया लिंक बहुत पुराना प्रोजेक्ट है जिसमें कोई दस्तावेज नहीं है। अगर मैं इसे स्थापित करता हूं तो यह आपके nssswitch.conf में क्या डालती है, इस पर कोई संकेत नहीं देता है। केवल यह कि इसमें 3 पैरामीटर हो सकते हैं। क्या आप किसी तरह का मार्गदर्शन दे सकते हैं? यह pam_mysql जैसी ध्वनि करता है nss-mysql जैसी ही बात है? मेरे पास pam_mysql काम कर रहा है जहां यह vsftpd वर्चुअल उपयोगकर्ताओं के साथ प्रमाणित करने के लिए mysql db का उपयोग करता है।
टॉम

PAM NSS के समान नहीं है । PAM को प्रमाणीकरण की ओर लक्षित किया जाता है, जबकि NSS का उद्देश्य नामों (होस्टनाम, उपयोगकर्ता नाम, आदि) को हल करना है। अधिकांश डिस्ट्रो के लिए एक पैकेज प्रदान करता है nss_mysql, जैसे डेबियन और डेरिवेटिव इसे प्रदान करते हैं libnss-mysql। और, हाँ यह आधे-दशक से अपडेट नहीं है, लेकिन यह ठीक काम करता है। एक बार जब आप मॉड्यूल को स्थापित करते हैं, तो इसे कॉन्फ़िगर करें, और इसे अपने साथ जोड़ें nsswitch.conf(5), चीजें आपके लिए काम करना शुरू कर देंगी।
आशीष शुक्ल

मैंने अपने distro से libnss-mysql को जोड़ा। बॉक्स से बाहर की कोशिश की और कुछ भी काम नहीं कर रहा है। Nsswitch.conf में मुझे क्या बदलने की आवश्यकता है पर कोई विचार?
टॉम

0

आप उपयोग करने का प्रयास कर सकते हैं pam_script- यह एक पीएएम मॉड्यूल है जो उपयोगकर्ता सत्र (अन्य के बीच) खोले जाने के बाद मनमाना खोल स्क्रिप्ट निष्पादित करने की अनुमति देता है।

आप पा सकते हैं pam_scriptयहां: https://github.com/jeroennijhof/pam_script । यह पैकेज प्रबंधकों के माध्यम से भी इंस्टॉल करने योग्य होना चाहिए, कम से कम मैं इसे एप्ट-गेट के माध्यम से स्थापित करने में सक्षम हूं।

सावधान रहें, क्योंकि vsftpd को प्रमाणीकरण से इनकार करने पर कम से कम pam_script के साथ कुछ समस्याएं हैं, मेरे अनसुलझे प्रश्न देखें: असफल pam_script प्रमाणीकरण के बाद vsftpd फ्रीज़ हो जाता है । हालाँकि आपके मामले में यह समस्या नहीं होनी चाहिए।


0

संक्षिप्त उत्तर यह है कि आप सिस्टम और सेवा क्रेडेंशियल्स को मिला रहे हैं, और vsftpd में वर्चुअल उपयोगकर्ताओं के साथ pam_mkhomedir का उपयोग नहीं कर सकते (नहीं कर सकते हैं)।

pam_mkhomedir उपयोगकर्ता स्थानीय निर्देशिकाओं के निर्माण के लिए है और मानता है कि उपयोगकर्ता सिस्टम में परिभाषित है। Vsftpd में वर्चुअल उपयोगकर्ताओं हैं नहीं प्रणाली उपयोगकर्ताओं (डिजाइन द्वारा) और इस तरह के रूप vsftpd सेवा के किसी विशेषाधिकार के बाहर है (सिस्टम उन उपयोगकर्ताओं का ज्ञान नहीं होता)। प्रमाणीकरण के लिए PAM का उपयोग केवल उपयोगकर्ता क्रेडेंशियल्स (उपयोगकर्ता नाम + पासवर्ड ==> ठीक) के सत्यापन को सौंप रहा है। वर्चुअल उपयोगकर्ताओं का उपयोग करते समय यह भ्रमित हो सकता है, क्योंकि PAM के साथ सिस्टम उपयोगकर्ताओं का उपयोग करने के लिए vsftpd को भी कॉन्फ़िगर किया जा सकता है।

जब आप किसी वर्चुअल यूजर के लिए होम डायरेक्टरी बना रहे होते हैं , तो आपको vsftpd सर्विस अकाउंट / ग्रुप को फोल्डर का मालिक बनाना चाहिए, और vsftpd सर्विस पाथ के अंदर "virtual home directory" को vsftpd सर्विस के लिए उपयुक्त परमिशन के साथ रखना होगा। मुझे यकीन नहीं है कि आप किस समस्या को हल करने का प्रयास कर रहे हैं, लेकिन जैसा कि आप उपयोगकर्ता सत्र को क्रियोट कर रहे हैं, मैं मान रहा हूं कि आप उपयोगकर्ताओं के बीच कुछ अलगाव पैदा करने की कोशिश कर रहे हैं। चूँकि आपको अपने उपयोगकर्ता डेटाबेस में वर्चुअल यूजर क्रिएट करना होगा ताकि वे लॉग इन कर सकें, उसी समय होम डायरेक्टरी क्यों न उत्पन्न करें? मैंने वर्चुअल यूजर डेटाबेस और vsftpd यूजर वर्चुअल होम फोल्डर को सुसंगत रखने के लिए यूजर ऐड / चेंज / डिलीट के लिए एक स्क्रिप्ट का उपयोग करके ऐसा किया है। YMMV।

बस याद रखें, आभासी उपयोगकर्ताओं के साथ, आप केवल vsftpd के भीतर काम कर रहे हैं, और सिस्टम नहीं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.