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 ไม่เลย
Tom

ฉันแก้ไขปัญหาด้วยวิธีที่แตกต่างกันมากฉันย้ายออกจาก vsftpd และไปที่ pureftp ติดตั้งและใช้งานได้ในสองสามชั่วโมงโดยไม่มีปัญหาเหล่านี้ทั้งหมด ทำงานได้อย่างสมบูรณ์แบบ
จอร์จ

/ home / vsftpd เป็นเจ้าของโดย vsftpd หรือไม่
Luca Gibelli

คำตอบ:


0

สำหรับการค้นหาของผู้ใช้โดยโมดูล PAM ที่จะประสบความสำเร็จคุณต้องเปิดใช้งานโมดูล NSS สำหรับ MySQL nsswitch.conf(5)ใน nss_mysqlเป็นเพื่อนของคุณ.


การอ้างอิงใด ๆ ที่คุณสามารถให้เกี่ยวกับเรื่องนี้? ฉันดูเหมือนจะไม่พบสิ่งที่ต้องการnss-mysqlในบริบทของฉันหรือไม่
Tom

เป็นวิธีการที่pam_mkhomedirจะคิดออกเส้นทางไปยังไดเรกทอรีบ้านของผู้ใช้ก็ควรจะสร้างหรือไม่? จะทราบได้อย่างไรว่าจะใช้ฐานข้อมูลใดในการแก้ไขผู้ใช้ NSS ให้ข้อมูลนั้นกับมัน ในกรณีของคุณคุณจะต้องมีnss_mysqlสมมติว่าฐานข้อมูลผู้ใช้ของคุณถูกเก็บไว้ในฐานข้อมูล MySQL
Ashish SHUKLA

ฉันแค่พยายามหาอะไรเกี่ยวกับห้องสมุดนี้ ลิงค์ที่คุณระบุเป็นโครงการที่เก่ามากไม่มีเอกสารประกอบ หากฉันติดตั้งสิ่งนี้จะไม่มีข้อบ่งชี้ว่าจะใส่อะไรใน nssswitch.conf ของคุณ เฉพาะที่มันอาจมี 3 พารามิเตอร์ คุณสามารถให้คำแนะนำใด ๆ ได้บ้าง? เสียงเหมือน pam_mysql เหมือนกับ nss-mysql หรือไม่ ฉันมี pam_mysql ทำงานที่มันใช้ mysql db เพื่อตรวจสอบกับผู้ใช้เสมือน vsftpd
Tom

PAMไม่ได้เช่นเดียวกับเอ็นเอส PAM มีเป้าหมายต่อการรับรองความถูกต้องในขณะที่วัตถุประสงค์ของ NSS คือการแก้ไขชื่อ (ชื่อโฮสต์ชื่อผู้ใช้ ฯลฯ ) ที่สุดของ distros ให้แพคเกจสำหรับnss_mysqlเช่น Debian libnss-mysqlและอนุพันธ์ให้เป็น และใช่มันไม่ได้อัปเดตมาครึ่งทศวรรษ แต่ก็ใช้ได้ดี เมื่อคุณติดตั้งโมดูลกำหนดค่าและเพิ่มลงในของคุณnsswitch.conf(5)สิ่งต่าง ๆ จะเริ่มทำงานให้คุณ
Ashish SHUKLA

ฉันเพิ่ม libnss-mysql จาก distro ของฉัน พยายามออกจากกล่องและไม่มีอะไรทำงาน มีความคิดเห็นเกี่ยวกับสิ่งที่ฉันต้องการเปลี่ยนแปลงใน nsswitch.conf หรือไม่
Tom

0

คุณสามารถลองใช้pam_script- เป็นโมดูล pam ที่อนุญาตให้เรียกใช้งานเชลล์สคริปต์โดยพลการหลังจากเปิดเซสชันผู้ใช้

คุณสามารถค้นหาpam_scriptที่นี่: https://github.com/jeroennijhof/pam_script มันควรจะติดตั้งผ่านผู้จัดการแพ็คเกจอย่างน้อยฉันก็สามารถติดตั้งผ่าน apt-get ได้

โปรดใช้ความระมัดระวังเป็น vsftpd ดูเหมือนว่าจะมีปัญหาบางอย่างกับ pam_script อย่างน้อยเมื่อมันปฏิเสธการตรวจสอบดูคำถามที่ค้างคาของฉัน: ค้าง vsftpd หลังจากการตรวจสอบ อย่างไรก็ตามในกรณีของคุณมันไม่ควรเป็นปัญหา


0

คำตอบสั้น ๆ คือคุณกำลังผสมระบบและข้อมูลรับรองบริการและไม่ควร (ไม่?) ใช้ pam_mkhomedir กับผู้ใช้เสมือนใน vsftpd

pam_mkhomedir สำหรับการสร้างไดเรกทอรีท้องถิ่นของผู้ใช้และสมมติว่าผู้ใช้ถูกกำหนดในระบบ ผู้ใช้เสมือนใน vsftpd ไม่ใช่ผู้ใช้ระบบ (ตามการออกแบบ) และไม่มีสิทธิพิเศษนอกเหนือจากบริการ vsftpd (ระบบไม่มีความรู้เกี่ยวกับผู้ใช้เหล่านั้น) การใช้ PAM สำหรับการตรวจสอบความถูกต้องจะทำการตรวจสอบความถูกต้องของข้อมูลรับรองผู้ใช้ (ชื่อผู้ใช้ + รหัสผ่าน ==> ตกลง) สิ่งนี้อาจสร้างความสับสนเมื่อใช้ผู้ใช้เสมือนเนื่องจาก vsftpd สามารถกำหนดค่าให้ใช้ผู้ใช้ระบบด้วย PAM

เมื่อคุณสร้างโฮมไดเร็กตอรี่สำหรับผู้ใช้เสมือนคุณต้องสร้างบัญชีบริการ vsftpd / กลุ่มเจ้าของโฟลเดอร์และวาง "ไดเรกทอรีเสมือนจริง" ภายในเส้นทางบริการ vsftpd ด้วย perms ที่เหมาะสมสำหรับบริการ vsftpd ฉันไม่แน่ใจว่าคุณกำลังพยายามแก้ไขปัญหาใด แต่เมื่อคุณทำการแชทเซสชันผู้ใช้ฉันคิดว่าคุณกำลังพยายามสร้างความโดดเดี่ยวระหว่างผู้ใช้ เนื่องจากคุณต้องสร้างผู้ใช้เสมือนในฐานข้อมูลผู้ใช้ของคุณเพื่อให้พวกเขาเข้าสู่ระบบทำไมไม่สร้างไดเรกทอรีบ้านในเวลาเดียวกัน ฉันได้ทำเช่นนี้โดยใช้สคริปต์สำหรับผู้ใช้เพิ่ม / เปลี่ยน / ลบเพื่อให้ฐานข้อมูลผู้ใช้เสมือนและโฟลเดอร์เสมือนบ้านผู้ใช้ vsftpd สอดคล้องกัน YMMV

เพียงจำไว้ว่าด้วยผู้ใช้เสมือนคุณทำงานภายใน vsftpd เท่านั้นไม่ใช่ระบบ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.