前言:
有很多博客写过 linux 搭建 FTP,很遗憾,照着搭建出了不少故障,所以这里记录一下关键的坑怎么处理。
1.需求和环境
需求:基于 linux 搭建一个FTP,保证用户只能访问自有目录,可以正常进行读写操作。
linux 版本: centos 7.x
2.安装 FTP
yum install -y vsftpd
3.启动 FTP 服务
service vsftpd start
其他可能用到的命令
停止服务:service vsftpd stop
重启服务:service vsftpd restart
查看版本:vsftpd -version
查看状态:service vsftpd status
这时候可以看到在 /var/ftp 目录被创建,一般情况下这个目录可以作为主目录,当然也可以另外指定
4.配置文件
/etc/vsftpd 目录下
ftpusers -- 黑名单配置文件,这个里面的用户不允许访问FTP服务器
user_list -- 白名单配置文件,允许访问FTP服务器的用户列表
vsftpd.conf -- ftp 配置文件
在配置之前需要创建一个用户作为 FTP 用户(这里创建 ftpuser)
useradd ftpuser
passwd ftpuser
把用户名添加到 user_list 文件,重启服务(service vsftpd restart)
5.客户端连接FTP服务
以上完成后全部使用的是默认配置(端口默认21),连接看下效果(推荐使用 FileZilla 客户端)
报 503 的错误,根本连不上,哪里有问题呢,如果你查看 user_list 文件(文件最上面的内容)
# vsftpd userlist
# If userlist_deny=NO, only allow users in this file
# If userlist_deny=YES (default), never allow users in this file, and
# do not even prompt for a password.
# Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers
# for users that are denied.
描述得很清楚,需要 vsftpd.conf 中
userlist_enable=YES 改为
userlist_enable=NO
再重启一下服务发现可以连接。
6.设置用户只能访问自有目录
经过上面 5 步,你会发现用 ftpuser 登录以后可以任意切换目录,如下
这和我们初衷(限制只能访问自有目录)不符合(默认情况下,ftpuser 只有 /home/ftpuser 目录),怎么设置?
打开 vsftpd.conf,
#chroot_list_enable=YES
改为
chroot_list_enable=NO
重启服务后再连接会出现一个大坑,报 500 的错
原因是:
从 vsftpd 2.3.5之后(当前3.0.2),vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报 500。
解决方案有两个:
- 修改主目录读写权限(推荐)
chmod -R 555 /home/ftpuser/
- vsftpd.conf 添加
allow_writeable_chroot=YES
notes:
采用第一种方案的话,需要在该目录下新建有写权限的目录,并且指定目录所有者为 ftpuser
7.建议
如果有其它需求,请一定仔细阅读 vsftpd.conf 注释,里面包含了几乎所有的配置讲解。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/16541.html