每一个软件工具,我们不仅要学会软件怎么部署、能实现什么功能,还要了解其使用场景。 网上有很多FTP搭建的方法,但很少考虑到用户的真实需求,仅仅是教会如何搭建使用,这样会导致读者部署软件后,无法很好的发挥其作用,下面是根据一个真实需求模拟搭建的。 vsftpd重点是在配置文件上,而安装过程非常简单,服务器联网状态下,使用yum命令即可一键安装。
-
需求描述 我将根据以下需求来配置vsftpd。 (1)FTP中的用户只能访问属于自己的FTP目录和公共目录; (2)所有FTP用户对公共目录下的数据均有操作权限; (3)创建两个测试帐号:ftpuser001和ftpuser002,对应的家目录也是ftpuser001和ftpuser002,本文使用本地帐号,非FTP虚拟帐号。 (4)公共共享目录名:public(这里设置新public目录,非默认)。 (5)不允许匿名登录,即必须登录帐号才可以使用FTP上传/下载文件。
-
部署环境 操作系统:CentOS7.6 关闭防火墙和SELinux; 配置阿里YUM源:
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repocurl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
- 安装配置FTP 注意服务器需要联网,如果无法联网,可以挂载ISO文件进行安装。
yum install vsftpd -y
- 创建FTP帐号 分别创建两个测试帐号并设置密码:
useradd ftpuser001echo "ftpuser@001" | passwd --stdin ftpuser001useradd ftpuser002echo "ftpuser@002" | passwd --stdin ftpuser002
- 修改FTP配置文件
vi /etc/vsftpd/vsftpd.conf
#主要修改以下配置项(其他默认参数不要修改) * * *
anonymous_enable=NO #不允许用户匿名登录chroot_local_user=YES #将用户限制在其对应的家目录下,不限制则可以跳转到根(/)目录allow_writeable_chroot=YES #限制用户家目录后必须开启,否则无法登陆
使用egrep命令过虑查看配置文件中有效配置参数,大致如下: *
egrep -v "^#|^$" /etc/vsftpd/vsftpd.conf
- 创建公共目录
mkdir /public
- 设置公共目录权限 因为所有FTP帐号都是本地系统帐号,所以,所有需要访问public这个公共目录的ftp用户设置访问权限,这里我使用setfacl命令针对每个用户单独来配置,缺点就是有很多帐号时,配置比较麻烦,优点就是可以控制到每个帐号:
setfacl -m u:ftpuser001:rwx /publicsetfacl -m u:ftpuser002:rwx /public
使用getfacl命令查看权限: *
getfacl /public
当然也可以使用以下命令: *
chmod o+rwx /public
按照以上配置后,所有用户都可以相互删除文件,为了解决只有上传文件的用户才能对文件进行删除,需要设置sticky bit: *
chmod o+t /public
- 挂载公共目录 可能有很多同学不理解为什么还要将public目录进行挂载操作,这里可以理解是在创建硬链接,把共享目录public链接到每个FTP用户的根目录下,方便用户直接使用:
mkdir /home/ftpuser001/publicchown -R ftpuser001:ftpuser001 /home/ftpuser001/publicmkdir /home/ftpuser002/publicchown -R ftpuser002:ftpuser002 /home/ftpuser002/public
挂载: * *
mount --bind /public /home/ftpuser001/publicmount --bind /public /home/ftpuser002/public
- 启动vsftpd
systemctl start vsftpd
- 测试效果
10.1 登录测试 所有用户都可以正常登录:
|---------------------------------------------------------------------------------------------------------------------------| | |
10.2 上传下载测试 (1)所有用户都可以上传、下载、删除、查看属于家目录中的文件,对于public目录,所有ftp用户都可以上传、下载所有文件; (2)所有ftp用户在public目录下,只能对自己上传的文件进行删除和修改文件名称,不能互相删除和修改名称;修改名称或删除时,提示如下: 删除文件:
|---------------------------------------------------------------------------------------------------------------------------| | |
重命名文件:
|---------------------------------------------------------------------------------------------------------------------------| | |
10.3 登录FTP慢解决办法 如果在使用windows资源管理器登录FTP时很慢,则可以在配置文件中增加以下参数。 *
vi /etc/vsftpd/vsftpd.conf
#增加以下参数 *
reverse_lookup_enable=NO
在我电脑上测试配置该参数后,可以缩短3~4倍的等待时长。
- 总结 使用FTP本地用户可以很容易控制ftp用户对public目录的访问权限控制; vsftpd无法同时配置多个ftp目录,可以配合mount --bind命令完成; 本文档仅对测试部分进行配置,实际使用需要配置更多的参数;