背景:支持使用filezilla上传文件到公司的服务机器上,所以搭建vsftpd支持filezilla进行上传
一、linux机器搭建vsftpd服务
1、先看看自己的机器属于什么发行版,不同的发行版命令不一样
我的是centos,其他发行版命令不一样,查看本机发行版
cat /etc/redhat-release
2、安装命令,点击y然后安装成功
sudo yum install vsftpd
这个需要确认下 yse 或者 sudo yum -y install vsftpd
这个直接跳过是否yser or no
3、启动vsftpd服务
sudo systemctl start vsftpd
以上就是简单的安装成功了。
二、本地搭建客户端,使用的是filezilla进行上传
我用的是mac版本
下载地址: 传送门
记得是下载客户端,别下载错成服务端了,汉化版本目前没找到 ,汉化版在设置中修改语言即可
三、使用filezilla教程
将英文改成中文,即汉化
1. 打开FileZilla客户端。
2. 点击菜单栏中的"编辑"(Edit)选项。
3. 从下拉菜单中选择"设置"(Settings)选项。
4. 在弹出的设置窗口中,找到"界面"(Interface)选项,并点击它。
5. 选择language 然后选择 chinese 即可
记得关闭重启生效,这里有个坑,我用英文版的,创建英文目录正常,创建中文失败
匿名用户操作
以上步骤完成,开始进行连接,首先我们什么配置都没改
直接输入外网地址,点击快速连接就能连接上了。此时是匿名登陆不需要账号密码就行
可以看到右侧显示/pub这个是,匿名登陆在服务器上有个默认路径是/var/ftp/,此时pub目录就在这个路径下。
1、匿名登陆是因为默认的配置/etc/vsftpd/vsftpd.conf
中
anonymous_enable=YES
代表启用匿名登陆,当你设置成No时,就不能使用匿名登陆了。
2、目前只支持你下载并不能上传,接下来支持上传
首先修改配置
anon_upload_enable=YES # 允许匿名用户上传
# 如果发现上传失败,那是因为匿名用户上传权限和配置有关还和文件系统有关,找到pub目录增加其他用户的权限
sudo chmod o+rw pub # 赋予其他用户的读写权限
3、允许匿名用户创建目录,默认不允许创建的
anon_mkdir_write_enable=YES
修改配置文件即可
4、此时匿名用户还不能修改、删除、重命名
anon_other_write_enable=YES
修改配置即可,这个在配置中没有,需要自己添加
本地用户操作
使用服务器上的用户和密码登录服务器进行上传文件更加安全
1、创建用户并设置密码
useradd ftpuser # 能够在 /home中看到 存放的位置 /etc/passwd 查看 cat /etc/passwd
passwd ftpuser # 给用户设置密码 存放位置 /etc/shadow cat /etc/shadow
2、登录
然后通过用户名和密码登录进去。默认进入到/home/username 目录下
你可以进行基本的操作,因为默认配置允许本地用户上传、修改、编辑、删除等操作
3、指定用户登录时的目录位置
local_root
可以指定位置
4、这种情况用户也能看到其他目录,如果linux上其他用户可以读写,那么它就能操作这些文件了,不安全,此时需要启用chroot功能
allow_writeable_chroot=YES # 开启chroot必须添加
chroot_local_user=YES # 启用了本地FTP用户的chroot功能。这将限制本地FTP用户访问其家目录以外的目录
chroot_list_enable=YES # 表示启用了chroot_list文件的使用。chroot_list文件用于指定哪些FTP用户将被chroot限制
chroot_list_file=/etc/vsftpd/chroot_list # 指定了chroot_list文件的路径。这个文件包含了将被chroot限制的FTP用户的列表。您可以编辑这个文件并添加或删除FTP用户的名称,以控制哪些用户将被chroot限制。
如果发现报错,记得在/etc/vsftpd目录下创建chroot_list文件,另外需要注意的是不需要将你当前本地登录的用户给添加进chroot_list,因为此时的chroot_list相当于白名单,他可以允许文件中用户可以切换到其他目录。具体配置是和chroot_list_enable、chroot_local_user相关的,具体看下面解释,所以现在就有了ftpuser这个用户只能访问local_root指定的目录了。
四、vsftpd的配置
1、修改/etc/vsftpd/vsftpd.conf 配置后记得重启加载最新配置
systemctl restart vsftpd
2、用户连接的验证方式
匿名用户登录
用户账号名称:ftp或anonymous
用户账号密码:无密码
工作目录:/var/ftp
默认权限:默认支持下载不支持上传,上传权限由两部分组成(主配置文件和文件系统)
本地用户登录
用户账号名称:本地用户(/etc/passwd)存放的位置
用户账号密码:用户密码(/etc/shadow)存放的位置
工作目录:登录用户的宿主
目录权限:最大权限(drwx------)
虚拟用户登录
3、配置文件参数介绍
匿名用户相关参数配置
默认配置:
anonymous_enable=YES # 允许匿名用户登录
匿名用户可选参数
anon_upload_enable=YES # 控制匿名用户是否允许上传文件。将其设置为YES表示允许匿名用户上传文件。
anon_mkdir_write_enable=YES # 控制匿名用户是否允许创建新的目录。将其设置为YES表示允许匿名用户创建目录。
anon_other_write_enable=YES # 匿名用户是否可以操作权限 例如重命名、删除等权限
anon_roow=/var/ftp # 匿名用户登录时所登录的目录,如果想要设置,修改配置即可
chown_uploads=YES/NO(NO) # 设置是否改变匿名用户上传文件的属主
chown_username=username # 设置匿名用户上传文件属主名,就是修改所属用户到底是谁,看到默认是ftp -rw------- 1 ftp ftp 6 Jul 9 19:52 hello2.txt
本地用户相关参数
local_enable=YES/NO(YES) # 允许本地用户登录
local_root=/home/username # 本地用户登录时,将被更换到定义的目录下
write_enable=YES/NO(YES) # 本地用户是否有写权限,属于全局设置
# 控制用户是否允许切换到上级目录
allow_writeable_chroot=YES # 想要开启chroot功能必须加上
chroot_list_enable=YES/NO(NO) #
chroot_list_file=/etc/vsftpd/chroot_list # 设置是否启用chroot_list_file配置指定的用户文件
chroot_local_user= #用于指定用户列表文件,该文件用于控制哪些用户可以切换到用户家目录的上级目录
搭配情况:
A=chroot_list_enable,B=chroot_local_user
# 这个文件类似于白名单 里面的用户可以其他权限
1 A=YES,B=YES 在 /etc/vsftpd/chroot_list 文件中列出的用户,可以切换到其他目录,未在文件中列出的用户,不能切换到其他目录
# 类似于黑名单
2 A=YES,B=NO 在 /etc/vsftpd/chroot_list .. 不能切换到其他目录,未在的可以切换到其他目录
3 A=NO,B=YES 所有用户不能切换到其他目录
4 A=NO,B=NO 所有用户都可以切换到其他目录
访问控制相关
在/etc/vsftpd下的ftpusers文件中作用
解释:ftpusers文件是一个用于存储被禁止登录FTP的用户列表的文件。当FTP服务器配置为使用该文件时,任何出现在ftpusers文件中的用户将被禁止登录FTP服务器。这个文件通常用于限制某些用户或组的FTP访问权限,以增加服务器的安全性。
所以你想让某个用户不能登录ftp,把它加入到这个文件中即可。
在/etc/vsftpd下的user_list文件的作用
解释:user_list文件是一个用于存储允许或禁止访问FTP服务器的用户列表的文件。该文件通常用于配置FTP服务器的访问控制,以确定哪些用户可以登录和访问FTP服务器。用户列表中的用户可以根据需要进行添加或删除,以控制其FTP访问权限。这个文件可以用于限制特定用户的FTP访问,提高服务器的安全性。
1、当userlist_deny=NO
此时仅允许这个user_list文件中的用户访问ftp
2、当userlist_deny=YES
此时这个文件中的用户都被拒绝访问ftp
访问速率设置
anon_max_rate=0 # 设置匿名用户最大传输速度,单位 B/s 0表示不限制速度,默认值0
local_max_rata=0 # 本地用户使用的最大传输速度。单位 B/s 0表示不限制速度,预设值0
五、常见问题(踩坑合集)
1、创建中文目录失败、创建英文目录成功
注意,前提是你已经配置了权限,这个我最后解决的办法是将英文版本改成中文
1. 打开FileZilla客户端。
2. 点击菜单栏中的"编辑"(Edit)选项。
3. 从下拉菜单中选择"设置"(Settings)选项。
4. 在弹出的设置窗口中,找到"界面"(Interface)选项,并点击它。
5. 选择language 然后选择 chinese 即可
先就这么多吧,足够应付上传了~