以前一直在用系统用户作为vsftp的登录帐户,第一不安全,第二用着也很不方便,今天整理了点资料把现有的vsftp服务器都改成了虚拟用户验证,配置比较简单,我把配置文档共享给各位吧,希望能帮助你们,有不到位的地方请帮忙指正,先谢谢各位了.
vsftp的安装可以看我的前一篇博文url: http://gsliuyang.blog.51cto.com/286500/124693
我们建立一个目录名为ftpdata
并创建一个名叫ftp的系统用户,他的家目录可以随便设置,我将他建立在ftpdata目录下,这个用户是虚拟用户登录后映射使用的。
useradd -d /ftpdata -s /sbin/nolog ftp
然后cd进入ftpdata并创建一个文本文件ftplog.txt
cd /ftpdata
vi ftplog.txt
ftplog.txt文件主要是记录vsftp的虚拟账户列表,在后面要创建的数据文件中使用它
其格式为
username
password
多个用户依次循环就可以了
我的ftplog.txt内容如下
user1
user1password
user2
user2password
看清楚了吧,这是两个虚拟用户user1和user2,user1password和user2password是他们的密码
接下来我们用系统工具db_load来生成db文件,db_load一般系统都自带,如果没有就到网上下载rpm包安装就可以了,安装挺简单的没有什么要求
db_load -T -t hash -f ftplog.txt /etc/vsftp_login.db
将ftplog.txt使用hash加密后生成到/etc/vsftp_login.db这个文件
给这个文件600的权限,为了安全期间这么设置的不是必须的
chmod 600 /etc/vsftp_login.db
如果虚拟用户有更新的话,先修改ftplog.txt文件,接着执行db_load就可以了,别忘了。
接着配置PAM的验证文件
新建文件vsftp.vu
vi /etc/pam.d/vsftp.vu
写入以下内容
auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd_login
这里写成vsftp_login就好了,不要加db
ok到这里用户的验证文件都做好了,那么我们来启用vsftp的虚拟用户支持。
vi /etc/vsftp.conf
将之前的pam_server_name=ftp修改成vsftp.vu如果没有就添加灵活点
guest_enable=YES
guest_config_dir=/etc/vsftp_user_conf这个目录以后就可以记录虚拟用的配置文件了。
好了下面来创建用户的配置文件,可以为每个用户创建不同的配置文件控制其权限
vi /etc/vsftpd_user_conf/user1
local_root=/ftpdata/user1       user1这个用户登陆上来的家目录是/ftpdata/user1
anon_upload_enable=YES          允许上传
anon_mkdir_write_enable=YES     允许创建目录
anon_other_write_enable=YES     允许删除文件和目录
默认权限是可以下载的,设置的时候注意大小写
vi /etc/vsftpd_user_conf/user2
local_root=/ftpdata/user2
anon_upload_enable=YES         
anon_mkdir_write_enable=YES   
anon_other_write_enable=YES   
创建user1和user2的家目录
mkdir /ftpdata/user1
mkdir /ftpdata/user2
修改目录权限
chown -R ftp.ftp /ftpdata
chmod -R 700 /ftpdata
如果你启用了userlist_enable=YES用户访问控制列表,那就别忘了在你指定的文件中添加用户哦,我的文件是/etc/vsftpd.user_list
vi /etc/vsftpd.user_list
user1
user2
vsftpd.conf文件的参数大家可以使用man vsftpd.conf来获取更多的帮助。
重启vsftpd服务测试一下吧