vsftpd 使用者認證
我已經設置了一個執行 Centos 7 和 VSFTPD 的虛擬機。
VSFTPD 在與本地使用者連接時效果很好。它使用**“useradd -d”將使用者 chroot 到他之前在/ftp/pub/{user_name}中創建的家中。我添加了 TLS 加密,它也很好用(在此處禁用以查看問題所在)。我已將/ftp的 SElinux 上下文設置為public_content_t**;/ftp/pub(/.*)? 到public_content_rw_t並在 /ftp/pub 上設置 755 權限
最近,我嘗試通過執行以下操作將 LDAP 身份驗證添加到 VSFTPD 伺服器:
authconfig --enableldap --enableldapauth --ldapserver=name_of_my_server --ldapbasedn="dc=item1,dc=item2,dc=item3" --enablemkhomedir --update
但它只將身份驗證添加到伺服器本身(我可以使用非本地帳戶 ssh 到伺服器),而不是服務(vsftp),所以我遇到了:
500 OOPS:無法更改目錄:/home/default/path
我從這個錯誤中了解到的是,它嘗試登錄預設首頁(顯然不存在)而不創建新首頁。**我想要做的是,當非本地使用者嘗試在我的伺服器上進行 FTP 訪問時,它會在/ftp/pub/{user_name}**中為他創建一個新家並在其中 chroot 他。
這是 pam.d/login:
#%PAM-1.0 auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so auth substack system-auth auth include postlogin account required pam_nologin.so account include system-auth password include system-auth # pam_selinux.so close should be the first session rule session required pam_selinux.so close session required pam_loginuid.so session optional pam_console.so # pam_selinux.so open should only be followed by sessions to be executed in the user context session required pam_selinux.so open session required pam_namespace.so session optional pam_keyinit.so force revoke session include system-auth session include postlogin -session optional pam_ck_connector.so
pam.d/vsftpd:
#%PAM-1.0 session optional pam_keyinit.so force revoke auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed auth required pam_shells.so auth include password-auth account include password-auth session required pam_loginuid.so session include password-auth
vsftpd.conf:
anonymous_enable=NO #Permet aux utilisateurs locaux de RW local_enable=YES write_enable=YES local_umask=022 pasv_enable=YES pasv_max_port=1026 pasv_min_port=1025 dirmessage_enable=YES connect_from_port_20=YES ascii_download_enable=YES ascii_upload_enable=YES ftpd_banner=Welcome to blah FTP service. #Partie chroot chroot_local_user=YES allow_writeable_chroot=YES local_root=/ftp/pub/$USER user_sub_token=$USER # (default follows) #chroot_list_file=/etc/vsftpd/chroot_list #logs xferlog_enable=YES xferlog_std_format=NO log_ftp_protocol=YES listen=YES listen_ipv6=NO pam_service_name=vsftpd userlist_enable=YES tcp_wrappers=YES # Ajouts use_localtime=YES rsa_cert_file=/etc/ssl/private/vsftpd.pem rsa_private_key_file=/etc/ssl/private/vsftpd.pem require_ssl_reuse=NO ssl_ciphers=HIGH ssl_enable=NO allow_anon_ssl=NO force_local_data_ssl=YES force_local_logins_ssl=YES ssl_tlsv1=YES ssl_sslv2=YES ssl_sslv3=YES
我真的被困在 VSFTPD 的 ldap 身份驗證上,在 serverfault 上的其他文章上找不到我應該做什麼。如果有人可以幫助我或推薦文件,將不勝感激。
編輯:SSH登錄在預設路徑(/home)中為使用者成功創建了一個首頁,FTP登錄既不在/home中創建它,也不在**/ftp/pub中創建它,我的目標是在FTP登錄時為使用者創建一個首頁/ ftp/pub**
EDIT2:正如 mxttie 所建議的,我可以使用 pam_exec,但它會更多地“繞過”問題而不真正解決它。我必須在“/home”中創建一個文件夾,然後在“/ftp/pub”中為每個要連接的使用者創建一個文件夾,以解決兩個連續的500 OOPS錯誤
使用
pam_exec
模組呼叫執行必要命令的腳本(即在**/ftp/pub**中為非本地使用者創建主目錄)
- 官方
pam_exec
手冊頁:http ://www.linux-pam.org/Linux-PAM-html/sag-pam_exec.html- 有關(另一個)範例,請參見ArchLinux wiki 。
pam_exec