您的位置:首页 > 运维架构 > Linux

Linux环境下FTP服务器的部署

2016-03-20 15:22 621 查看
关于FTP的基础知识请参考博文:[http://blog.csdn.net/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= 被动模式的最大端口
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息