最近想在centos平台做一个ftp服务器保存上传的语音文件,使用系统yum源自带的vsftpd软件搭建。vsftpd的最大特(难)点是权限控制严格,配置起来也是很多坑,一不小心就报530、500错误,相比FileZilla难的不只一点。操作系统是centos7.9 , vsftpd3.0.2。网上很多资料由于版本更新已经不能用。查询和操作很久后,总算整出了一个可用的ftp服务器,该服务器可以对不同的用户进入不同的目录。下面进行介绍:
1.vsftpd的安装和启动
centos下软件安装使用yum命令
yum install vsftpd
安装完成,启动vsftpd
systemctl start vsftpd.service
直接关闭防火墙?
systemctl stop firewalld.service
此时可以用FileZilla Client尝试登陆ftp服务器,用户名anonymous,密码不填。根目录下能看到一个pub文件夹,说明服务已经运行成功。
2.vsftpd的配置的添加用户
vsftpd的难点就是配置,尤其要实现文件自由上传。
出于安全性考虑,应该屏蔽anonymous用户(配置anonymous的上传很久都没有成功,我选择放弃)。
打开/etc/vsftp/vsftpd.conf文件,做出如下修改(取消注释)就能屏蔽anonymous用户。
anonymous_enable=NO
vsftpd的用户添加和centos新用户添加方法一致(每个centos用户都对应一个ftp用户)。执行以下代码,新建了一个ftpdemo用户,并且新建/home/ftpdemo/ftp文件夹作为ftp服务端专用文件夹,并且开放读写权限。
useradd -m ftpdemo #添加用户,一定要加上-m参数
passwd ftpdemo #设置密码
mkdir -p /home/ftpdemo/ftp
chmod 777 /home/ftpdemo/ftp
下面重点来了,要在/etc/vsftp/vsftpd.conf添加以下内容,使得每个用户登陆ftp都到自己独立的目录(互相不可见)。这几行配置保证用户ftpdemo登陆时,直接访问/home/ftpdemo/ftp文件夹(作为根目录),并且可以进行上传文件。
chroot_local_user=YES chroot_list_enable=NO user_sub_token=$USER local_root=/home/$USER/ftp allow_writeable_chroot=YES
最后重启vsftpd服务即可,执行以下代码
systemctl restart vsftpd.service
至此,就能够利用ftp客户端(例如FileZilla Client)登陆搭建的ftp服务器,并且访问自己的独立文件,不互相影响。
|