CentOS6 64bit系统配置vsftpd虚拟用户登陆,本文在Linode VPS上测试成功。
准备工作
$ yum install vsftpd db4-utils#添加虚拟用户,用户名和密码各占一行$ vim /etc/vsftpd/virtual_useruser1password1user2password2#生成虚拟用户口令认证文件$ db_load -T -t hash -f /etc/vsftpd/virtual_user /etc/vsftpd/virtual_user.db#生成pam认证文件$ mv /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak$ vim /etc/pam.d/vsftpd #写入如下两行,如果是32位系统,把lib64改为libauth required /lib64/security/pam_userdb.so db=/etc/vsftpd/virtual_useraccount required /lib64/security/pam_userdb.so db=/etc/vsftpd/virtual_user |
修改vsftp配置文件
$ cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.ori$ vim /etc/vsftpd/vsftpd.confanonymous_enable=NOlocal_enable=YESwrite_enable=YESlocal_umask=022dirmessage_enable=YESxferlog_enable=YESconnect_from_port_20=YESxferlog_std_format=YESidle_session_timeout=600data_connection_timeout=120listen=YESpam_service_name=vsftpd#开启userlist,并禁止user_list文件中的用户登陆userlist_enable=YESuserlist_deny=YESuserlist_file=/etc/vsftpd/user_listtcp_wrappers=YES#虚拟用户的配置文件目录user_config_dir=/etc/vsftpd/virtual_conf |
建立虚拟用户的配置文件,将虚拟用户映射为本地用户www,每一行首尾都不能有空格,否则会报错
$ vim /etc/vsftpd/virtual_conf/user1 #这里的文件名必须跟虚拟用户名一样guest_enable=yesguest_username=wwwanon_umask=022local_root=/home/wwwroot/dir1/#可以浏览和下载,yes只读anon_world_readable_only=NO#可以上传(全局控制)write_enable=YES#允许创建目录anon_mkdir_write_enable=YES#允许删除anon_other_write_enable=YES#允许上传anon_upload_enable=YES |
一些说明:
1,本文将所有的虚拟用户映射成了本地用户www,请确保www的工作目录(/home/www)存在,因为vsftp登陆时是会首先进入/home/www,最后进入local_root指定的目录;
2,www用户需要同时对/home/www目录和local_root指定的目录有读写权限;
3,新版vsftp禁止用户读写根目录,因此使用FTP客户端登陆以后会发现其不能在根目录创建目录,这是正常的。