最近在ubuntu下搭建了一个ftp服务器。第一次搭建有各种各样的问题。
有访问限制,有登录超时等等,而网上的教材总会有一些出入,
甚至好几份教材拼凑起来才能算是完整,
在经历各种磕磕碰碰之后终于搭建成功。
希望通过这篇博文,让广大入门队友少走弯路
本文有以下几点内容,如没有需要的可以到别的地方再看看。(节约朋友们的时间)
本教程的的ftp目录为apache2的目录(/var/www)
ubuntu
1:vsftpd搭建(包括阿里云ecs的部分特性)
2:vsftpd用户限制(主要是对用户登录ftp和登录shell的控制)
3:ftp链接成功后访问上级目录的限制(主要是对文件目录权限的控制)
正题:以上面三部分阐述
vsftpd版本:3.03
1:
vsftpd搭建
//更新ubuntu deb包
sudo apt-get update
//安装vsftpd
sudo apt-get install -y vsftpd
//测试监听端口(注:阿里云ecs专有网络需要设置安全组规则,21端口入方向,否则即使端口处于监听状态外网也无法访问)
sudo netstat -natp | grep 21
//修改vsftpd.conf配置
sudo vim /etc/vsftpd.conf
配置修改:
anonymous_enable=NO//允许匿名用户登录,默认3.03为NO。不需要修改,如果为YES,修改为NO
local_enable=YES
write_enable=YES //写权限,去掉前面的#
chroot_local_user=NO //配合下面这条命令使用,即在chroot_list_file知道文件中的用户不可访问上级目录
chroot_list_enable=YES //限制用户读取上级目录
chroot_list_file=/etc/vsftpd.chroot_list //限制用户文件,文件名称可自己修改
//以下三条命令是开启被动模式的命令
pasv_enable=YES //开启被动模式
pasv_min_port=20000 //被动模式最小端口
注:这两个端口可自己设置大小,如果在阿里云ecs专有网络,需要设置安全组 20000/20500 入方向开启规则(否则外网无法通过这些端口访问)
pasv_max_port=20500 //被动模式最大端口
修改完毕,保存退出vim编辑器
这个时候我们已经完成了一部分,也是网上的资料中大部分的内容了
2:ftp用户限制
第一部分完成的朋友到这应该已经有一个大概的思路啦。(上边有注释)
没错,就是创建我们的ftp账号,以及加入权限
创建用户
命令1:sudo useradd -s /usr/sbin/nologin ftpuser (用户名可以自己定义)
/usr/sbin/nologin 为拒绝用户登录shell
如果ftp目录不是apache2的目录。可以直接再创建用户时设置目录
(sudo useradd -d 你的目录 -s /usr/sbin/nologin ftpuser)
(注意)/usr/sbin/nologin 这一段。在不同的服务器中可能不同。有可能是/bin/nologin
可以使用sudo vim /usr/sbin/nologin 命令查看。如果有内容,那久是这个了
还需要查看一下 /etc/shells 中是否有该命令 没有则在最后添加上 /usr/sbin/nologin (/bin/nologin)
命令2:sudo passwd ftpuser
连续输入两次密码即可。会有successful提示成功
用户创建成功后。
命令3:sudo vim /etc/passwd
打开文件后找到自己的ftpuser那一行
ftpuser:x:1002:1004::/var/www:/usr/sbin/nologin
中间/var/www这一块就是最终的ftp被限制的目录(根据你的目录自己修改一下)
用户创建完成还差最后一步:把用户加入到ftp的限制目录中(我这里是vsftpd.chroot_list),这样才会生效
命令4:sudo vim /etc/vsftpd.chroot_list
第一行写上ftpuser(你创建的ftp用户名)
命令5:sudo vim /etc/ftpusers
这个文件是ftp的黑名单。如果你的用户在这个名单中,是不能登录ftp的。如果有,则删除该文件中你的用户名,如果没有直接退出。
3:ftp链接成功后访问上级目录的限制
重头戏来了。
在没有误操作的情况下
有一些朋友不加chroot可以正常连接ftp,但是上级目录可以访问,
有一些则是加上chroot,进入时直接就是 500 illegal port command
很多教材都会让你去修改主动连接被动连接,然而实际测试是现在的vsftpd只要设置了上述命令中关于被动连接的3条命令就完全没问题了。
这个时候你再修改或添加一些别的命令反而会有227等错误的出现,甚至是端口都打不开了。(配置文件错误)
其实这个时候是到了修改目录权限的时候了。
当ftp目录是apache2的www目录时,不可以修改www目录的所有者和用户组,这样会导致apache不解析www下的文件
这个时候一招漂亮的曲线救国
chmod -R 777 /var/www 修改www目录以及其下所有子目录权限为777,
这个时候我的ftpuser用户也可以修改这些文件了,(即可以对这些目录增删改查了),而且还不影响apache的正常工作
最后一条命令。
因为此时的www目录或者你自己设置的目录。本身以及其下的子目录都是777权限,所以,你的用户可以访问到上级目录,即脱离限制
所以需要给顶级目录修改权限
chmod 775 /var/www //将www或者你的目录权限修改为其他用户只读目录,变相的就修改了ftpuser(或你设置的用户)对该目录的权限,则限制成功。
service vsftpd restart //重启ftp服务
netstat -natp | grep 21 //查看端口监听状态,如果没有问题,就可以登录ftp了。
写的第一篇博文,谢谢大家看到这里,有错误的或者有问题不明白的联系我
wx:goodatfor
昵称:向久
联系我时备注哦
ubuntu16.04 最新vsftpd搭建完整教程(原创2017.09.18)
最新推荐文章于 2024-10-01 11:52:56 发布