vsftpd - PAM - MySQL và pam_mkhomedir để tạo thư mục


11

Tôi đã sử dụng thành công vsftpd với người dùng ảo kết nối với PAM với mysql DB của tôi. Bây giờ tôi muốn tự động tạo thư mục người dùng với kết nối vsftpd thành công.

Đây là cấu hình /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

Thêm pam_mkhomedir bây giờ chỉ cho thấy nó không thể tạo thư mục mà không có thông báo nào khác trong bất kỳ nhật ký nào. Vì vậy, nó rõ ràng là không áp dụng. Có bất cứ điều gì tôi cần?

/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

Tôi thấy một bài đăng nói rằng tôi cần cái này trong vsftpd.conf của tôi vì vậy tôi cũng đã thử nó:

session_support=YES

Nhưng bây giờ nó dường như không còn xác thực nữa khi nhật ký hiển thị:

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.

Điều này là ngay cả khi tôi đã tạo thư mục. Bây giờ không ai có thể vào được.

Có ý kiến ​​gì không?


Xin chào, bạn đã bao giờ có thể giải quyết vấn đề này?
George

@George Không hề.
Tom

Tôi đã giải quyết vấn đề theo một cách rất khác, tôi rời khỏi vsftpd và đi với purftp. Thiết lập và chạy trong một vài giờ mà không có tất cả những vấn đề này. Hoạt động hoàn hảo.
George

là / nhà / vsftpd thuộc sở hữu của vsftpd?
Luca Gibelli

Câu trả lời:


0

Để việc tra cứu người dùng bằng mô-đun PAM thành công, bạn cần kích hoạt mô-đun NSS cho MySQL nsswitch.conf(5). nss_mysqllà bạn của bạn.


Bất kỳ tài liệu tham khảo bạn có thể cung cấp về điều này? Tôi dường như không thể tìm thấy bất cứ điều gì về nhu cầu nss-mysqltrong bối cảnh của tôi?
Tom

Làm thế nào pam_mkhomedirsẽ tìm ra đường dẫn đến thư mục chính của người dùng mà nó phải tạo ra? Làm thế nào để nó biết cơ sở dữ liệu nào được sử dụng để giải quyết người dùng? NSS cung cấp cho nó thông tin đó. Trong trường hợp của bạn, bạn sẽ cần nss_mysql , giả sử cơ sở dữ liệu người dùng của bạn được lưu trữ trong cơ sở dữ liệu MySQL.
Ashish SHUKLA

Tôi chỉ đang cố gắng tìm hiểu bất cứ điều gì về thư viện này. Liên kết bạn cung cấp là một dự án rất cũ không có tài liệu. Nếu tôi cài đặt nó, nó sẽ không có dấu hiệu gì về những gì cần đặt trong nssswitch.conf của bạn. Chỉ có điều nó có thể chứa 3 tham số. Bạn có thể cung cấp bất kỳ loại hướng dẫn? Nghe có vẻ như pam_mysql giống như nss-mysql? Tôi có pam_mysql hoạt động trong đó nó sử dụng db mysql để xác thực với người dùng ảo vsftpd.
Tom

PAM không giống như NSS . PAM được nhắm mục tiêu xác thực, trong khi mục tiêu của NSS là giải quyết các tên (tên máy chủ, tên người dùng, v.v.). Hầu hết các bản phân phối cung cấp một gói cho nss_mysql, ví dụ Debian và các dẫn xuất cung cấp nó dưới dạng libnss-mysql. Và, vâng, nó không được cập nhật trong nửa thập kỷ, nhưng nó hoạt động tốt. Khi bạn cài đặt mô-đun, định cấu hình và thêm nó vào nsswitch.conf(5), mọi thứ sẽ bắt đầu làm việc cho bạn.
Ashish SHUKLA

Tôi đã thêm libnss-mysql từ bản phân phối của mình. Đã thử ra khỏi hộp và không có gì là làm việc. Bất kỳ ý tưởng về những gì tôi cần thay đổi trong nsswitch.conf?
Tom

0

Bạn có thể thử sử dụng pam_script- đó là mô-đun pam cho phép thực thi các tập lệnh shell tùy ý sau khi phiên người dùng được mở (trong số các phiên khác).

Bạn có thể tìm thấy pam_scriptở đây: https://github.com/jeroennijhof/pam_script . Nó cũng có thể được cài đặt thông qua các trình quản lý gói, ít nhất là tôi đã có thể cài đặt nó thông qua apt-get.

Hãy cẩn thận, vì vsftpd dường như có một số vấn đề với pam_script ít nhất là khi nó từ chối xác thực, hãy xem câu hỏi chưa được giải quyết của tôi: vsftpd đóng băng sau khi xác thực pam_script không thành công . Tuy nhiên trong trường hợp của bạn nó không phải là một vấn đề.


0

Câu trả lời ngắn gọn là bạn đang trộn thông tin đăng nhập của hệ thống và dịch vụ và không nên (không thể?) Sử dụng pam_mkhomedir với người dùng ảo trong vsftpd.

pam_mkhomedir là để tạo các thư mục cục bộ của người dùng và giả sử người dùng được xác định trong hệ thống. Người dùng ảo trong vsftpd không phải là người dùng hệ thống (theo thiết kế) và do đó không có đặc quyền nào ngoài dịch vụ vsftpd (hệ thống không có kiến ​​thức về những người dùng đó). Sử dụng PAM để xác thực chỉ giúp xác thực thông tin đăng nhập của người dùng (tên người dùng + mật khẩu ==> OK). Điều này có thể gây nhầm lẫn khi sử dụng người dùng ảo, vì vsftpd cũng có thể được cấu hình để sử dụng người dùng hệ thống với PAM.

Khi bạn đang tạo thư mục chính cho người dùng ảo , bạn phải tạo tài khoản / nhóm dịch vụ vsftpd làm chủ sở hữu của thư mục và đặt "thư mục nhà ảo" trong đường dẫn dịch vụ vsftpd, với các phép phù hợp cho dịch vụ vsftpd. Tôi không chắc bạn đang cố gắng giải quyết vấn đề gì, nhưng vì bạn đang cố gắng xử lý phiên người dùng, tôi cho rằng bạn đang cố gắng tạo ra sự cô lập giữa những người dùng. Vì bạn phải tạo người dùng ảo trong cơ sở dữ liệu người dùng của mình để họ đăng nhập, tại sao không tạo thư mục chính cùng một lúc? Tôi đã thực hiện điều này bằng cách sử dụng tập lệnh cho người dùng thêm / thay đổi / xóa để giữ cho cơ sở dữ liệu người dùng ảo và các thư mục nhà ảo của người dùng vsftpd nhất quán. YMMV.

Chỉ cần nhớ, với người dùng ảo, bạn chỉ làm việc trong vsftpd chứ không phải hệ thống.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.