Linux环境下FTP服务器的部署

本文档详细介绍了如何在Linux环境下部署FTP服务器,包括安装vsftpd软件包,使用FTP登录、上传下载数据,配置文件如vsftpd.conf的解析,以及不同权限设置和实验操作,如仅允许本地用户登录、匿名用户权限管理等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于FTP的基础知识请参考博文:[http://blog.youkuaiyun.com/beginner_yao/article/details/50936255 ]

一. 装包

服务器端安装提供FTP服务的软件包:

[root@server ~] # yum -y install vsftpd

客户端安装FTP登陆工具:

[root@client ~] # yun -y install ftp

进程名: vsftp
在服务器端查看端口使用状态:

[root@server ~] # netstat -anptu | grep :21
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 1943/vsftpd

二. 使用FTP登录

客户端登陆FTP服务器:

[root@client ~] # ftp ftp.beginner.net.cn
Connected to ftp.beginner.net.cn (121.42.192.217).
220 (vsFTPd 3.0.2)
Name (beginner.net.cn:root): ftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

使用匿名用户登陆,用户名是“ftp”或者“anonymous“,密码不用输入,直接回车就可以进入。

三. 使用FTP下载和上传数据

登陆ftp成功之后,可以上传或者下载数据,格式为:
上传:

ftp> put file

批量上传:

ftp> mput file1 file2

注:file是在登陆前所在目录内的文件

下载:

ftp> get file

批量下载:

ftp> mget file1 file2

使用工具下载文件(不需要登陆):

[root@client ~] # wget ftp://ftp.beginner.net.cn/pub/filename

注:file是当前所在服务器的目录内的文件,下载到登陆前所在的目录

浏览及下载/上传:

匿名访问
ftp://ftp.beginner.net.cn
[root@client ~] # wget ftp://ftp.beginner.net.cn/path/to/file

用户验证访问
ftp://username:password@ftp.beginner.net.cn
[root@client ~] # wget ftp://username:password@ftp.beginner.net.cn/path/to/file

为了方便下载和上传,使用lcd可以切换在本地的工作目录。使用 !ls 可以查看本地当前目录下的文件

ftp> lcd /data
Local directory now /data
ftp> !ls
images linux-2.6.32.3.tar.gz lost+found repodata rpms software tars

四. 配置文件

主配置文件:/etc/vsftpd/vsftpd.conf
黑名单:/etc/vsftpd/ftpusers
黑白名单:/etc/vsftpd/user_list
黑名单,黑白名单内容格式:一行一个账户名称
注意:设置白名单后,仅明确在白名单内的人才可以访问FTP,其他人均无法访问FTP。

五. /etc/vsftpd/vsftpd.conf内容解析

更改配置文件后,需要重启服务或者重新加载配置文件后才生效
以anon开始的选项,都是对匿名账户设置的;以local开始的选项,都是对本地账户设置的

anonymous_enable=YES
//是否开启匿名共享
local_enable=YES
//是否开启本地账户共享

注意:两个都是YES的时候,匿名共享的优先级高,开启本地共享的时候,必须要把匿名共享给关闭

write_enable=YES
//本地账户共享是否可写(上传文件)
anon_upload_enable=YES
//匿名账户是否可写(上传文件)
anon_mkdir_write_enable=YES
//匿名账户是否可写(上传目录和创建目录)
anon_others_write_enable=YES
//匿名账户是否可以删除目录和文件和重命名(默认不存在,要自己添加)

注意:如果这三个选项都是YES,就是对匿名用户的最大权限的设置。

anon_root=/var/ftp
//定义的匿名的根目录,默认为/var/ftp(不建议更改)
local_root=/home/$USER
//定义本地账户的根目录,默认为本地账户的家目录(不建议更改)
chroot_local_user=YES
//禁锢所有的本地账户。

禁锢的作用:将用户禁锢在一个特定的目录下,无法出去。这时候,这个特定的目录,就是用户使用FTP登录的时候的根目录。没有禁锢的情况下,使用本地用户进行FTP访问,可以查看服务器的所有目录和文件。使用账户禁锢后,本地账户的FTP默认的共享路径为自己的家目录.

chroot_list_enable=YES
//是否启用禁锢账户列表
chroot_list_file=/etc/vsftpd/chroot_list
//禁锢账户列表

这两个要连着使用,如果启用了禁锢账户列表,则只有列表里的用户可以随意切换目录。默认是不启动的。禁锢账户列表文件需要自己创建,一行一个账户。

listen=YES
//是否监听端口,一定要开,如果不开的话就无法建立FTP连接

userlist_enable=YES
//是否使用user_list文件
userlist_deny=NO
//必须和上面的配合一起用,决定user_list文件是否是黑名单。 NO为白名单,YES为黑名单。默认为YES。在/etc/vsftpd/user_list文件内的开头注释里有说明。

FTP性能的限制(需要自己手打):

max_clients=number
//限制同时并发访问FTP服务器的客户端的数量
max_per_ip=number
//限制每个客户端的IP并发链接数量(同一个IP,同时使用多个工具访问FTP服务器的数量)。即多线程,可以增加传输速度,迅雷就是多线程。
anon_max_rate=number
//匿名的最大速度(字节bytes/秒)
local_max_rate=number
//本地用户的最大速度(字节bytes/秒)

提示:如果/etc/vsftpd/vsftpd.conf下没有的选项,可以从man vsftpd.conf来查看

[root@server ~] # man vsftpd.conf

六. 实验

1)仅仅允许本地用户登录FTP(如果使用本地账户访问,一定需要将账户禁锢!!做chroot)

[root@server ~] # vim /etc/vsftpd/vsftpd.conf

anonymous_enable=NO
local_enable=YES
chroot_local_user=YES

2)把用户加入黑名单

方法1:

[root@server ~] # echo username >> /etc/vsftpd/ftpusers

方法2:

[root@server ~] # echo username >> /etc/vsftpd/user_list
[root@server ~] # vim /etc/vsftpd/vsftpd.conf

userlist_enable=YES
userlist_deny=YES

注意:如果黑名单和白名单里有同一个用户,黑名单生效

3)不允许使用本地用户登录,只允许使用匿名账户登录,并让匿名用户只有上传权限。

[root@server ~] # vim /etc/vsftpd/vsftpd.conf

local_enable=NO
anon_upload_enable=YES

4)使匿名用户有权限管理自己的目录和文件

思路:如果要使匿名用户有管理权限,就要给目录的o+w权限,但是如果在/var/ftp 这个目录里给这个权限,就不安全。所以,在其子目录下赋予w权限。

[root@server ~] # chmod o+w /var/ftp/pub
不允许让根目录(/var/ftp)其他用户有w权限;
可以在其子目录下赋予w权限。这样匿名用户就可以管理自己的目录和文件了。

5)开放服务器端的文件给客户端下载

[root@server ~] # chmod o+r filename

[root@server ~] # chmod 644 filename
至少要给可读权限

7. 补充

默认就允许匿名用户下载文件
默认允许使用本地用户上传和下载文件
不能上传目录 但可以把目录打包上传下载

FTP的工作模式配置:
主动模式(默认):数据传输时,服务器去链接客户端(送货上门)。服务器的20端口去主动链接客户端的一个1024以上的端口来传输数据。
被动模式:数据传输时,服务器等待客户端来链接。客户端开启一个1024以上的端口,来链接服务器的一个1024以上的端口来传输数据。
1024以下的端口都分配给了特定的服务。

[root@server ~] # vim /etc/vsftpd/vsftpd.conf

port_enable=YES
//主动模式开启,默认是开启的,只有关闭了才可以打开被动模式,被动 模式也是默认开启的。
pasv_enable=YES
//被动模式开启,默认时开启的。
pasv_min_port= 被动模式的最小端口
pasv_max_port= 被动模式的最大端口

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值