[root@localhost home]# yum -y install vsftpd* 安装vsftpd
[root@localhost home]#vim /etc/selinux/config 编辑selinux安全配置文件
[root@localhost home]# /etc/init.d/iptables stop 关闭防火墙
[root@localhost home]# vim login.txt 创建口令文件库“于里面输入用户名与密码,奇数为用户名、偶数为密码”
[root@localhost home]#
db_load -T -t hash -f login.txt /etc/vsftpd/vsftpdlogin.db
执行命令将文件库变为哈希算法数据库模式保存至/etc/vsftpd/vsftpdlogin.db重命名为vsftpdlogin.db
[root@localhost home]# chmod 600 /etc/vsftpd/vsftpdlogin.db 给予600权限
二、建立虚拟用户所需的pam配置文件
[root@localhost home]# vim /etc/pam.d/vsftpd 修改/etc/pam.d/vsftpd文件添加
auth required pam_userdb.so db=/etc/vsftpd/vsftpdlogin
account required pam_userdb.so db=/etc/vsftpd/vsftpdlogin
<img src="https://img-blog.csdn.net/20140730134537765?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvU1pNUzE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" />
注:注释掉上面之前的所有默认配置,注释掉后!默认本地系统用户将无法登陆FTP
注:在auth至required用空格键隔开在required至pam_userdb.so中间用TAB隔开
不然在登陆时会报530错误!可能是系统版本的问题。
注意:也可以另外建一个文件,但是要在/etc/vsftpd/vsftpd.conf中将pam_service_name=vsftpd后面的值改为新建文件的名称
三、添加本地用户及权限
[root@localhost www]# useradd -d /home/nginx/www -s /sbin/nologin max 添加用户为max并设定为默认目录为/home/nginx/www下面!
[root@localhost htdocs]# usermod -g nginx max 更改虚拟用户所在组!
注:如果www此目录的用户与组为nginx!则max将无权限在www目录下面创建或删除文件,要执行setfacl –m u:max:rwx www此命令为max添加读写执行权限
四、修改vsftpd.conf主配置文件
[root@localhost www]# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.back 备份原有的vsftpd.conf默认配置文件,以备还原
[root@localhost www]# vim /etc/vsftpd/vsftpd.conf 修改主配置文件
内容如下:
anonymous_enable=NO 禁用匿名用户登录
local_enable=YES 启用本地用户登录(本质上是为了能够让虚拟用户登录)
chroot_local_user=YES 将所有本地用户限制在自己的目录中
pam_service_name=vsftpd 配置vsftpd使用的PAM模块为vsftpd
user_config_dir=/etc/vsftpd/users_config 设置虚拟账户配置文件的主目录为 /users_config(后面创建)
max_clients=100 设 置FTP服务器最大接入客户端数为100个
max_per_ip=3 设置每个IP地址最大连接数为3个
local_max_rate=300000 FTP 服务器的本地用户最大传输速率设置为300KB/s
anon_max_rate=100000 FTP 服务器匿名用户最大传输速率设置为100KB/s
listen_port=34536 设置ftp登陆端口
五、设置虚拟用户的配置文件
[root@localhost home]# mkdir /etc/vsftpd/users_config/ 创建虚拟账户配置文件的主目录
[root@localhost home]# touch /etc/vsftpd/users_config/max 创建虚拟用户文件
[root@localhost home]# vim /etc/vsftpd/users_config/max 编辑虚拟用户文件,添加以下内容
guest_enable=YES 开启虚拟账户登录
guest_username=max 设置max对应的系统帐户为max
anon_world_readable_only=NO 允许用户浏览FTP目录和下载文件
anon_max_rate=100000 限制传输速率为100KB/s
anon_other_write_enable=YES 允许用户进行文件改名和删除文件的权限
anon_mkdir_write_enable=YES 表示用户具有建立和删除目录的权利
anon_upload_enable=YES 表示用户可以上传文件
file_open_mode=0755 表示上传文件后文件权限为rwxr-xr-x
添加下面二行可让ftp虚拟用户有修改文件权限功能
virtual_use_local_privs=yes
chmod_enable=yes
六、vsftpd端口放行设置
[root@vsftpd ~]# vim /etc/vsftpd/vsftpd.conf
按shift+G跳至最后
增加
listen_port=34536 将ftp的默认21端口改为34536
pasv_min_port=3000 将被动模式最小端口设置为3000
pasv_max_port=3010 将被动模式最大端口设置为3010
保存退出
[root@vsftpd ~]# vim /etc/sysconfig/iptables
打开防火墙配置文件添加以下规则
-A INPUT -m state --state NEW -m tcp -p tcp --dport 34536 -j ACCEPT 放行ftp登陆端口
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3000:3010 -j ACCEPT 放行被动模式最大与最小端口
*******************************************************************************
ftp错误
响应: 500 OOPS: config file not owned by correct user, or not a file
错误: 严重错误
此错误是配置文件权限有问题
用户配置文件权限把用户与组都改为root root即可
*******************************************************************************
******************************************************************************
ftp错误
响应: 553 Could not create file.
错误: 严重文件传输错误
如果配置确定无误的情况下,执行getenforce查看selinux是否打开!如果是Enforcing
则执行setenforce 0 关闭selinux即可