linux配置ftp服务器

Linux下配置FTP服务器及权限管理
本文详细介绍了如何在Linux系统中配置FTP服务器,包括启用匿名访问、设置本地用户验证、以及通过白名单和黑名单进行访问控制。同时,还展示了Windows客户端进行FTP连接和文件操作的步骤。

一:配置FTP 服务器,允许匿名访问

1.1 FTP 服务

FTP 服务,用来传输文件的协议

FTP 服务器默认使用 TCP 协议的20,21 端口

20 端口用于建立数据连接,并传输文件数据
21 端口用于建立控制连接,并传输FTP 控制命令

FTP 数据连接分为2主动模式和被动模式

主动模式: 服务器主动发起数据连接

被动模式: 服务器被动等待数据链接 (本章实验使用被动模式)

1.2 配置FTP 服务器,允许匿名访问

[root@localhost ~]# yum -y install vsftpd                  #安装vsftpd 包
 
root@localhost ~]# cd /etc/vsftpd/ 
[root@localhost vsftpd]# ls
ftpusers  user_list  vsftpd.conf  vsftpd_conf_migrate.sh
[root@localhost vsftpd]# cp vsftpd.conf vsftpd.bak          #备份vsftp.conf 文件
 
[root@localhost vsftpd]# ls
ftpusers  user_list  vsftpd.bak  vsftpd.conf  vsftpd_conf_migrate.sh
 
[root@localhost vsftpd]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES           #开启匿名访问(默认已经开启)
write_enable=YES               #开放服务器的写权限(上传文件需要开启)默认快开启
anon_umask=022                 #设置匿名用户上传数据的权限掩码为022 (反掩码)
anon_upload_enable=YES         #允许匿名用户上传文件
anon_mkdir_write_enable=YES    #允许匿名用于创建(上传)目录
anon_other_write_enable=YES    #允许其他用户删除,重命名,覆盖等操作
:wq                           #保存退出
 
[root@localhost vsftpd]# systemctl start vsftpd     #启动 ftp 服务
[root@localhost vsftpd]# systemctl enable  vsftpd   #开启 ftp 的自启
[root@localhost vsftpd]# systemctl stop firewalld   #关闭防火墙
[root@localhost vsftpd]# setenforce 0               #设置selinux 模式
 
[root@localhost vsftpd]# chmod 777  /var/ftp/pub
 #为匿名访问ftp 目录的根目录 下的 pub 子目录 权限设置为最大权限,以便匿名用户上传数据

二:windows 访问测试

连接方式:

在Windows 系统 Win +r ,然后 输入 cmd ,打开命令行输入。

切换windoes 目录到桌面:

C:\Users\Administrator>cd C:\Users\Administrator\Desktop

连接ftp服务器:

ftp ftp服务器地址

匿名访问:

用户名为 ftp ,密码为空, 登录ftp

ftp 操作:

pwd #查看当前所在目录

ls #查看当前目录

cd #切换目录

get 文件名 #下载文件到windows 本地

put 文件名 #上传文件到 ftp目录

quit #退出

C:\Users\Administrator>cd C:\Users\Administrator\Desktop   #切换到桌面
C:\Users\Administrator\Desktop>ftp 192.168.23.10         #连接到ftp服务器
连接到 192.168.23.10220 (vsFTPd 3.0.2)
200 Always in UTF8 mode.
用户(192.168.23.10:(none)): ftp                     #用户名输入 ftp
331 Please specify the password.
密码:                                              #密码为空
230 Login successful.
 
ftp> pwd                            #查看当前所在目录
257 "/"                           #根目录(匿名用户根目录是/var/ftp/)
 
ftp> ls                           #查看目录下的内容
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
pub                              #目录下有pub 目录
226 Directory send OK.
ftp: 收到 8 字节,用时 0.008.00千字节/秒。
 
ftp> cd pub                     #切换到pub 目录
250 Directory successfully changed.
ftp>
ftp> pwd
257 "/pub"
 
ftp> ls                         #查看pub 目录下的内容
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
abc.txt                        #拥有 abc.txt 文件
226 Directory send OK.
ftp: 收到 12 字节,用时 0.0012000.00千字节/秒。
 
ftp> get abc.txt               #从ftp 服务器下载 abc.txt 到本地
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for abc.txt (15 bytes).
226 Transfer complete.
ftp: 收到 15 字节,用时 0.0015.00千字节/秒。
 
ftp> put test.txt              #从本地 上传 test.txt 到ftp 服务器
200 PORT command successful. Consider using PASV.
150 Ok to send data.
226 Transfer complete.
ftp: 发送 12 字节,用时 0.0012.00千字节/秒。
ftp> quit                     #退出ftp
221 Goodbye.

验证

C:\Users\Administrator\Desktop>dir  abc.txt    #windows查看 abc.txt 是否存在
2021/06/29  10:25                15 abc.txt
               1 个文件             15 字节
               0 个目录 725,971,259,392 可用字节
                
[root@localhost pub]# pwd  
/var/ftp/pub
[root@localhost pub]# ls  test.txt            #linux 查看 test 文件是否存在
test.txt

三:设置本地用户验证访问ftp

3.1 修改配置文件 /etc/vsftpd/vsftpd.conf

设置本地用户可以登录,禁止匿名用户登录

[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf  
local_enable=YES               #启用本地用户
anonymous_enable=NO            #关闭匿名用户访问(要关闭,而不失注释)
write_enable=YES               #开启服务器写权限
local_umask=077                #设置仅宿主拥有上传文件的权限(反掩码)
chroot_local_user=YES          #将访问禁锢在用户的宿主目录中
allow_writeable_chroot=YES     #允许被限制的用户主目录具有写权限
:wq

[root@localhost ~]# systemctl restart vsftpd   #重启服务

3.2 访问测试

C:\Users\Administrator\Desktop>ftp 192.168.23.10
连接到 192.168.23.10220 (vsFTPd 3.0.2)
200 Always in UTF8 mode.
用户(192.168.23.10:(none)): ftp
331 Please specify the password.
密码:
530 Login incorrect.
登录失败。                     #ftp 用户无密码登录失败

C:\Users\Administrator\Desktop>ftp 192.168.23.10
连接到 192.168.23.10220 (vsFTPd 3.0.2)
200 Always in UTF8 mode.
用户(192.168.23.10:(none)): test  #使用test 用户登录
331 Please specify the password.
密码:                             #输入test 用户密码
230 Login successful.             #使用 普通用户 test 的账号登录成功
ftp>
ftp> pwd 
257 "/"              #普通用户的根目录是 它的 家目录
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
下载
公共
图片
文档
桌面
模板
视频
音乐
226 Directory send OK.     #这些是用户家目录里的文件
ftp: 收到 67 字节,用时 0.0016.75千字节/秒。

3.3 图形化登录

(1) 在地址栏 输入 ftp://ftp 服务器地址

(2) 输入 用户名 和 密码 (如果是匿名用户,点上匿名登录
(3) windows 和linux 之间可以直接拖拽上传

从windows 上 拖拽上传

[test@localhost ~]$ whoami
test
[test@localhost ~]$ pwd
/home/test
[test@localhost ~]$ ls
test.txt  公共  模板  视频  图片  文档  下载  音乐  桌面

四:设置白名单和黑名单
4.1 设置黑名单
配置 文件 /etc/vsftpd/usr_list ,向文件添加或删除 用户

[root@localhost ~]# vim /etc/vsftpd/user_list
test      #添加用户
 :wq
  
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
 userlist_enable=YES
 userlist_deny=YES  (默认是此设置)
 #设置黑名单,不允许 user_list 里的用户登录
:wq
 
 [root@localhost ~]# systemctl restart vsftpd   #重启服务

测试登录

C:\Users\Administrator\Desktop>ftp 192.168.23.10
连接到 192.168.23.10220 (vsFTPd 3.0.2)
200 Always in UTF8 mode.
用户(192.168.23.10:(none)): lisi 
331 Please specify the password.
密码:
230 Login successful.         #lisi 用户不在user_list 中,可以登录
ftp> quit
221 Goodbye.
 
C:\Users\Administrator\Desktop>ftp 192.168.23.10
连接到 192.168.23.10220 (vsFTPd 3.0.2)
200 Always in UTF8 mode.
用户(192.168.23.10:(none)): test
530 Permission denied.      #test 用户在user_list 中,不可以登录
登录失败。

4.2 设置白名单

[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf   
userlist_enable=YES
userlist_deny=NO        
 #将YES 改为 NO,即 设置白名单,仅允许user_list 中用户登录
 :wq
 [root@localhost ~]# systemctl restart vsftpd   #重启服务

测试服务

C:\Users\Administrator\Desktop>ftp 192.168.23.10
连接到 192.168.23.10220 (vsFTPd 3.0.2)
200 Always in UTF8 mode.
用户(192.168.23.10:(none)): lisi
530 Permission denied.
登录失败。               #用户lisi 不在白名单内,登录失败
ftp> quit
221 Goodbye.
 
C:\Users\Administrator\Desktop>ftp 192.168.23.10
连接到 192.168.23.10220 (vsFTPd 3.0.2)
200 Always in UTF8 mode.
用户(192.168.23.10:(none)): test
331 Please specify the password.
密码:
230 Login successful.      #用户test 在白名单内,登录成功
ftp>
FTP服务器配置 VSFTP配置文件路径:/etc/vsftpd/vsftpd.conf,重要参数: anonymous_enable=yes/no 是否允许匿名用户访问 anon_upload_enable=yes/no 是否允许匿名用户上传文件 anon_mkdir_write_enable=yes/no 是否允许匿名用户创建目录 anon_other_write_enable=yes/no 匿名用户和虚拟用户是否拥有删除权限 local_enable=yes/no 是否允许本地用户登陆 write_enable=yes/no 设置全局是否可写 anon_root=/var 指定匿名用户目录 chroot_local_user=yes 锁定所有用户到用户主目录 chroot_list_enable=yes/no 锁定列表中的用户到主目录,需要配合下一参数使用 chroot_list_file=/etc/vsftpd/chroot_list 指定存储被锁定用户的列表文件位置 chown_uploads=yes/no 匿名用户上传所有者指定功能,需要与下一参数配合使用 chown_username=用户名 指定匿名用户上传文件的所有者 max_clients=300 最大客户端连接数为300 anon_max_rate=30000 匿名用户和虚拟用户限速为30K/S local_max_rate=30000 本地用户限速为30K/S max_per_ip=10 每个IP最大连接数 listen_port=22 更改监听端口 实现如下要求:允许匿名用户登陆,匿名用户限速为60K/S,只允许下载。监听端口为22,最大连接数为10。新建用户ftp1,限速为200K/S,允许上传下载删除新建文件夹。进入目录/etc/vsftpd,用vi编辑器打开vsftpd.conf主配置文件: 直接添加以下选项: [root@LidadeFedora vsftpd]# service vsftpd restart 添加用户ftp1,设置登录脚本为 /sbin/nologin: vsftp默认目录为:/var/ftp,为方便测试,在/var/ftp下新建一个文件"testLocal",在"/var/ftp/pub"新建一个文件"testAnon"。 由于使用root用户新建文件,文件的所有者为root,所以需要把文件的权限设置为644其他用户才能读取该文件 设置/var/ftp/pub权限为777,表示所有用户均有读写权限. 由于端口22被ssh服务器占用,所以需要关闭ssh服务并重启vsftp服务。 客户端用Flashfxp测试:新建站点"VsftpTest",输入Vsftp服务器的IP地址,端口填22,用户名填ftp1,密码填你设置的密码,然后点击"连接"按钮: 由于没有使用选项:local_root,登陆本地用户时自动跳转到该用户的主目录.没有使用chroot_local_user=yes,所以本地用户可以浏览整个文件系统中他有权限读取的文件和文件夹: 切换到目录"/var/ftp/pub",该目录的权限为777,上传一个10M以上的文件,测试ftp1的上传速度: 新建文件夹和删除权限测试省略。下面测试匿名用户权限:勾选"匿名"选项并连接: 匿名用户登陆成功: 进入pub目录,尝试删除testAnon文件失败,说明这里是配置文件中的anon_other_write_enable=no生效了。最终权限等于配置文件中的权限和linux文件系统权限相或的结果。比如vsftp配置文件中允许匿名用户下载,但光这样是不够的,还需要被下载的文件或文件夹的能够被其他用户读取。 尝试上传文件失败,符合匿名用户只允许下载的要求: 最后测试匿名用户的下载速度: vsftp配置
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值