构建基于虚拟用户的Vsftpd服务器
大致过程为:
1. 建立虚拟FTP用户的帐号数据库文件
2. 创建FTP根目录及虚拟用户映射的系统用户
3. 建立支持虚拟用户的PAM认证文件
4. 在vsftpd.conf文件中添加支持配置
5. 为虚拟用户建立独立的配置文件
6. 重新加载vsftpd配置
7. 使用虚拟FTP账户访问一下测试
开始具体的配置过程吧:
1. 建立虚拟FTP用户的帐号数据库文件
首先建立虚拟用户的帐号名,密码列表 (其中奇数行为帐号名,偶数行为上一行中帐号的密码)
#vi /etc/vsftpd/vusers.txt
Wendy
123
Natasha
456
#cd /etc/vsftpd/
#db_load -T –t hash –f vusers.txt vusers.db 帐号文件转换问数据库文件 (使用db_load转换工具,需要安装db-utils-4.3.29-9.fc6.i386.rpm软件包)
#file vusers.db
#chmod 600 /etc/vsftpd/vusers.txt
#chmod 600 /etc/vsftpd/vusers.db
2. 创建FTP根目录及虚拟用户的映射的系统用户
#mkdir /var/ftproot
#useradd -d /var/ftproot -s /sbin/nologin vsftp (指定系统账户的家目录和shell环境变量)
#chmod 755 /var/ftproot/
#chown vsftp:vsftp /var/ftproot/
3. 建立支持虚拟用户的PAM认证文件
#vi /etc/pam.d/vsftpd.vu (文件内容为:
#%PAM-1.0
auth required pam_userdb.so db=/etc/vsftpd/vsftp
account reuqired pam_userdb.so db=/etc/vsftpd/vsftp
(注意要对应第一步中建立的vusers.db文件)
4. 在vsftpd.conf文件中添加支持配置
#vi /etc/vsftpd/vsftpd.conf
local_enable=YES
write_eanble=YES
anon_umask=022
guest_enable=YES
guest_username=vsftp
pam_service_name=vsftpd.vu
5. 为个别虚拟用户建立独立的配置文件
在vsftpd.conf文件中添加用户配置目录支持
user_config_dir=/etc/vsftpd/vusers
为用户wendy,natasha建立独立的配置目录及文件
配置文件名与用户名同名
#mkdir /etc/vsftpd/vusers/
#cd /etc/vsftpd/vusers/
#vi wendy
anon_upload_enable=NO
anon_mkdir_write_enable=NO
#vi natasha
anon_upload_enable=YES
anon_mkdir_write_enable=YES
6. 重新加载vsftpd配置
#service vsftpd reload
7. 使用虚拟FTP账户访问测试
分别用wendy,natasha用户登录FTP服务器进行下载,上传测试
测试结果:
wendy用户可以登录,并可以浏览,下载文件,但无法上传文件,无法创建目录
natasha用户可以登录,并可以浏览,下载文件,也可以上传文件,可以创建目录,删除目录。
(注意到那些提示数字了么?
开头为1的数字:表示服务说明信息
开头为2的数字:表示服务正常运行信息
开头为3的数字:表示服务正常运行信息,但不完整
开头为4的数字:表示暂时性的错误信息
开头为5的数字:表示致命性的错误信息
登录ftp服务时,使用lcd命令来切换本地目录
显示以逗号隔开的六个数字:其中前四个表示FTP服务器ip地址,后两个用来计算端口号的,算法为:FTP端口=第五个数*256+第六个数)
如果您开启selinux ,且为为Enforcing级别
开启selinux后,就算允许本地用户上传文件,也不一定就能上传。这个时候需要修改selinux中的bool值。
如果selinux中设置匿名用户禁止上传,那么还是不能上传
#chcon -R -t http_sys_content_t /home/wendy (修改selinux的标签)
Vsftpd用来控制用户登录的有两个文件:/etc/vsftpd/下的ftpusers和user_list文件。
/etc/vsftpd/ftpusers下的文件控制用户登录的时候,写入这个文件的用户就不能登录FTP了。
/etc/vsftpd/userlist 默认表示写入次文件的用户都不能登录了,这个时候配置文件vsftpd.conf中userlist_enable=YES,这是默认的。也可以在下面加上一行userlist_deny=YES表示列表中的用户都是被禁止登录的。效果一样。
如果想让列表表示为只有列表中的用户才能访问FTP,需要将userlist_deny=NO写上。
以上设置就表示只有写入到userlist这个列表文件中的用户可以访问FTP了。(没有写到的账户都不能访问了)
如果想控制访问FTP服务的ip地址。可以使用tcp_wrapper和iptables来控制。
通常情况下使用tcp-wrapper来控制ip地址的访问,因为这样配置起来比较简单。
阅读(1475) | 评论(0) | 转发(0) |