1.# yum install -y vsftpd db4--utils #安装包
# useradd -d /var/www/html -s /sbin/nologin -g root vsftp #新建用户禁止shell登录
# vim /etc/vsftpd/vftpuser.txt
添加虚拟用户名和密码,一行用户名,一行密码,以此类推。奇数行为用户名,偶数行为密码。
test #用户名
123456 #密码
2.使用db_load命令生成虚拟用户口令认证文件
# db_load -T -t hash -f /etc/vsftpd/vftpuser.txt /etc/vsftpd/vftpuser.db
3.编辑vsftpd的PAM认证文件
# vim /etc/pam.d/vsftpd
将里面其他的都注释掉,添加下面这两行:
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vftpuser
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vftpuser
注:64位系统需使用下面的两行
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vftpuser
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vftpuser
4.配置vsftpd.conf(设置虚拟用户配置项)
anonymous_enable=NO #关闭匿名用户【该项已存在,需修改】
guest_enable=YES #开启虚拟用户
guest_username=vsftp #FTP虚拟用户对应的系统用户
virtual_use_local_privs=YES #虚拟用户和本地用户权限相同
pam_service_name=vsftpd #PAM认证文件
user_config_dir=/etc/vsftpd/vsftpd_config_dir #用户配置文件的目录
5.虚拟用户配置文件
# mkdir /etc/vsftpd/vsftpd_config_dir
# vim /etc/vsftpd/vsftpd_config_dir/user
local_root=/var/www/html #【该用户的主目录】
anon_world_readable_only=NO #【下载权限】
anon_upload_enable=YES #【上传权限】
anon_mkdir_write_enable=YES #【创建目录的权限】
anon_other_write_enable=NO #【删除和重命名的权限】
6.端口修改及iptbales设置
设置被动模式打开的配置文件
#vim /etc/vsftpd/vsftpd.conf
添加或修改以下内容
connect_from_port_10021=YES //这里的10021端口,你可以修改为你喜欢的
pasv_min_port=8888 //设置被动模式的端口范围,最小端口号~最大端口号
pasv_max_port=8899 //我们设置的范围可以不用那么大,但数值最好大些(至少也大于1024)
然后更改防火策略
#vim /etc/sysconfig/iptables
添加以下防火规则
-A INPUT -m state --state NEW -m tcp -p tcp --dport 10021 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8888:8899 -j ACCEPT
最后重启服务使防火规则生效
#service vsftpd restart
#service iptables restart
到这里我们的vsftp正式修改端口到10021
通过 ftp://IP:10021 来指定端口访问,当然,如果你发现selinux还是会阻止ftp那就先设置为临时关闭吧!(#setenforce 0)
7.启动
service vsftpd start
service iptabels restart
配置文件详解
anonymous_enable=YES //是否允许anonymous登录FTP服务器,默认是允许的
local_enable=YES //是否允许本地用户登录FTP服务器,默认是允许
write_enable=YES //是否允许用户具有在FTP服务器文件中执行写的权限,默认是允许
local_umask=022 //设置本地用户的文件生成掩码为022
anon_upload_enable=YES //允许匿名用户上传
anon_umask=022 //匿名用户文件生成掩码
anon_mkdir_write_enable=YES //是否允许匿名账户在FTP服务器中创建目录
anon_other_write_enable=YES //允许匿名用户进行删除或重命令文件
anon_world_readable_only=YES //匿名用户仅允许下载它可读的文件
dirmessage_enable=YES //激活目录信息,当远程用户更改目录时,将出现目录下.message文件中的内容
connect_from_port_20=YES //启用FTP数据端口的连接请求
xferlog_enable=YES //启用上传和下载日志功能
xferlog_std_format=YES //是否使用标准的ftpd xferlog日志文件格式
xferlog_file=/var/log/vsftpdfeng.log //设置日志位置
idle_session_timeout=600 //设置空闲的用户会话中断时间,默认是10分钟
data_connection_timeout=120 //设置数据连接超时时间,默认是120秒
max_clients=100 //最大连接数
max_per_ip=2 //每ip最大连接数
local_max_rate=102400 //本地用户最大传输速度100k
anon_max_rate=10240 //匿名用户最大传输速度10k
ascii_download_enable=YES //是否允许使用ASCII格式来上传和下载文件
ftpd_banner=Welcome to FTP service. //在FTP服务器中设置欢迎登录的信息
listen=YES //使vsftpd 处于独立启动模式
listen_port=10021 //使用非标准端口
listen_address=192.168.1.1 //绑定到网卡的某个ip
tcp_wrappers=YES //使用tcp_wrqppers作为主机访问控制方式
pam_service_name=vsftpd //配置PAM认证服务的配置文件名称,该文件存放在/etc/pam.d目录下
ftp_username=ftp //匿名用户所映射的本地用户名
virtual_use_local_privs=YES //虚拟用户拥有本地系统权限(即可以上传删除等,为NO时虚拟用户为匿名权限)
user_config_dir=/etc/vsftpd/users //设置不同的用户使用不同的配置的目录,用户名作为文件名
当userlist_enable=YES且userlist_deny=YES时user_list中指定的用户不能访问(默认)
当userlist_enable=YES且userlist_deny=NO时仅允许user_list中指定的用户访问
chroot_list_enable=YES //启用chroot列表文件
chroot_list_file=/etc/vsftpd/chroot_list //chroot文件位置
当chroot_local_user=YES时不允许除列表外的所有本地用户切换到home以外的目录
当chroot_local_user=NO时允许除列表外的所有本地用户切换到home外的目录(默认)
tcp_wrappers使用/etc/hosts.allow和/etc/hosts.deny两个配置文件实现访问控制
vsftpd:主机表:setenv VSFTPD_LOAD_CONF 配置文件路径
vsftpd:192.168.1.0/24,192.168.2.0/24:DENY
ftp虚拟用户建立
vi ftp.txt //奇数行为用户名,偶数行为口令
db_load -T -t hash -f ./ftp.txt /etc/vsftpd/virtual_users.db //生成口令库文件
chmod 600 /etc/vsftpd/virtual_users.db
vi /etc/pam.d/vsftp.vu //输入以下信息
auth required pam_userdb.so db=/etc/vsftpd/virtual_users
account required pam_userdb.so db=/etc/vsftpd/virtual_users
useradd -d /home/ftp virtual //建立虚拟用户映射的本地用户
chmod 700 /home/ftp
guest_enable=YES //启用虚拟用户
guest_username=virtual //虚拟用户映射的本地用户名
pam_service_name=vsftp.vu //指定PAM配置文件
service vsftpd restart
vsftpd /etc/vsftpd/vsftpd.conf //用指定的配置文件启动一个ftp进程
如果想要同时实现虚拟用户与本地用户访问
可在原/etc/pam.d/vsftpd文件前加入以下文字
auth sufficient pam_userdb.so db=/etc/vsftpd/virtual_users
account sufficient pam_userdb.so db=/etc/vsftpd/virtual_users
当然pam_service_name=vsftpd配置要改回来
为每个用户分别设置权限
download_enable=NO
local_root=/home/ftp/t1
write_enable=YES
anon_upload_enable=YES //这些属性都要重新配置,不能从主配置文档里继承
pasv_enable=YES //启用被动模式
pasv_min_port=3000 //被动模式最小端口
pasv_max_port=4000 //被动模式最大端口