转载http://www.javashuo.com/article/p-xdlpzhwn-co.htmllinux
在网上看了一些别人的笔记,不少不适合新手看,结果各类问题,不是代码错误,就是省略了一些步骤。最后本身整了几天才把经常使用的功能整理完,包括使用虚拟用户来分配不一样用户的权限。不过仍是要感谢前人的笔记。vim
目录安全
准备服务器
建立系统用户tcp
修改配置文件(重点)post
/etc/vsftpd/vsftpd.conf 核心配置文件阿里云
vim /etc/vsftpd/user_list 白名单spa
vim /etc/vsftpd/chroot_list无限制名单.net
若是须要截图部分的代码,请到这里下载。https://download.csdn.net/download/jiance520/10894330
vsftpd.conf部分经常使用参数说明:https://mp.csdn.net/postedit/85723550。
使用环境是阿里云ECS服务器,系统CentOS7
全部操做是在关闭防火墙的状况下演示,若是你的服务器很重要,请不要关闭。
systemctl stop firewalld
刷新防火墙:iptables -F。
阿里云ECS开放相关端口。54301:54305端口你本身定义。用于pasv被动模式的数据传输。这是不少人容易忽略的步聚。
若是服务器不在阿里云,如在本机,请执行如下操做开放端口。
A INPUT -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT A INPUT -m state --state NEW -m tcp -p tcp --dport 54301:54305 -j ACCEPT
检查SElinux状态并关闭,SElinux是 Linux 的一个安全子系统。
getsebool -a|grep ftp
若是没有关闭, 把 SELINUX=SeLinux 改成SELINUX=disable。
vim /etc/sysconfig/selinux
检查是否已经安装vsftpd
rpm -qa| grep vsftpd
若是没有安装,执行yum安装
yum -y install vsftpd
启动vsftpd
systemctl start vsftpd
查看vsftpd服务的状态
systemctl status vsftpd
设置vsftpd服务开机自启
systemctl enable vsftpd
useradd ftpuser3
passwd ftpuser3指定密码123456。密码你本身写。
passwd ftpuser3
给建立的用户文件夹受权,默认是/home/ftpuser3
chmod 777 -R /home/ftpuser3
若是要修改主目录,把/home/ftpuser3改为你本身指定的目录
usermod -d /home/ftpuser3
主要配置文件:
/etc/vsftpd/vsftpd.conf 核心配置文件
/etc/vsftpd/user_list 白名单,里面存放容许登录ftp的帐号,一行一个帐号名,若是不想让某个帐号登录ftp,就别填那个帐号进来。
/etc/vsftpd/ftpusers 黑名单,和列表,user_list差很少,能够忽略。
/etc/vsftpd/chroot_list无限制名单:指定其中的用户容许登和访问主目录和上级目录(前提是chroot_list_enable=NO)。 反过来,不在这里面的用户只能访问本身的主目录。
/etc/pam.d/vsftpd PAM接口配置文件
/var/ftp 匿名用户的工做目录
全部配置文件的修改,请自行备份,备份:cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
修改配置文件,并:wq保存退出。
vim /etc/vsftpd/vsftpd.conf
如下为我修改后的内容,如须要匿名访问,请改anonymous_enable=YES。
pasv_address=xxx.xxx.xxx.xxx填写你本身的ECS虚拟主机IP。
增长用户,由你本身决定是否增长匿名用户,若是启用了user_list,必须添加建立的用户ftpuser3
ftp anonymous ftpuser3
增长如下用户
ftpuser3
修改配置之后,必须重启ftp。
systemctl restart vsftpd
若是启动失败,提示错误:Job for vsftpd.service failed because the control process exited with error,Failed to start Vsftpd ftp daemon,vsftpd,99%是你的vsftpd.conf中代码错误,乱码等。
还有一些其它缘由,中文乱码^M,格式问题。
虚拟用户对系统更安全。能够针对不一样的用户指定不一样的工做目录。
首先查看compat-db
rpm -qa| grep compat-db
若是没有,执行安装
yum install -y compat-db
修改用户配置文件
vim /etc/vsftpd/ftpuser.conf
添加,第一行用户名,第二行密码
ftpuser3 123456
根据虚拟用户配置文件ftpuser.conf生成ftpuser.db文件
db_load -T -t hash -f /etc/vsftpd/ftpuser.conf /etc/vsftpd/ftpuser.db
修改pam
vim /etc/pam.d/vsftpd
建立/配置虚拟用户权限配置文件,指定虚拟用户操做的目录,以及所拥有的操做权限。
建立用户配置文件目录
mkdir /etc/vsftpd/virconf
新建并编辑用户ftpuser3配置文件
vim /etc/vsftpd/virconf/ftpuser3
根据本身的状况,指定虚拟用户ftpuser3访问目录,并拥有如下指定的权限。
咱们能够重复建立多个不一样的虚拟用户,共用一个宿主用户ftpuser3
最后别忘记建立白名单用户
vim /etc/vsftpd/chroot_list
以前咱们在在user_list中添加了用户ftpuser3,若是咱们须要用户拥有更大的访问权限,请在chroot_list中也添加ftpuser3。
最后就是咱们能够在Xftp或 FlashFXP上配置本身的host:xxx.xxx.xxx.xxx主机IP地址和端口21,使用ftp方式访问FTP服务器。远程文件夹目录填写你的主目录,如:/home/ftpuser3
也能够在个人电脑上添加一个网络位置。来访问FTP。还能够在IDEA上配置。
xftp远程文件夹目录填写跟local_root=/home/ftpuser3不一致,没有访问权限。
若是配置没有错误,有该提示,并不影响操做,若是要去掉,能够在chroot_list中也添加ftpuser3,可是会增长用户的访问权限。
没有生成db数据文件。或数据文件ftpuser.db中没有该账户。
用户名或密码错误。
其主目录文件夹没有建立。或指定的主目录不一致。
防火墙拦截,没有开放端口。
没有使用pasv被动模式。
文件夹没有受权chmod 777 -R
账户没有加入user_list
allow_writeable_chroot=YES
没有重起更新修改。
必定要记得,修改虚拟用户密码或新增虚拟用户后要再次执行生成数据文件ftpuser.db,修改vsftpd.conf要记得重起。或者reboot重启系统,关闭防火墙。
db_load -T -t hash -f /etc/vsftpd/ftpuser.conf /etc/vsftpd/ftpuser.db systemctl restart vsftpd