1 / 57

第 13 章 FTP 服务器及其安装与配置

第 13 章 FTP 服务器及其安装与配置. 【 本章提要 】 vsFTP 服务器的安装和启动 FTP 客户端命令简介 用户管理文件 vsftpd.users 和 vsftpd.user_list 的内容 主要配置文件 sftpd.conf 解析

Download Presentation

第 13 章 FTP 服务器及其安装与配置

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第13章 FTP服务器及其安装与配置 • 【本章提要】 • vsFTP服务器的安装和启动 • FTP客户端命令简介 • 用户管理文件vsftpd.users和vsftpd.user_list的内容 • 主要配置文件sftpd.conf解析 • FTP(File Transfer Protocol,文件传输协议)服务器提供Internet文件传输服务。Linux中常用的有WU-FTP、ProFTP及vsFTP等。在RedHat Linux 9下自带的是vsFTP,它是一个小巧、高效、安全的FTP服务器软件,故本章将介绍vsFTP服务器的安装和配置。

  2. 13.1 vsFTP服务器的安装和启动 • 13.1.1 vsFTP简介 • vsFTP是一种基于GPL的在UNIX/Linux中非常安全且快速的FTP服务器,其中vs是“Very Secure”的缩写,具有安全、高速和稳定的性能。在速度方面,使用ASCII模式下载数据时,速度是WU-FTP的两倍,如果Linux使用的是2.4.x版本的内核,在千兆以太网上的下载速度可达86Mbps。在稳定性方面,在单机服务器上支持4000个以上的并发连接,最高可支持15000个并发连接。除此之外,vsFTP还具有如下特性:

  3. 13.1.1 vsFTP简介 • 支持基于IP的虚拟FTP服务器; • 支持虚拟用户; • 支持PAM或xinetd/tcp_wrappers的认证方式; • 支持两种运行方式:standalone和xinetd方式; • 支持每个虚拟用户的独立配置; • 支持带宽限制。 • vsFTP有两种运行模式,一种是独立(standalone)运行模式,另外一种是xinetd(eXtended Internet Services Daemon,即:扩展的Internet服务守护进程)模式。两种模式运行机制是不同的,独立运行模式适合专业的FTP服务器,且FTP总是一直有人访问,占用资源比较大,如果FTP服务器总是有人访问和登入建议采用这种模式。如果FTP服务器访问人数比较少,建议您用xinetd模式。xinetd模式的运行方式一直监听端口,当客户端(Client)有FTP连接请求时,首先会将连接传至xinetd,xinetd再将此要求传至vsftpd,启动相应的vsftp服务进程(即:vsftpd)。以下的内容主要是介绍独立模式下的vsftpd启动和配置方式。目前vsFTP已经被许多大型站点所采用,如www.redhat.com等。首先介绍如何安装和启动vsftp服务器。

  4. 13.1.2 vsFTP服务器的安装和启动 • 1.vsFTP服务器的安装 • 在RedHat Linux 9中带的vsFTP服务器版本为vsftpd-1.1.3-8,在安装之前可用如下命令检查是否已安装vsftpd: • [root@jsjwl root]#rpm –qa vsftpd • Vsftpd-1.1.3-8 • 若是在安装Linux时没有选择安装vsFTP服务器,可以从第三张安装盘中/RedHat/RPMS目录下找出名为vsftpdd-1.1.3-8.i386.rpm的文件,然后输入以下指令,系统即将自动完成vsFTP服务器的安装: • [root@jsjwl root]#rpm –ivh vsftpd-1.1.3-8.i386.rpm

  5. 13.1.2 vsFTP服务器的安装和启动 • 2. vsFTP服务器的启动 • 安装完成后,系统将会生成一个名为vsftpd的服务。要启动vsftpd,最简单的方式如下: • [root@jsjwl root]# /etc/rc.d/init.d/vsftpd start • starting vsftpd for vsftpd:[ ok ] • 也可以使用命令: • [root@jsjwl root]#service vsftpd start • 来启动vsftpd。 • 如果想在图形界面下启动vsFTP服务器,可以选择“主菜单”/“系统设置”/“服务器设置”/“服务”选项,在打开“服务状态设置”画面后,选中“vsftpd”项目,然后单击工具栏中的“开始”按钮即可启动vsftpd服务器,如图13-1所示。或者选择“文件”菜单的“保存改变”菜单项成,这样当下次系统启动时即可自动启动vsFTP服务器。

  6. 13.1.2 vsFTP服务器的安装和启动 图13-1 “服务状态设置”设置画面

  7. 13.1.2 vsFTP服务器的安装和启动 • 3.测试vsftpd是否已经启动 • 可用telnet检验vsftpd是否已经启动: • [root@jsjwl root]# telnet 127.0.0.1 21 • Trying 127.0.0.1... • Connected to 127.0.0.1. • Escape character is '^]'. • 220 (vsFTPd 1.1.3) • 从上面的内容可以看出能telnet到本机的vsftp服务器的21号端口,确认vsftpd已经被启动,按“Ctrl+]”中断会话 • ^] • 再按“q”退出telnet • telnet> q • Connection closed. • [root@jsjwl root]#

  8. 13.1.2 vsFTP服务器的安装和启动 • 4.测试ftp的运行 • 默认情况下,安装好vsftp服务器后就可以使用匿名用户anonymous(或ftp)下载文件了,我们来看一个例子。 • 【例13-1】使用匿名用户下载文件。 • 操作步骤如下: • 1) 生成一个用于测试的文件welcome.txt。 • 默认情况下,匿名用户下载目录/var/ftp/pub下没有任何内容,为了进行测试,可以先生成一个测试文件welcome.txt。 • [root@jsjwl root]#echo “Welcome to my vsFTP Server” >/var/ftp/pub/welcome.txt • 2) 使用匿名用户(ftp或anonymous)登录ftp: • [root@jsjwl root]#ftp 127.0.0.1 • Connected to 127.0.0.1 (127.0.0.1). • 220 (vsFTPd 1.1.3) • Name (127.0.0.1:root): anonymous

  9. 13.1.2 vsFTP服务器的安装和启动 • 331 Please specify the password. • Password:123@abc.com //输入Email地址或任意字符串作为anonymous匿名账号的口令 • 230 Login successful. Have fun. • Remote system type is UNIX. • Using binary mode to transfer files. • 3) 列表显示匿名FTP服务器目录并进入pub目录。 • ftp> ls • 227 Entering Passive Mode (127,0,0,1,126,111) • 150 Here comes the directory listing. • drwxr-xr-x 2 0 0 4096 Oct 03 19:09 pub • 226 Directory send OK. • ftp> cd pub • 250 Directory successfully changed.

  10. 13.1.2 vsFTP服务器的安装和启动 • 4) 显示/var/ftp/pub目录下的内容并下载welcome.txt文件。 • ftp> ls • 227 Entering Passive Mode (127,0,0,1,44,205) • 150 Here comes the directory listing. • -r-xr-xr-x 1 0131Oct 03 19:09 welcome.txt • 226 Directory send OK. • ftp> get welcome.txt • 227 Entering Passive Mode (127,0,0,1,99,247) • 150 Opening BINARY mode data connection for welcome.txt (31bytes). • 226 File send OK. • 31 bytes received in 0.000188 secs (1.6e+02 Kbytes/sec) • ftp> !ls • anaconda-ks.cfg install.log install.log.syslog welcome.txt • 通过显示本地文件命令“!ls”确认已经将文件welcome.txt下载到本地

  11. 13.1.2 vsFTP服务器的安装和启动 • 5) 测试是否能上传文件到/var/ftp/pub目录。 • ftp> put install.log • local: install.log remote: install.log • 227 Entering Passive Mode(127,0,0,1,233,16) • 550 Permission Denied. • 从上面信息可以看出上传文件失败 • 6) 退出FTP • ftp> bye • 221 Goodbye. • 从以上测试情况可以看出,默认情况下匿名用户可以下载,但不能上传文件,也不能离开匿名服务器用户/var/ftp。 • 注:默认情况下,系统本地用户可以用系统用户名和密码登录到vsFTP服务器,可以下载、上传文件,也可以离开用户主目录切换到其它有访问权限的目录并上传/下载文件。

  12. 13.1.3 FTP客户端命令简介 • 要登录到vsFTP服务器,在Windows系统中可以使用图形化的FTP客户端软件,如CuteFTP和LeapFTP等,也可以直接在命令行状态下使用FTP命令。FTP命令在例13-1已使用过。 • 1.FTP命令的格式 • FTP(机器名、网址或IP地址) • 若连接成功,系统提示输入用户名(Name)及密码(Password)。进入FTP站点后,用户就可以使用相应的命令进行各种操作了。

  13. 13.1.3 FTP客户端命令简介 • 2.常用的FTP命令 • ①Help或? • help或“?”:显示FTP服务器的命令说明,若不加参数则显示所有可用的命令,如:help put,?put等。 • ②Ascii、binary、type • ascii:切换传输模式为ascii文字模式; • binary:切换传输模式为二进制模式; • type:可更改或显示目前传输模式,参数可以是A、E、I、L只有TYPE A和TYPE I常用。 • ③bye、quit • bye:表示退出ftp服务器; • quit:退出登录并终止连接。

  14. 13.1.3 FTP客户端命令简介 • ①Cd、lcd、pwd、! • cd:改变当前工作目录; • lcd:可更改或显示本地的工作目录; • pwd:显示目前ftp服务器的工作目录; • !<命令>:可执行shell命令,如:“!ls”。 • ②Dele、rename • dele:删除FTP服务器的文件; • rename:更改FTP服务器的文件名。 • ③Get、mget、put、mput、recv、send • Get:下载文件,如:get welcome.txt • Mget:批量下载文件; • Put:上传文件; • Mput:批量上传文件; • Recv:下载文件,相当于get; • Send:上传文件,相当于put。

  15. 13.1.3 FTP客户端命令简介 • ①Ls、dir、mkdir、rmdir • Ls:显示文件,类似于Linux下的ls命令; • Dir:相当于:“ls –l”; • Mkdir:创建目录; • Rmdir:删除目录。 • ②Open、close、disconnect、user • Open:连接某个远程FTP服务器; • Close:关闭目前的连接; • Disconnect:相当于close; • User:再一次输入用户名和口令登录ftp服务器。

  16. 13.1.3 FTP客户端命令简介 • ①verbose、status、bell • verbose:切换所有文件传输过程的显示; • status:显示目前的一些参数; • bell:当指令执行完成时会发出喇叭声。 • 当执行不同FTP命令的时候,FTP服务器会返回一组数字,每个数字代表的含义不同,常见的数字及其表示的信息如表13-1所示。 • 表13-1 FTP命令的返回值代码及其含义

  17. 13.1.3 FTP客户端命令简介

  18. 13.2 【实验13.1】vsFTP服务器的配置 • 安装好vsFTPD后,会在/etc目录下生成vsftpd.ftpusers和vsftpd.user_list文件,同时会在目录/etc/vsftpd目录下生成vsftpd.conf文件。 • 13.2.1用户管理文件vsftpd.users • /etc/vsftpd.users是vsFTP服务器中用来管理帐号的配置文件。但需要注意的是:本文件中列出的用户名是指不允许登录vsFTP服务器的用户,默认的文件内容如下: • [root@jsjwl etc]#cat vsftpd.ftpusers • #Users that are not allowed to login via ftp • Root • Bin • Daemon • Adm • Lp

  19. 13.2.1用户管理文件vsftpd.users • Sync • Shutdown • Halt • Mail • News • Uucp • Operator • Games • Nobody • 从上面例子可以看出,默认情况下,root帐号是不允许登录vsFTP服务器的。如希望让root登录,只需修改此文件,在“root”前加“#”注释掉即可。但从安全角度考虑,建议用户不要使用root登录FTP。对于此文件中的其它帐号,均为系统帐号,建议不要做任何修改。

  20. 13.2.1用户管理文件vsftpd.users • 还有另一个用户管理配置文件是vsftpd.user_list,以下是此文件的默认内容: • [root@jsjwl etc]#cat vsftpd.user_list • #vsftpd.user_list • #If userlist_deny=NO,only allow users in this file • #IF userlist_deny=YES(default), never allow users in this file,and • #do not even prompt for a password. • #Note that the default vsftpd pam config also checks /etc/vsftpd.ftpusers • #for users that are denied. • Root • Bin • Daemon • Adm

  21. 13.2.1用户管理文件vsftpd.users • Lp • Sync • Shutdown • Halt • Mail • News • Uucp • Operator • Games • Nobody • 此文件中指定的用户默认情况(即在/etc/vsftpd/vsftpd.conf中设定了userlist_deny=YES)下也不能访问FTP服务器,而如果在vsftpd.conf中设定了userlist_deny=NO,则仅仅允许此文件中指定的用户访问FTP服务器。此方面的例子我们将在后面介绍。

  22. 13.2.2主要配置文件vsftpd.conf • /etc/vsftpd/vsftpd.conf是vsftp服务器的主要配置文件,建议读者认真理解里面的内容,以使vsFTP服务器发挥最大的效能。此文件的设置格式如下: • 参数=设置值若是以“#”开头的行表示注释文字,会被服务器所忽略。下面将分类解释各参数的含义: • 1.用户选项 • vsFTPD的用户分为三类:匿名用户、本地用户(local user)以及虚拟用户(guest)。 • (1)匿名用户 • 匿名用户一般指anonymous或ftp以下这些参数主要是针对匿名用户的设置。 • anonymous_enable=YES|NO • 设置是否允许匿名用户进行登录,YES表示允许,NO表示不允许,系统默认值为YES。 • ftp_username=此选项用来指定匿名用户登录登录系统时所使用的用户名。默认情况下,此参数在配置文件中不出现,值为ftp。

  23. 13.2.2主要配置文件vsftpd.conf • no_anon_password=YES|NO • 若值为YES,表示匿名用户登录时,vsFTP服务器不会要求用户输入密码。默认值为NO。 • deny_email_enable=YES|NO • 此参数默认值为NO。当值为YES时,拒绝使用banned_email_file参数指定文件中所列出的e-mail地址进行登录的匿名用户。也就是说,当匿名用户使用banned_email_file文件中所列出的e-mail进行登录时,被拒绝。当此参数生效时,需追加banned_email_file参数 • banned_email_file=/etc/vsftpd.banned_emails • 指定包含被拒绝的e-mail地址清单的文件,默认文件为/etc/vsftpd.banned_emails。 • anon_root= • 此选项比较重要。设定匿名用户登录的根目录,即匿名用户登录后,被定位到此目录下。主配置文件中默认无此项,默认值为/var/ftp/。

  24. 13.2.2主要配置文件vsftpd.conf • anon_world_readable_only=YES|NO • 设置匿名用户是否仅仅可以下载可阅读(Readable)文档。若值为YES,只允许匿名用户下载可阅读的文件。若值为NO,允许匿名用户浏览整个服务器的文件系统。默认值为YES。 • anon_upload_enable=YES|NO • 设置是否允许匿名用户上传文件,YES表示允许,NO表示不允许,默认是不设此值,即为NO。除了这个参数外,匿名用户要能上传文件,还需要两个条件:write_enable参数为YES;在文件系统上,FTP匿名用户在上传目录必须拥有写入的权限。 • anon_mkdir_write_enable=YES|NO • 设置是否允许匿名用户创建新目录,YES表示允许,NO表示不允许,默认是不设此值,即为NO。启用前必须将write_enable参数设为YES,同时在文件系统上,匿名用户必需对新建目录的上层目录拥有写权限。 • anon_other_write_enable=YES|NO

  25. 13.2.2主要配置文件vsftpd.conf • 设置匿名用户是否拥有除了上传和建立子目录之外的其他权限,如删除、文件更名等。YES表示拥有,通常此选项不建议使用,默认也不启用此选项。 • chown_uploads=YES|NO • 是否修改匿名用户所上传文件的所有权。若值为YES,匿名用户所上传的文件的所有权将改为另外一个不同的用户所有,用户由chown_username参数指定。此选项默认值为NO。 • chown_username= • 指定拥有匿名用户上传文件的所有权的用户,可以是任何用户。此参数需与chown_uploads同时启用。不推荐使用root用户。 • (1)本地用户 • 在使用FTP服务的用户中,除了匿名用户外,还有一类在FTP服务器所属主机上拥有账号的用户。vsFTP中称此类用户为本地用户(local users),等同于其他FTP服务器中的real用户。 • local_enable=YES|NO

  26. 13.2.2主要配置文件vsftpd.conf • 控制vsftpd所在的系统的本地用户是否可以登录vsftpd。默认值为YES。允许登录的帐号必须存在/etc/passwd文件中。默认不启用此选项。 • local_root= • 定义所有本地用户的根目录。当本地用户登录时,将被切换换到此目录下。默认值为无。 • user_config_dir= • 定义用户个人配置文件所在的目录。用户的个人配置文件为该目录下的同名文件。个人配置文件的格式与vsftpd.conf格式相同。例如定义user_config_dir=/etc/vsftpd/userconf,并且主机上有用户user1、user2,那我们可以在user_config_dir的目录新增名为user1、user2的两个文件。当用户user1登录时,vsFTPD则会读取user_config_dir下user1这个文件中的设定值,应用于用户user1。默认值为无。

  27. 13.2.2主要配置文件vsftpd.conf • (1)虚拟用户 • guest_enable=YES|NO • 若是启动这项功能,所有的不以匿名登录的用户,都视为“guest”类型,而此类用户的实际权限就是“guest_username”选项中所指定的帐号。默认不启用此选项。 • guest_username= • 定义vsFTPD的guest用户登录时在系统中的帐号名称,默认值为ftp。

  28. 13.2.2主要配置文件vsftpd.conf • 2. 连接选项 • 本部分主要是一些与建立FTP链接相关的选项。 • (1)监听地址与控制端口 • listen_address=ip address • 此参数在vsFTPD使用单独(standalone)模式下有效。此参数定义了在主机的哪个IP地址上监听FTP请求,即在哪个IP地址上提供FTP服务。对于只有一个IP地址的主机,不需要使用此参数。对于多址主机,不设置此参数,则监听所有IP地址。默认值为无。 • listen_port=port_value • 指定FTP服务器监听的端口号,默认值为21。此选项在standalone模式下生效。

  29. 13.2.2主要配置文件vsftpd.conf • (2)FTP模式与数据端口 • FTP 分为两类,PORT FTP和PASV FTP,PORT FTP是一般形式的FTP。这两种FTP在建立控制连接时操作是一样的,都是由客户端首先和FTP服务器的控制端口(默认值为21)建立控制链接,并通过此链接进行传输操作指令。它们的区别在于使用数据传输端口(ftp-data)的方式。PORT FTP由FTP服务器指定数据传输所使用的端口,默认值为20。PASV FTP由FTP客户端决定数据传输的端口。PASV FTP这种做法,主要是考虑到存在防火墙的环境下,由客户端与服务器进行沟通(客户端向服务器发出数据传输请求中包含了数据传输端口),决定两者之间的数据传输端口更为方便一些。 • port_enable=YES|NO • 若启用此选项(YES),表示允许使用PORT的方法来进行数据传输。默认值为YES。 • Connect_from_port_20=YES|NO • 控制以PORT模式进行数据传输时是否使用20端口(ftp-data)。YES使用,NO不使用。默认值为NO。

  30. 13.2.2主要配置文件vsftpd.conf • ftp_data_port=port number • 设定ftp数据传输端口(ftp-data)值。默认值为20。此参数用于PORT 连接类型。 • port_promiscuous=YES|NO • 默认值为NO。为YES时,取消PORT安全检查。该检查确保外出的数据只能连接到客户端上。小心打开此选项。 • pasv_enable=YES|NO • 若为YES,则允许数据传输时使用PASV模式。若为NO,表示不允许使用PASV模式。默认值为YES。 • pasv_min_port=port number • pasv_max_port=port number • 设定在PASV模式下,建立数据传输所可以使用port范围的下界和上界,0 表示任意。默认值为0。把端口范围设在比较高的一段范围内,比如50000-60000,将有助于安全性的提高。

  31. 13.2.2主要配置文件vsftpd.conf • pasv_promiscuous=YES|NO • 若选用此选项(YES),将关闭PASV模式的安全检查。该检查确保数据连接和控制连接是来自同一个IP地址。小心打开此选项。该选项合理的用法是存在于由安全隧道方案构成的机构中。默认值为NO。 • pasv_address= • 此选项为一个数字IP地址,作为PASV命令的响应。默认值为none,即地址是从呼入的连接套接字(incoming connectd socket)中获取。 • (3)ASCII模式 • 默认情况下,vsFTPD是禁止使用ASCII传输模式。即使FTP客户端使用asc命令,指明要使用ASCII模式,但是,vsFTPD表面上接受了asc命令,而在实际传输文件时,还是使用二进制方式。下面选项控制vsFTPD是否使用ASCII传输模式。

  32. 13.2.2主要配置文件vsftpd.conf • ascii_upload_enable=YES|NO • 控制是否允许使用ASCII模式上传文件,YES允许,NO不允许,默认不启用此选项。 • ascii_download_enable=YES|NO • 控制是否允许使用ASCII模式下载文件,YES允许,NO不允许,默认不启用此选项。 • 3. 性能与负载控制 • (1)超时选项 • idle_session_timeout= • 空闲用户会话的超时时间,若是超出这时间没有数据的传送或是指令的输入,则会强迫断线。单位为秒,默认值为300。 • data_connection_timeout= • 表示建立数据联机的最长逾期时间,单位为秒,默认值为300 秒。 • accept_timeout=numerical value • 表示远程用户和vsFTP服务器建立连接的逾期时间,此处的连接是以PASV类型为主,单位为秒。默认值为60。

  33. 13.2.2主要配置文件vsftpd.conf • connect_timeout=numerical value • 响应PORT方式的数据联机的超时设定,单位为秒。默认值为60。以上两个选项针对客户端的,将使客户端空闲1分钟后自动中断连接,并在中断1分钟后自动激活连接。 • (1)负载控制 • max_clients=numerical value • 此参数在vsFTPD使用单独(standalone)模式下有效。此参数定义了FTP服务器最大的并发连接数,当超过此连接数时,服务器拒绝客户端连接。默认值为0,表示不限最大连接数。 • max_per_ip=numerical value • 此参数在vsFTPD使用单独(standalone)模式下有效。此参数定义每个IP地址最大的并发连接数目。超过这个数目将会拒绝连接。默认值为0,表示不限制最大连接数。

  34. 13.2.2主要配置文件vsftpd.conf • local_max_rate=value • 设定系统本地用户允许的最大数据传输速率,以Bytes/s为单位。默认为0。此选项对所有的用户都生效。此外,也可以在用户个人配置文件中使用此选项,以指定特定用户可获得的最大数据传输速率。 • 【例13-2】为特定用户设置传输速率。 • 操作步骤如下: • 1)在/etc/vsftpd/vsftpd.conf中指定用户个人配置文件所在的目录,如:user_config_dir=/etc/vsftpd/userconf • 2)生成/etc/vsftpd/userconf目录。[root@jsjwl root]mkdir /etc/vsftpd/userconf • 3)用户个人配置文件是在该目录下,生成与特定用户同名的文件,如:[root@jsjwl root]touch /etc/vsftpd/userconf/user1 • 4)在用户user1的个人配置文件中设置local_max_rate参数,如:local_max_rate=80000 (即为80KB/s) • 以上步骤设定FTP用户user1的最大数据传输速度为50KBytes/s。

  35. 13.2.2主要配置文件vsftpd.conf • vsFTPD 对于速度控制的变化范围大概在80%到120%之间。比如我们限制最高速度为100KBytes/s,但实际的速度可能在80KBytes/s 到120KBytes/s 之间。当然,若是线路带宽不足时,速率自然会低于此限制。 • 4.安全措施 • (1) 用户登录控制 • pam_service_name=vsftpd • 指出vsFTPD进行PAM认证时所使用的PAM配置文件名,默认值是vsftpd,默认PAM配置文件是/etc/pam.d/vsftpd。 • /etc/vsftpd.ftpusers • vsFTPD禁止列在此文件中的用户登录FTP服务器。这个机制是在/etc/pam.d/vsftpd中默认设置的。 • userlist_enable=YES|NO

  36. 13.2.2主要配置文件vsftpd.conf • 若是启用此功能,vsFTPD将读取/etc/userlist_file参数所指定的文件中的用户列表。当列表中的用户登录FTP服务器时,该用户在提示输入密码之前就被禁止了。即该用户名输入后,vsFTPD查到该用户名在列表,vsFTPD就直接禁止该用户登录,不会再进行询问密码等后续步聚,这可避免明文(Clear Text)在网络上传输。默认值为NO。 • userlist_file=/etc/vsftpd.user_list • 指出userlist_enable选项生效后,被读取的包含用户列表的文件。默认值是/etc/vsftpd.user_list。

  37. 13.2.2主要配置文件vsftpd.conf • userlist_deny=YES|NO • 此选项在userlist_enable 选项启动后才生效。决定禁止还是只允许由/etc/userlist_file指定文件中的用户登录FTP服务器。YES,默认值,禁止文件中的用户登录,同时也不向这些用户发出输入口令的提示。若设为停用(即为NO),则只允许在文件中的用户登录FTP服务器。 • tcp_wrappers=YES|NO • 若值为YES,将在vsFTPD中使用TCP_wrappers远程访问控制机制,因此可利用/etc/hosts.allow与/etc/hosts.deny文件来定义可联机或是拒绝的来源地址。但默认不启用此选项。 • (2) 目录访问控制 • chroot_list_enable=YES|NO • 若启用此选项(YES),则列于chroot_list_file文件中的帐号,将锁定在用户主目录中。即当这些用户登录后,不可以转到系统的其他目录,只能在用户主目录(及其子目录)下。而其它用户即可以。默认值为NO。

  38. 13.2.2主要配置文件vsftpd.conf • chroot_list_file=/etc/vsftpd/chroot_list • 指出被锁定在用户主目录中的用户的列表文件。文件格式为每个用户占一行。通常该文件是/etc/vsftpd/chroot_list。默认不设置此选项。 • chroot_local_users=YES|NO • 将本地用户锁定在自家目录中。当此项被激活时,chroot_list_enable和chroot_local_users参数的作用将发生变化,chroot_list_file所指定文件中的用户将不被锁定在用户主目录中。本参数被激活后,可能带来安全上的冲突,特别是当用户拥有上传、shell访问等权限时。因此,只有在确实了解的情况下,才可以打开此参数。默认值为NO。 • passwd_chroot_enable • 当此选项激活时,与chroot_local_user选项配合,chroot( )容器的位置可以在每个用户的基础上指定。每个用户的容器来源于/etc/passwd中每个用户的用户主目录字段。默认值为NO。

  39. 13.2.2主要配置文件vsftpd.conf • (3) 文件操作控制 • hide_ids=YES|NO • 是否隐藏文件的所有者和组信息。若为YES,当用户使用“ls –al”之类的指令时,在目录列表中所有文件的拥有者和群组信息都显示为“ftp”。默认值为NO。 • ls_recurse_enable=YES|NO • 若启用此选项(YES),表示允许使用"ls -R" 指令。这个选项有一个小的安全风险,因为在一个大型FTP站点的根目录下使用"ls -R"会消耗大量系统资源。默认值为NO。 • write_enable=YES|NO • 控制是否允许使用任何可以修改文件系统的FTP 指令,比如STOR、DELE、RNFR、RNTO、MKD、RMD、APPE 以及SITE。默认不启用此选项(值为NO)。 • secure_chroot_dir= • 这选项指向一个空目录,并且ftp用户对此目录无写权限。当vsftpd不需要访问文件系统时,这个目录将被作为一个安全的容器,用户将被限制在此目录中。默认目录为/usr/share/empty。

  40. 13.2.2主要配置文件vsftpd.conf • (4) 新增文件权限设定 • anon_umask= • 匿名用户新增文件的umask 数值。默认值为077。这表示匿名用户新增的文件权限最大为700(777-077=700)。 • file_open_mode= • 表示上传文件的权限,与chmod命令所使用的数值相同。如果希望上传的文件可以执行,设此值为0777。默认值为0666。 • local_umask= • 本地用户新增文件的umask 数值。默认值为077(其他大多数的FTP服务器都是使用022。您也可以修改为022)。

  41. 13.2.2主要配置文件vsftpd.conf • 5.提示信息 • ftpd_banner=login banner string • 此参数定义了登录欢迎语字符串。用户可以自行修改。预设值为无。当ftpd_banner设置后,将取代系统原来默认的欢迎词。 • banner_file=/directory/vsftpd_banner_file • 此项指定一个文本文件,当使用者登录时,会显示此该文件的内容,通常为欢迎话语或是说明。默认值为无。与ftpd_banner相比,banner_file是文本文件的形式,而ftpd_banner是字串格式。banner_file选项将取代ftpd_banner选项。 • dirmessage_enable=YES|MO • 控制是否启用目录提示信息功能。YES启用,NO不启用,默认值为YES。此功能启用后,当用户进入某一个目录时,会检查该目录下是否有message_file选项所指定的文档,若是有,则会出现此文档的内容,通常这个档案会放置欢迎话语,或是对该目录的说明。 • message_file= • 此选项可以定义一个文件名称,仅在dirmessage_enable选项激活时生效。默认值为.message。

  42. 13.2.2主要配置文件vsftpd.conf • 6.日志设置 • xferlog_enable=YES|NO • 若启用此选项,所有上传与下载的信息将被完整记录在/var/log/vsftpd.log所定义的文件中,此文件也可以通过xferlog_file选项更改。默认启用此选项。 • xferlog_file= • 这个选项设定记录传输日志的文件名。默认值为/var/log/vsftpd.log。 • xferlog_std_format=YES|NO • 控制日志文件是否使用xferlog的标准格式,如同wu-ftpd所使用的一样。默认值为NO。 • log_ftp_protocol=YES|NO • 当此选项激活后,所有的FTP请求和响应都被记录到日志中。提供此选项时,xferlog_std_format不能被激活。这个选项有助于调试。默认值为NO。

  43. 13.2.2主要配置文件vsftpd.conf • 7.其他设置 • setproctitle_enable=YES|NO • 若选用此选项(YES),则vsFTPD会在系统处理的清单中,显示会话过程的状态信息,但基于安全考虑,不建议启用此功能,默认也不启用此选项(NO)。 • text_userdb_names=YES|NO • 当使用者登录后使用“ls –al”之类的指令时,目录列表的用户和组信息域,默认是出现拥有者的UID,而不是该文件拥有者的名称。相反地,若是希望出现拥有者的名称,则将此功能开启。默认值为NO。 • user_localtime=YES|NO • 若启用此选项(为YES),vsFTPD显示目录列表时使用你本地时区的时间。默认是显示GMT时间。同样,由ftp命令“MDTM”返回的时间值也受此选项影响。默认不启用该功能。 • check_shell=YES|NO

  44. 13.2.2主要配置文件vsftpd.conf • 此选项仅对不使用PAM方式的vsFTPD生效。当此选项关闭后,当本地用户登录时,vsFTPD不会检查/etc/shells文件以寻找一个有效的用户shell。默认为YES。 • nopriv_user= • 此选项可以指定vsftp执行时,所使用的最低权限的用户名称。默认值为nobody。 • pam_service_name= • 指明vsFTPD使用PAM验证服务时的PAM配置文件名。默认值为ftp

  45. 13.2.3 【实验13.2】vsFTP服务器的使用举例 • 以上介绍了vsFTPD服务器的详细配置选项,下面我们将通过一些实例来介绍不同情况下vsFTP服务器的配置。 • 【例13-3】配置匿名用户,使之可以上传/下载文件。 • 操作步骤如下: • 1)在/var/ftp/创建一个上传目录,并修改权限。 • [root@jsjwl root]cd /var/ftp //首先进入/var/ftp目录。 • [root@jsjwl ftp]# mkdir /var/ftp/incoming //创建incoming目录。 • [root@jsjwl ftp]#chmod 777 /var/ftp/incoming //更改incoming目录的权限为777。

  46. 13.2.3 【实验13.2】vsFTP服务器的使用举例 • 1)编辑/etc/vsftpd/vsftpd.conf文件 • [root@jsjwl root]vi /etc/vsftpd/vsftpd.conf • 确保anonymous_enabled=YES有效。 • 找到“# anon_upload_enable=YES”行,去掉前面的注释符号“#”,并在下面添加如下行: • chown_uploads=YES • anon_umask=077 • anon_mkdir_write_enable=YES • anon_world_readable_only=NO • 2)存盘退出。 • 通过前面的配置后,匿名用户ftp(或anonymous)既可下载文件,又可上传文件到incoming目录,也能在incoming目录下创建新的目录。

  47. 13.2.3 【实验13.2】vsFTP服务器的使用举例 • 【例13-4】配置vsFTPD,使本地用户user1具有上传/下载、user2只具有下载功能,其中user1和user2同属于students组。 • 操作步骤如下: • 1)创建用户组students和FTP的主目录 • [root@jsjwl root]groupadd students • [root@jsjwl root]mkdir /var/ftproot • [root@jsjwl root]useradd -G students –d /var/ftproot –M user1 • 注:-G:用户所在的组; • -d:表示创建用户主目录的位置; • -M:不建立默认的用户主目录,也即在/home下不创建用户主目录。 • [root@jsjwl root]useradd –G students –d /var/ftproot –M user2

  48. 13.2.3 【实验13.2】vsFTP服务器的使用举例 • 1).改变目录的属主和权限 • [root@jsjwl root]chown user1.students /var/ftproot //把/var/students的属主定为user1。 • [root@jsjwl root]chmod 750 /var/students • 即自己具有所有权限,同组成员只具有读和执行权限,而其他人不具有任何权限。 • 2)修改配置文件/etc/vsftpd/vsftpd.conf • 设置local_enable=yes,write_enable=yes和chroot_local_usr=yes三个选项即可。 • 【例13-5】配置vsftpd通过pam认证方式,添加虚拟用户。 • 操作步骤如下: • 1)在/etc/pam.d/目录中创建一个文件ftp

  49. 13.2.3 【实验13.2】vsFTP服务器的使用举例 • 1).改变目录的属主和权限 • [root@jsjwl root]chown user1.students /var/ftproot //把/var/students的属主定为user1。 • [root@jsjwl root]chmod 750 /var/students • 即自己具有所有权限,同组成员只具有读和执行权限,而其他人不具有任何权限。 • 2)修改配置文件/etc/vsftpd/vsftpd.conf • 设置local_enable=yes,write_enable=yes和chroot_local_usr=yes三个选项即可。 • 【例13-5】配置vsftpd通过pam认证方式,添加虚拟用户。 • 操作步骤如下: • 1)在/etc/pam.d/目录中创建一个文件ftp • [root@jsjwl root]# touch /etc/pam.d/ftp • 2)在/etc/pam.d/ftp里面加上如下两行:

  50. 13.2.3 【实验13.2】vsFTP服务器的使用举例 • auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login • account required /lib/security/pam_userdb.so db=/etc/vsftpd_login • 3)创建用户密码文件logins.txt,例如,此包含user1和user2,密码均为“karma”。 • [root@jsjwl root]# touch logins.txt • User1 • Karma • User2 • Karma • 4)在系统中创建一个真实的用户,如:user3, • [root@jsjwl root]# useradd user3 • 5)把/etc/hosts复制到user3的用户主目录/home/user3,并改变它的属主

More Related