首先安装软件
yum -y install vsftpd (主软件)
yum -y install pam* (权限验证相关)
yum -y install db4* (权限验证相关)
添加FTP执行用户
useradd vsftpd -s /sbin/nologin
配置 conf (/ect/vsftpd/vsftpd.conf),以下是我的配置
anonymous_enable=NO 不允许匿名访问
local_enable=YES 允许本地用户访问,关闭后貌似虚拟用户也访问不了
write_enable=YES 可写
local_umask=033 文件上传后的属性掩码
dirmessage_enable=YES 没啥用
xferlog_enable=YES 记日志
xferlog_file=/var/log/vsftpd.log 日志地址
xferlog_std_format=YES 日志标准格式
async_abor_enable=YES 异步传输功能
chroot_local_user=YES 把用户限制在自己的主目录
chroot_list_enable=YES 可以配置用户,允许访问主目录外的文件
chroot_list_file=/etc/vsftpd/chroot_list 配置文件
listen=YES 监听
listen_port=18221 修改监听端口,默认是 21
pam_service_name=vsftpd 认证,默认就有的
userlist_enable=YES 默认就有的
tcp_wrappers=YES 默认就有的
guest_enable=YES 允许虚拟用户
guest_username=ftpuser 虚拟用户名,和上面一致
virtual_use_local_privs=YES 设置虚拟用户权限
user_config_dir=/etc/vsftpd/vconf 虚拟用户配置目录
max_clients=20 最大连接数
建立一些目录和文件
touch /var/log/vsftpd.log 日志文件
chown vsftpd.vsftpd /var/log/vsftpd.log
mkdir /etc/vsftpd/vconf/ 虚拟用户配置目录
touch /etc/vsftpd/virtusers 虚拟用户名文件
vim /etc/vsftpd/virtusers 修改这个文件,一行一个用户名,然后跟密码,如
user_a
user_a_password
user_b
user_b_password
db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db 更新虚拟用户用户配置,如果 db_load 命令不存在,则是没安装
yum -y install pam*
yum -y install db4*
导致的
修改虚拟用户认证 pam 配置
vim /etc/pam.d/vsftpd
在最前面加两行
auth sufficient /lib/security/pam_userdb.so
db=/etc/vsftpd/virtusers
account sufficient /lib/security/pam_userdb.so
db=/etc/vsftpd/virtusers
配置虚拟用户FTP权限
如果你的虚拟用户叫 user_a,则在 /etc/vsftpd/vconf/ 船检一个文件叫
user_a,然后在这个文件里配置权限
我的配置
local_root=/data/web 限制主目录
write_enable=YES 可写
修改 iptables 配置,开放 18221 端口
vim /etc/sysconfig/iptables
加入
-A RH-Firewall-1-INPUT -m state ?state NEW -m tcp -p tcp ?dport
18221 -j ACCEPT
重启 iptables
/etc/rc.d/init.d/iptables restart
重启FTP服务
/etc/init.d/vsftpd stop
/etc/init.d/vsftpd start
关于被动模式
本来可以不用开被动模式的,不知道为什么有些用户用主动模式就是连不上,打开 /ect/vsftpd/vsftpd.conf,加入
pasv_enable=YES
pasv_min_port=30001
pasv_max_port=30003
然后在 iptables 里把这三个端口开放即可