一 单独虚拟用户概念
给每个虚拟用户单独建立目录,并建立自己的配置文件,方便单独配置权限,并可以单独制定上传目录。
二 单独为虚拟用户设置权限
2.1 创建用户单独保存虚拟用户配置文件的目录
[root@imxhy ~]# mkdir /etc/vsftpd/vusers_dir #创建配置文件保存目录
注意:1 此为目录,非文件,单独保存了虚拟用户的配置文件
2.2 添加配置项
[root@imxhy ~]# vi /etc/vsftpd/vsftpd.conf
local_root=/home/vftproot/ #用于其他用户继承的主目录
user_config_dir=/etc/vsftpd/vusers_dir #指定保存虚拟用户配置文件的目录
注意:1 如没有给虚拟用户单独指定配置文件,则默认继承主配置文件vsftpd.conf的配置
2.3 单独创建配置文件
[root@imxhy vusers_dir]# cd /etc/vsftpd/vusers_dir/
[root@imxhy vusers_dir]# vi ftptest01 #单独的配置文件名必须和虚拟用户名一致
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES #允许此用户上传
local_root=/home/ftptest01 #指定独立的上传目录
2.4 创建虚拟用户主目录并修改权限
[root@imxhy ~]# mkdir /home/ftptest01 #创建独立的目录
[root@imxhy ~]# chown vuser /home/ftptest01/
#能否上传需要FTP服务权限,同时也需要上传目录的权限,因此需要将主目录所属人修改为本地用户vuser
[root@imxhy ~]# chmod u-w /home/ftptest01/
#新版vsftp不允许对主目录有w权限,否则无法登录,取消w权限。
[root@imxhy ~]# mkdir /home/ftptest01/pub #创建用户可上传的目录
[root@imxhy ~]# chown vuser:vuser /home/ftptest01/pub/ #将所属人改为vuser
[root@imxhy ~]# ll /home/
……
dr-xr-xr-x. 2 vuser root 6 Aug 30 06:56 ftptest01
[root@imxhy ~]# ls -ld /home/ftptest01/pub/
drwxr-xr-x. 2 vuser vuser 6 Aug 30 07:15 /home/ftptest01/pub/
[root@imxhy ~]# systemctl restart vsftpd
[root@imxhy ~]# cd /home/ftptest01/
[root@imxhy ftptest01]# touch down.txt #创建用户测试文件
三 测试登陆
E:\Temp\ftp>ftp 192.168.10.10
连接到 192.168.10.10。
220 (vsFTPd 3.0.2)
用户(192.168.10.10:(none)): ftptest01
331 Please specify the password.
密码:
230 Login successful.
ftp> get down.txt
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for down.txt (0 bytes).
226 Transfer complete.
ftp> put down.txt
200 PORT command successful. Consider using PASV.
553 Could not create file. #主目录不允许上传
ftp> cd pub
250 Directory successfully changed.
ftp> put down.txt
200 PORT command successful. Consider using PASV.
150 Ok to send data.
226 Transfer complete. #子目录下可上传
四 总结
- 没有单独指定配置文件主目录的默认继承主配置文件文件配置
- vsft安全限制,禁止在任何主目录下上传文件,必须新建一层子目录,然后赋予所属人为vuser