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 //被动模式最大端口