部署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 �Civh 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 测试
先测试download用户(只允许下载,不允许上传、新建、删除)
把123文件下载到本地
测试上传功能(应阻止上传)
测试成功!
同理测试upload和admin用户功能。
本文出自 “奇幻的梦” 博客,转载请与作者联系!