部署FTP服务器时,默认是使用真实用户来登录和使用,如果用户数量很多,则需要建立很多的真实用户来满足需求,麻烦且不安全。建立虚拟用户的vsftp就可以解决这个问题,同时添加删除用户也十分方便,下面开始详解安装和配置的过程。
1. 编译安装vsftp
tar zxvf vsftpd- 2.0.7 .tar.gz
cd vsftpd- 2.0.7
 
如果是64位的系统则需修改vsf_findlibs.sh
vi vsf_findlibs.sh
修改
locate_library /lib/libpam.so.0 && echo "/lib/libpam.so.0"; locate_library /lib64/libpam.so.0 && echo "/lib64/libpam.so.0";
locate_library /lib/libcap.so.1 && echo "/lib/libcap.so.1"; locate_library /lib64/libcap.so.1 && echo "/lib64/libcap.so.1";
 
make
install -m 755 vsftpd /usr/sbin/vsftpd
cp vsftpd.conf /etc/
vi /home/passwd.txt
用户名(随意输入)
密码(随意输入)
例:download
123456
    upload
    123456
    admin
    123456
 
 
2. 安装db4
rpm -ivh db4-utils- 4.3.29 -9.fc6.i386.rpm (32位系统)
rpm –ivh db4-utils- 4.3.29 -9.fc6.x86_64.rpm(64位系统)
db_load -T -t hash -f /home/passwd.txt /etc/vsftpd_login.db
chmod 600 /etc/vsftpd_login.db
cd vsftpd- 2.0.7
cd EXAMPLE/
cp VIRTUAL_USERS/vsftpd.pam /etc/pam.d/ftp
 
如果是64位系统则需修改/etc/pam.d/ftp
 
vi /etc/pam.d/ftp
改成
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd_login
account required /lib64/security/pam_userdb.so db=/etc/vsftpd_login
 
3. 创建虚拟用户
useradd -d /home/ftpsite/ virtual
vi /etc/passwd
修改为:virtual:x:510:510::/home/ftpsite/:/bin/nologin
 
 
 
 
4.编辑vsftp配置文件
vi /etc/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=NO
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
idle_session_timeout=600
ftpd_banner=Welcome to tfhudong FTP service.
listen=yes
listen_port=21
guest_enable=YES
pam_service_name=ftp
user_config_dir=/etc/vsftpd_user_conf
dual_log_enable=YES
vsftpd_log_file=/var/log/vsftpd.log
#50K
#Local_max_rate=50000
#30K
#Anon_max_rate=30000
pasv_min_port=50000
pasv_max_port=60000
pasv_enable=yes
max_clients=200
max_per_ip=4
check_shell=NO
anon_root=/home/ftpsite/m
 
5.创建虚拟用户权限文件
 
mkdir /etc/vsftpd_user_conf
cd /etc/vsftpd_user_conf
touch download upload admin
 
6. 创建用户家目录(如果需要则添加)
mkdir /home/ftpsite/download
chmod 700 /home/ftpsite/download
chown virtual.virtual /home/ftpsite/download
 
mkdir /home/ftpsite/upload
chmod 700 /home/ftpsite/upload
chown virtual.virtual /home/ftpsite/upload
 
mkdir /home/ftpsite/admin
chmod 700 /home/ftpsite/admin
chown virtual.virtual /home/ftpsite/admin
7编辑用户权限文件
vi download
anon_world_readable_only=NO
guest_username=virtual
local_root=/home/ftpsite/download #download用户的家目录,需自定义
 
vi upload
anon_world_readable_only=NO
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
guest_username=virtual
local_root=/home/ftpsite/upload #upload 用户的家目录
 
vi admin
anon_world_readable_only=NO
write_enable=YES
anon_upload_enable=YES
anon_other_write_enable=YES
anon_mkdir_write_enable=YES
anon_umask=0999
guest_username=virtual
local_root=/home/ftpsite/admin #admin 用户的家目录
 
8配置iptables防火墙并开放ftp端口
vi /etc/sysconfig/iptables
添加:
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT # 21是监听端口,在vsftpd.conf中设置的listen [端口]对应
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 50000:60000 -j ACCEPT #传输数据用50000----60000之间的端口 vsftpd.conf中的pasv_min_port=50000 pasv_max_port=60000 对应
重启iptables
/etc/init.d/iptables restart
9启动vsftpd
不间断运行vsftpd
nohup /usr/sbin/vsftpd /etc/vsftpd.conf &
10 测试
clip_p_w_picpath002
先测试download用户(只允许下载,不允许上传、新建、删除)
VSFTPD虚拟用户搭建方法_第1张图片
VSFTPD虚拟用户搭建方法_第2张图片
把123文件下载到本地
VSFTPD虚拟用户搭建方法_第3张图片
测试上传功能(应阻止上传)
VSFTPD虚拟用户搭建方法_第4张图片
VSFTPD虚拟用户搭建方法_第5张图片
VSFTPD虚拟用户搭建方法_第6张图片
VSFTPD虚拟用户搭建方法_第7张图片
测试成功!
同理测试upload和admin用户功能。