前言
今天被经理要求搭建ftp服务器,然后就去网上搜索了一下教程。搭建成功后(遇到的坑不少)特此记录一下。因为是为了记录一下整个操作流程以防以后使用所以比较啰嗦。
目录
1、安装vsftpd
2、创建用户和用户组
3、修改配置文件及创建例外用户文件chroot_list
4、设置防火墙端口开放和服务器端口开放
安装vsftpd
使用yum指令进行安装(安装这个东西还真的是简单)
yum install vsftpd* -y
然后可以使用以下命令开始,停止,或重启
/bin/systemctl start vsftpd.service #启动vsftpd
/bin/systemctl stop vsftpd.service #停止vsftpd
/bin/systemctl restart vsftpd.service #重启vsftpd
然后可以使用以下指令查看启动状态
systemctl status vsftpd
执行正常结果如下所示:
创建用户和用户组
新创建一个用户和用户组,因为需要我们要对用户限制访问空间和位置,这些会在下一节讲到。
创建用户组,其实从最终结果来说我没有用到用户组上的东西,但是还是跟着教程创建了一个用户组,如下所示:
groupadd ftpgroups #创建一个名为ftpgroups的用户组
可以一步到位的创建用户同时分配用户根目录和用户组如下所示,其中/home/test目录不存在需要自己创建:
useradd -d /home/test -g ftpgroups test
当然会有麻烦一些的方法,首先创建用户然后给用户分配组别。设置密码passwd+用户名这个我就不解释了。ok如果你不限制用户的权限访问目录什么的到这里应该就能使用本机访问了,如果想要远程访问需要设置一些其他东西。不过接下来因为我们需要限制用户的访问目录所以我们先讲一下如果限制用户的访问目录。
修改配置文件及创建例外用户文件chroot_list
首先找到vsft的配置文件 /etc/vsftpd/vsftpd.conf,在配置文件中我们找到如下三个属性
chroot_local_user=YES #是否将所有用户限定在主目录内chroot_list_enable=YES #是否启动限制用户名单chroot_list_file=/etc/vsftpd/chroot_list #是否限制在目录下的用户名单,没有的话需要自己创建 allow_writeable_chroot=YES #报503错误的时候添加
上面三个属性在限制用户的访问权限中是相当重要的,其中chroot_list_file属性中的作用还取决于chroot_local_user和chroot_list_enable的组合,具体可以参考这个博客:https://blog.csdn.net/bluishglc/article/details/42398811,我同时从上面摘抄下来一段话如下所示:
chroot_local_user的值,我们可以这样记忆: chroot_local_user总是一个全局性的设定,其为YES时,全部用户被锁定于主目录,其为NO时,全部用户不被锁定于主目录。那么我们势必需要在全局设定下能做出一些“微调”,即,我们总是需要一种“例外机制",所以当chroot_list_enable=YES时,表示我们“需要例外”。而”例外“的含义总是有一个上下文的,即,当”全部用户被锁定于主目录“时(即chroot_local_user=YES),"例外"就是:不被锁定的用户是哪些;当"全部用户不被锁定于主目录"时(即chroot_local_user=NO),"例外"“就是:要被锁定的用户是哪些。这样解释和记忆两者之间的关系就很清晰了!
ok,那么从上面的解释我们就可以将chroot_local_user设定为NO,将chroot_list_enable设置为yes并在chroot_list中添加需要限制的用户就可以了。接下来设置防火墙什么的就是问题最多的地方了。
设置防火墙端口开放和服务器端口开放
按照上面的基本没有什么问题就可以直接使用本地ftp进行连接了然后就是远程连接。远程连接的话一般都涉及到防火墙、服务商安全组这两个部分。So,我们先说一下防火墙,centos7的防火墙默认是firewalld,所以你需要先在防火墙上打开你的端口,还需要你添加ftp服务,可以参考博客:https://blog.csdn.net/u011383596/article/details/80869114,操作步骤就是添加服务,重启防火墙这里我把命令给粘贴了过来:
firewall-cmd --permanent --add-service = ftp #添加服务 systemctl restart firewalld.service #重启防火墙
接下来如果你的服务器是云服务器列如阿里云的话你需要设置一下你的安全组,将端口21添加进去。
这些都操作完的话可以用telnet ip port来测试一下时候能够访问到,如果访问到基本就大功告成了。然后可以用一些工具进行连接如果找不到目录的话需要修改为主动连接。这些我就不废话了。
结束语
其实整个流程是不麻烦的,但是在中间还是遇到了很多问题。比如我远程一直连接不上,我检查了自己防火墙关了,安全组加了但是就是访问不到,后来我一想我用的是测试服务器然后这个服务器的环境不是我搭的然后我就问搭建的人发现他用的是iptables,因为这个问题我挠了2个小时的头。期间还遇到python多版本问题,还无意间把用户添加到了user_list这个文件中(这个文件里面的用户是不能使用ftp的)等等问题。不管怎么说还是把问题解决了,写个文章来记录一下吧。