請問:vsftpd的本地用戶登錄是如何認證的?
各位,最近新建了一個ftp伺服器,vsftpd+pam_mysql+mysql;虛擬用戶用mysql認證,都沒有問題!
不過....
導致本地用戶卻無法登錄ftp了,我查看了下日誌/var/log/secure
Dec 25 15:14:30 jingwei vsftpd: pam_mysql - SELECT passwd FROM users WHERE name = 'admin'
Dec 25 15:14:30 jingwei vsftpd: pam_mysql - SELECT returned no result.
Dec 25 15:14:30 jingwei vsftpd: pam_mysql - pam_mysql_check_passwd() returning 1.
Dec 25 15:14:30 jingwei vsftpd: pam_mysql - pam_mysql_sql_log() called.
Dec 25 15:14:30 jingwei vsftpd: pam_mysql - pam_mysql_format_string() called
Dec 25 15:14:30 jingwei vsftpd: pam_mysql - pam_mysql_quick_escape() called.
Dec 25 15:14:30 jingwei last message repeated 3 times
大致是因為在mysql資料庫找不到本地用戶「admin」信息;我想這是肯定的,因為本地用戶admin的用戶信息沒有保存在資料庫。
那如果本地用戶想登錄vsftpd的話,該如何認證呢?在vsftp.conf中,我已經指定了,
pam_service_name=vsftpd.mysql
#pam_service_name=vsftpd //如果我取消該行註釋,則本地用戶能登錄了,但虛擬用戶又不能登錄了;
請教大家該咋搞呢??
《解決方案》
本帖最後由 dualgaun 於 2012-12-25 15:46 編輯
vsftpd.conf文件:
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
xferlog_enable=YES
xferlog_std_format=YES
xferlog_file=/var/log/xferlog
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
listen=YES
connect_from_port_20=YES
listen_port=21
pam_service_name=vsftpd.mysql
#pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
virtual_use_local_privs=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_world_readable_only=NO
user_config_dir=/etc/vsftpd/vsftpd_user_conf
guest_enable=YES
guest_username=vsftpdvirtual
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=30999