十、FTP服务器配置和管理

10.1、FTP服务简介

FTP是Internet上使用非常广泛的一种通信协议,用于在不同的主机之间进行文件传输。Linux系统下常用的FTP服务器软件包括有wu-ftpd;vsftpd(Very Secure ftp Daemon);proftpd;pureftpd等。客户端软件有


CLI:ftp;lftp;(wget ,lftpget)下载工具,非交互式

GUI: gftpd ;FlashFXP;Cuteftp;Filezilla

FTP采用C/S的工作模式,通过TCP协议建立客户端和服务器之间的连接。但与其他大多数的应用协议不同,FTP协议在客户端和服务器之间建立了两套通信链路,分别是控制链路和数据链路。其中,控制链路负责FTP会话过程中FTP命令的发送和接收,数据链路则负责数据的传输。FTP客户端与服务器之间的通信过程如下所示:


1、用户使用FTP协议的客户机程序,连接到远程的FTP服务器程序上

2、用户使用客户端程序进行FTP文件的上传或下载,FTP客户端程序通过控制链路向FTP发送相应的控制命令

3、服务器程序接收并执行用户所发出的命令

4、FTP服务器将执行结果返回到客户端

默认情况下,FTP服务器程序使用两个预分配端口号20和21,分别用于传输数据链路和控制链路。但是传输数据又可以分为主动模式与被动模式,其数据传输端口有所不同。

主动模式工作的原理:FTP客户端连接到FTP服务器的21端口,发送用户名和密码登录,登录成功后要list列表或者读取数据时,客户端随机开放一个端口(1024以上),发送PORT命令到FTP服务器 ,告诉服务器客户端采用主动模式并开放端口;FTP服务器收到PORT主动模式命令和端口号后,通过服务器的20端口和客户端开放的端口连接,发送数据,原理如下图:

被动模式工作原理:FTP客户端连接到FTP服务器的21端口,发送用户名和密码登录,登录成功后要list列表或者读取数据时,发送PASV命令到FTP服务器, 服务器在本地随机开放一个端口(1024以上 ),然后把开放的端口告诉客户端,客户端再连接到服务器开放的端口进行数据传输,原理如下图:

参考:https://my.oschina.net/binny/blog/17469

10.2、vsftpd服务器的安装与配置

vsftpd可以通过rpm包或者源码安装,通过rpm安装只需使用yum命令即可,这里介绍源码安装。其官方地址为http://vsftpd.beasts.org/,这里以3.0.2版本介绍vsftpd的安装与配置。

文件的组成:


/etc/vsftpd: 配置文件目录

/etc/rc.d/init.d/vsftpd: 服务脚本

/usr/sbin/vsftpd: 主程序

/var/ftp:数据文件目录(匿名用户访问目录)

/etc/pam.d/vsftpd: 认证文件 pam(Plugable Authentication Module)插件式认证模块

模块化库文件:/lib64/security/pam*.so

认证配置文件:/etc/pam.conf和/etc/pam.d/*

基本配置:/etc/vsftpd/vsftpd.conf

[[email protected] vsftpd-3.0.2]# useradd nobody              #默认配置需要使用的用户
[[email protected] vsftpd-3.0.2]# mkdir /usr/share/empty      #默认配置需要使用的目录
[[email protected] vsftpd-3.0.2]# mkdir /var/ftp              #匿名用户需要使用的目录
[[email protected] vsftpd-3.0.2]# useradd -d /var/ftp/ ftp
[[email protected] vsftpd-3.0.2]# chown root.root /var/ftp/
[[email protected] vsftpd-3.0.2]# chmod  og-w /var/ftp/

[[email protected] app]# tar xf vsftpd-3.0.2.tar.gz 
[[email protected] app]# cd vsftpd-3.0.2
[[email protected] vsftpd-3.0.2]# make && make install
[[email protected] vsftpd-3.0.2]# cp vsftpd.conf /etc/         #复制配置文件到
  • 启动和关闭vsftpd

vsftpd支持两种启动方式:xinetd和standalone。其中,xinetd是通过xinetd进程来启动和关闭vsftpd服务,这是vsftpd默认启动方式。standalone方式则是采用独立进程启动和关闭,与普通程序的启动方式一样。

xinetd方式:

采用这种方式时,vsftpd不能单独管理,当vsftpd需要重启时,也必须重启整个xinetd服务器。

standalone方式:

使用这种方式时,vsftpd服务将作为单独的进程来启动和关闭,配置standalone启动方式步骤为:

[[email protected] vsftpd-3.0.2]# vim /etc/xinetd.d/vsftpd   #将diabale选项改为yes
    service ftp
    {
            socket_type             = stream
            wait                    = no
            user                    = root
            server                  = /usr/local/sbin/vsftpd
    #       server_args             =
    #       log_on_success          += DURATION USERID
    #       log_on_failure          += USERID
            nice                    = 10
            disable                 = yes
    }
[[email protected] vsftpd-3.0.2]# vim /etc/vsftpd.conf             #指定standalone启动方式
    listen=YES
[[email protected] vsftpd-3.0.2]# chkconfig vsftpd --level 3 off   #关闭自启动服务
[[email protected] vsftpd-3.0.2]# /usr/local/sbin/vsftpd &         #启动
[1] 1926

登录ftp:

[[email protected] vsftpd-3.0.2]# ftp localhost       #登录本机
Trying ::1...
ftp: connect to address ::1Connection refused
Trying 127.0.0.1...
Connected to localhost (127.0.0.1).
220 (vsFTPd 3.0.2)
Name (localhost:root): anonymous                 #匿名用户登录
331 Please specify the password.
Password:                                        #输入密码,匿名用户可以无需密码
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (127,0,0,1,143,37).
150 Here comes the directory listing.
226 Directory send OK.
ftp> quit                                        #退出
221 Goodbye.
[[email protected] vsftpd-3.0.2]#
  • vsftpd.conf配置文件

vsftpd服务器的配置主要通过其主配置文件/etc/vsftpd.conf来完成。该文件以‘#‘作为注释,每个选项一行,格式为‘选项=值‘。

常用选项:


匿名用户的配置:

anonymous_enable=YES登陆权限

anon_upload_enable=YES上传权限

anon_other_write_enable=YES删除权限

anon_mkdir_write_enable=YES创建目录

启用写入功能时,ftp用户对相应的本地文件系统也有相应的写入权限;生效的权限取决于文件系统权限和服务权限的交集。

禁锢用户于其家目录中:

chroot_local_user={Yes|No}

chroot_list_enable={YES|NO}                只禁锢列表中的用户在家目录

chroot_list_file=/etc/vsftpd/chroot_list   禁锢用户列表

欢迎信息的定义:

ftp_banner=some string

或者banner_file=/path/to/some_banner_file(文件中写欢迎信息)

dirmessage_enable=yes(切换目录时,目录下的欢迎信息)

在ftp可访问的目录下创建.messages文件

控制登录用户的机制:

/etc/vsftpd/ftpusers中的用户都不允许使用ftp服务, 这是在/etc/pam.d/vsftpd中定义。

user_list配置文件有两种用法:

黑名单:

userlist_enable=YES

userlist_deny=YES

白名单:

userlist_enable=YES

userlist_deny=NO

连接限制:

max_clients: 最大并发连接数

max_per_ip: 每IP可同时发起并发请求

传输速率:

anon_max_rate: 匿名用户的最大传输速率,单位是“字节/秒”;

local_max_rate: 本地用户的最大传输速率,单位是“字节/秒”

上传文件的umask:

anno_umask: 匿名用户上传文件的umask;

local_umask: 本地用户上传文件的umask;

修改匿名用户上传文件的属主和属组:

chown_uploads=YES

chown_username=someuser

ftp的系统用户:

匿名用户 --> 系统用户: anonymous_enable

系统用户:local_enable

虚拟用户:所有的虚拟用户会映射会一个系统用户,访问时的文件目录是为此系统用户的家目录。

用户的存放位置:

hash编码的文件:奇数行为用户名,偶数行为密码

关系型数据库:pam-mysql实现认证

10.2、vsftpd基于pam-mysql的认证方式

1、安装mysql和pam_mysql

[[email protected] home]# yum -y install vsftpd mysql-server mysql-devel pam_mysql

2、准备数据库及相关表

mysql> create database vsftpd;
mysql> grant select on vsftpd.* to [email protected] identified by ‘mylinux‘;
mysql> grant select on vsftpd.* to [email protected] identified by ‘mylinux‘;
mysql> flush privileges;
mysql> use vsftpd;
mysql> create table users (
    -> id int AUTO_INCREMENT NOT NULL,
    -> name char(20) binary NOT NULL,
    -> password char(48) binary NOT NULL,
    -> primary key(id)
    -> );

3、添加测试的虚拟用户,为了安全起见应该使用PASSWORD函数加密后存储。

mysql> insert into users(name,password) values(‘tom‘,password(‘123456‘));
mysql> insert into users(name,password) values(‘jerry‘,password(‘123456‘));

4、建立pam认证所需文件#vi /etc/pam.d/vsftpd.mysql

auth required /lib/security/pam_mysql.so user=vsftpd passwd=mylinux host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
account required /lib/security/pam_mysql.so user=vsftpd passwd=mylinux host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2

pam_mysql.so基于unix sock连接mysql服务器时可能会出问题,此时,建议授权一个可远程连接的mysql并访问vsftpd数据库的用户。

5、修改vsftpd的配置文件,使其适应mysql认证,建立虚拟用户映射的系统用户及对应的目录

[[email protected]ost home]# useradd -s /sbin/nologin -d /var/ftproot vuser
[[email protected] home]# chmod go+rx /var/ftproot

确保/etc/vsftpd.conf中已经启用了以下选项

anonymous_enable=YES
local_enable=YES
write_enable=YES
anon_upload_enable=NO
anon_mkdir_write_enable=NO
chroot_local_user=YES

而后添加以下选项

guest_enable=YES
guest_username=vuser

并确保pam_service_name选项的值如下所示

pam_service_name=vsftpd.mysql

6、启动vsftpd服务

[[email protected] home]# service vsftpd start
Starting vsftpd for vsftpd: [  OK  ]
[[email protected] home]# chkconfig vsftpd on

7、配置虚拟用户具有不同的访问权限

配置vsftpd为虚拟用户使用配置文件目录

# vim vsftpd.conf

添加

user_config_dir=/etc/vsftpd/vusers_config

创建所需要目录,并为虚拟用户提供配置文件

# mkdir /etc/vsftpd/vusers_config/
# cd /etc/vsftpd/vusers_config/
# touch tom jerry

配置虚拟用户的访问权限,虚拟用户对vsftpd服务的访问权限是通过匿名用户的相关指令进行的。如果需要让tom用户具有上传文件的权限,可以修改/etc/vsftpd/vusers/tom文件,在里面添加如下选项即可。

anon_upload_enable={YES|NO}
anon_mkdir_write_enable={YES|NO}
anon_other_write_enable={YES|NO}
时间: 2024-10-14 09:04:37

十、FTP服务器配置和管理的相关文章

FTP服务器配置与管理(用户隔离)

FTP(文件传输协议)是互联网中的一项古老的协议,FTP服务器的功能与文件服务器类似,都可以允许客户端用户从服务器中下载或上传文件.FTP服务器采用客户端/服务器工作模式,客户端与服务器之间使用TCP协议进行连接. 用户隔离是Windows Server 2008 R2系统中FTP服务的一项重要功能.如果不隔离用户,那么所有用户在登录FTP站点之后,默认都将被导向到FTP站点的主目录,看到的都是相同的内容.通过隔离用户,可以让用户拥有其专属目录,此时用户登录FTP站点后,会被导向到此专属目录,而

FTP服务器配置和管理

一:ftp 简介 1:ftp服务: internet 是一个非常复杂额计算机环境,其中有pc/mac/小型机/大型机等.而在这些计算机上运行的操作系统也是五花八门,有 unix.Linux.微软的windowns.DOS,也有苹果机上运行的Mac OS.他么都采取了各自的技术规范,所以Internet发展的初期,要在这些系统之间进行文件传输是一件非常困难的事情.而FTP的设计就是为解决各种系统之间的文件交流问题. Ftp 为了所有使用的该服务进行文件传输的主机建立一个统一的协议.基于不同操作系统

linux基础-第十六单元 yum管理RPM包

第十六单元 yum管理RPM包 yum的功能 本地yum配置 光盘挂载和镜像挂载 本地yum配置 网络yum配置 网络yum配置 Yum命令的使用 使用yum安装软件 使用yum删除软件 安装组件 删除组件 清除缓存 查询 课后作业 [本节内容]1. yum的功能:yum是Yellow dog Updater, Modified的缩写,目的就是为了解决RPM的依赖关系的问题,方便使用者进行软件的安装.升级等等工作.2. 掌握光盘挂载和镜像挂载a) 光盘挂载mount /dev/sr0 挂载点或者

Web 服务器配置和管理

第3 篇  网络服务管理篇 第16 章  Web 服务器配置和管理 Web 服务是目前Internet 上最常见的服务之一,要搭建一个Web 服务器,首先要选择 一套合适的Web 程序.在本章中将会以强大的Apache 为例,介绍相关的安装.配置.维 护和高级功能等方面的知识,演示如何在Linux 操作系统下构建基于Apache 的Web 服 务器. 16.1  Web 服务器简介 万维网又称为Web(World Wide Web,www),是在Internet 上以超文本为基础形成 的信息网.

Objective-C(十六、内存管理,自动释放池,ARC,强指针,弱指针,方法族)——iOS开发基础

结合之前的学习笔记以及参考<Objective-C编程全解(第三版)>,对Objective-C知识点进行梳理总结.知识点一直在变,只是作为参考,以苹果官方文档为准~ 十六.内存管理相关知识(二) 1.autorelease,自动释放机制 - (instancetype)autorelease; (1)自动释放池的创建 iOS5.0之前 NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; //进行一系列操作 //此处不可以使用

《Windows服务器配置与管理》模块化教学任务工单(No.1)

<Windows服务器配置与管理>模块化教学任务工单(No.1) 专业班级 模块名称 Windows Server 2008安装与基本配置 指导教师 赵培琨 设备构成 计算机 人员构成 任务时间 1周 人员分工 分值情况 单人满分10 知识准备 (1)不同版本的Windows Server 2008的介绍 (2)Window server 2008的安装 (3)桌面.控制面板.网络连接的设置 (4)mmc的使用 注意事项: (1)该任务完成所需知识可参考<Windows服务器配置与管理&

十六、变更管理; 十七、信息系统安全管理; 十八、项目风险管理

十六.变更管理 1.  变更的工作程序 (1).提出与接受变更申请 (2).对变更的初审 (3).变更方案论证 (4).项目变更控制委员会审查 (5).发出变更通知并开始实施 (6).变更实施的监控 (7).变更效果的评估 (8).判断发生变更后的项目是否已纳入正常轨道 2.  变更初审的4条内容 (1).对变更提出方施加影响,确认变更的必要性,确保变更是有价值的 (2).格式校验,完整性较验,确保评估所需信息准备充分 (3).在干系人间就提出供评估的变更信息达成共识 (4).变更初审的常见方式

linux的web服务器配置与管理——创建用户个人主页

本实验用的是RedHat linux9.0,在虚拟机上进行操作,它已具有相当完善的可视化界面,这样用户会更加容易接受和理解. 首先呢就是虚拟机的相关配置,这个就不说了,当我们安装完系统后,打开终端,输入命令"rpm   -q   httpd",因为linux9.0已经安装了Apache服务,所以此时窗口会显示安装的版本信息,这就说明系统已成功安装Apache服务.接下来就是启动服务了,这里有几条命令如图所示: 第一条命令是查看服务的状态,开启还是关闭:第二条是启动Apache服务,然后

Oracle笔记(十四) 用户管理

Oracle笔记(十四) 用户管理 SQL语句分为三类:DML.DDL.DCL,之前已经讲解完了DML和DDL,现在就差DCL操作的,DCL主要表示的是数据库的控制语句,控制的就是操作权限,而在DCL之中,主要有两个语法:GRANT.REVOKE: 权限的操作基础是需要有用户的,而这个时候就需要通过一个新的用户进行演示,而要想创建新用户则首先必须是具备管理员权限的sys.system两个用户操作. 范例:创建一个dog用户,密码为wangwang CONN sys/change_on_insta