570 likes | 668 Vues
第 13 章 FTP 服务器及其安装与配置. 【 本章提要 】 vsFTP 服务器的安装和启动 FTP 客户端命令简介 用户管理文件 vsftpd.users 和 vsftpd.user_list 的内容 主要配置文件 sftpd.conf 解析
E N D
第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服务器的安装和配置。
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还具有如下特性:
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服务器。
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
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服务器。
13.1.2 vsFTP服务器的安装和启动 图13-1 “服务状态设置”设置画面
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]#
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
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.
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下载到本地
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服务器,可以下载、上传文件,也可以离开用户主目录切换到其它有访问权限的目录并上传/下载文件。
13.1.3 FTP客户端命令简介 • 要登录到vsFTP服务器,在Windows系统中可以使用图形化的FTP客户端软件,如CuteFTP和LeapFTP等,也可以直接在命令行状态下使用FTP命令。FTP命令在例13-1已使用过。 • 1.FTP命令的格式 • FTP(机器名、网址或IP地址) • 若连接成功,系统提示输入用户名(Name)及密码(Password)。进入FTP站点后,用户就可以使用相应的命令进行各种操作了。
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:退出登录并终止连接。
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。
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服务器。
13.1.3 FTP客户端命令简介 • ①verbose、status、bell • verbose:切换所有文件传输过程的显示; • status:显示目前的一些参数; • bell:当指令执行完成时会发出喇叭声。 • 当执行不同FTP命令的时候,FTP服务器会返回一组数字,每个数字代表的含义不同,常见的数字及其表示的信息如表13-1所示。 • 表13-1 FTP命令的返回值代码及其含义
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
13.2.1用户管理文件vsftpd.users • Sync • Shutdown • Halt • Mail • News • Uucp • Operator • Games • Nobody • 从上面例子可以看出,默认情况下,root帐号是不允许登录vsFTP服务器的。如希望让root登录,只需修改此文件,在“root”前加“#”注释掉即可。但从安全角度考虑,建议用户不要使用root登录FTP。对于此文件中的其它帐号,均为系统帐号,建议不要做任何修改。
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
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服务器。此方面的例子我们将在后面介绍。
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。
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/。
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
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
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。默认值为无。
13.2.2主要配置文件vsftpd.conf • (1)虚拟用户 • guest_enable=YES|NO • 若是启动这项功能,所有的不以匿名登录的用户,都视为“guest”类型,而此类用户的实际权限就是“guest_username”选项中所指定的帐号。默认不启用此选项。 • guest_username= • 定义vsFTPD的guest用户登录时在系统中的帐号名称,默认值为ftp。
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模式下生效。
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。
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,将有助于安全性的提高。
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传输模式。
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。
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,表示不限制最大连接数。
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。
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
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。
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。
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。
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。
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)。
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。
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。
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
13.2.2主要配置文件vsftpd.conf • 此选项仅对不使用PAM方式的vsFTPD生效。当此选项关闭后,当本地用户登录时,vsFTPD不会检查/etc/shells文件以寻找一个有效的用户shell。默认为YES。 • nopriv_user= • 此选项可以指定vsftp执行时,所使用的最低权限的用户名称。默认值为nobody。 • pam_service_name= • 指明vsFTPD使用PAM验证服务时的PAM配置文件名。默认值为ftp
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。
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目录下创建新的目录。
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
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
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里面加上如下两行:
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,并改变它的属主