1、 XX大学XX系 XXX 2022年10月19日本章提要本章提要vvsFTP服务器的安装和启动vFTP客户端命令简介v用户管理文件vsftpd.users和vsftpd.user_list的内容v主要配置文件sftpd.conf解析vFTP(File Transfer Protocol,文件传输协议)服务器提供Internet文件传输服务。Linux中常用的有WU-FTP、ProFTP、PureFTP及vsFTP等。在Fedora 8下自带的是vsFTP,它是一个小巧、高效、安全的FTP服务器软件.本章将介绍vsFTP服务器的安装、配置及使用等。vsFTP简介简介v vsFTP是一种基于GPL
2、的在UNIX/Linux中非常安全且快速的FTP服务器,其中vs是“Very Secure”的缩写,具有安全、高速和稳定的性能。在速度方面,使用ASCII模式下载数据时,速度是WU-FTP的两倍,如果Linux使用的是2.4.x版本的内核,在千兆以太网上的下载速度可达86Mbps。在稳定性方面,在单机服务器上支持4000个以上的并发连接,最高可支持15000个并发连接。除此之外,vsFTP还具有如下特性:v 支持基于IP的虚拟FTP服务器;v 支持虚拟用户;v 支持PAM或xinetd/tcp_wrappers的认证方式;v 支持两种运行方式:standalone和xinetd方式;v 支持每
3、个虚拟用户的独立配置;v 支持带宽限制。vsFTP的运行模式的运行模式v一种是独立(standalone)运行模式,另外一种是xinetd(eXtended Internet Services Daemon,即:扩展的Internet服务守护进程)模式。两种模式运行机制是不同的,独立运行模式适合专业的FTP服务器,且FTP总是一直有人访问,占用资源比较大,如果FTP服务器总是有人访问和登入建议采用这种模式。如果FTP服务器访问人数比较少,建议您用xinetd模式。xinetd模式的运行方式一直监听端口,当客户端(Client)有FTP连接请求时,首先会将连接传至xinetd,xinetd再将此
4、要求传至vsftpd,启动相应的vsftp服务进程(即:vsftpd)。以下的内容主要是介绍独立模式下的vsftpd启动和配置方式。vsFTP服务器的安装服务器的安装v在Fedora 8中带的vsFTP服务器版本为vsftpd-2.0.5-19.fc8,在安装之前可用如下命令检查是否已安装vsftpd:rootCandy root#rpm qa vsftpd vsftpd-2.0.5-19.fc8v若是在安装Linux时没有选择安装vsFTP服务器,可以从Fedora 8安装光盘DVD中的Packages目录下找出名为vsftpdd-2.0.5-19.fc8.i386.rpm的文件,然后输入以
5、下指令,系统即将自动完成vsFTP服务器的安装:rootCandy root#rpm ivh vsftpd-2.0.5-19.fc8.i386.rpmvsFTP服务器的启动服务器的启动v安装完成后,系统将会生成一个名为vsftpd的服务。要启动vsftpd,最简单的方式如下:rootCandy root#/etc/rc.d/init.d/vsftpd start starting vsftpd for vsftpd:ok v 也可以使用命令:rootCandy root#service vsftpd start 来启动vsftpd。自动启动自动启动vsFTP服务器服务器v如果想在图形界面下启动
6、vsFTP服务器,可以选择“系统”|“管理”|“服务”选项,在打开“服务配置”画面后,选中“vsftpd”项目,然后单击工具栏中的“开始”按钮即可启动vsftpd服务器,如图12-1所示。v图12-1 “服务状态设置”设置画面测试测试vsftpd是否已经启动是否已经启动v 可用telnet检验vsftpd是否已经启动:rootCandy root#telnet 127.0.0.1 21 Trying 127.0.0.1.Connected to 127.0.0.1.Escape character is.220(vsFTPd 2.0.5)v 从上面的内容可以看出能telnet到本机的vsftp
7、服务器的21号端口,确认vsftpd已经被启动,按“Ctrl+”中断会话 v v 再按“q”退出telnet v telnet q Connection closed.rootCandy root#测试测试ftp的运行的运行v 默认情况下,安装好vsftp服务器后就可以使用匿名用户anonymous(或ftp)下载文件了。例如,使用匿名用户下载文件。操作步骤如下:v 1)生成一个用于测试的文件welcome.txt。v 默认情况下,匿名用户下载目录/var/ftp/pub下没有任何内容,为了进行测试,可以先生成一个测试文件welcome.txt。rootCandy root#echo“Welc
8、ome to my vsFTP Server”/var/ftp/pub/welcome.txt测试测试ftp的运行(续)的运行(续)v 2)使用匿名用户(ftp或anonymous)登录ftp:rootCandy root#ftp 127.0.0.1Connected to 127.0.0.1(127.0.0.1).220(vsFTPd 2.0.5)Name(127.0.0.1:root):anonymous 331 Please specify the password.Password: /输入Email地址或任意字符串作为anonymous匿名账号的口令230 Login success
9、ful.Remote system type is UNIX.Using binary mode to transfer files.测试测试ftp的运行(续)的运行(续)v3)列表显示匿名FTP服务器目录并进入pub目录。vftp 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.vftp cd pub 250 Directory successfully
10、 changed.测试测试ftp的运行(续)的运行(续)v 4)显示/var/ftp/pub目录下的内容并下载welcome.txt文件。v ftp ls 227 Entering Passive Mode(127,0,0,1,44,205)150 Here comes the directory listing.-r-xr-xr-x 1 0 1 31 Oct 03 19:09 welcome.txt226 Directory send OK.v ftp get welcome.txt227 Entering Passive Mode(127,0,0,1,99,247)150 Opening
11、BINARY mode data connection for welcome.txt(31bytes).226 File send OK.31 bytes received in 0.000188 secs(1.6e+02 Kbytes/sec)v ftp!ls anaconda-ks.cfg install.log install.log.syslog welcome.txtv 通过显示本地文件命令“!ls”确认已经将文件welcome.txt下载到本地。测试测试ftp的运行(续)的运行(续)v5)测试是否能上传文件到/var/ftp/pub目录。vftp put install.log
12、local:install.log remote:install.log 227 Entering Passive Mode(127,0,0,1,233,16)550 Permission Denied.从上面信息可以看出上传文件失败v6)退出FTP vftp bye 221 Goodbye.FTP客户端命令简介客户端命令简介v要登录到vsFTP服务器,在Windows系统中可以使用图形化的FTP客户端软件,如CuteFTP和LeapFTP等,也可以直接在命令行状态下使用FTP命令。FTP命令的格式命令的格式vFTP(机器名、网址或IP地址)v若连接成功,系统提示输入用户名(Name)及密码(
13、Password)。进入FTP站点后,用户就可以使用相应的命令进行各种操作了。常用的常用的FTP命令命令vHelp或?vAscii、binary、typevbye、quitvCd、lcd、pwd、!vDele、renamevGet、mget、put、mput、recv、sendvLs、dir、mkdir、rmdirvOpen、close、disconnect、uservverbose、status、bellvsFTP服务器的配置服务器的配置v安装好vsFTPD后,会在/etc/vsftpd目录下生成ftpusers和user_list文件,同时会生成vsftpd.conf文件。用户管理文件用户
14、管理文件ftpusersv/etc/vsftpd/ftpusers是vsFTP服务器中用来管理帐号的配置文件。但需要注意的是:本文件中列出的用户名是指不允许登录vsFTP服务器的用户,默认的文件内容如下:rootCandy etc#cat ftpusers#Users that are not allowed to login via ftpRootBinDaemonGamesNobodyv 从上面例子可以看出,默认情况下,root帐号是不允许登录vsFTP服务器的。如希望让root登录,只需修改此文件,在“root”前加“#”注释掉即可。但从安全角度考虑,建议用户不要使用root登录FTP。
15、对于此文件中的其它帐号,均为系统帐号,建议不要做任何修改。/etc/vsftpd/user_list文件文件rootCandy etc#cat/etc/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.RootBinGamesNobodyv 此文件中指定的用户默认情况(即在/etc/
16、vsftpd/vsftpd.conf中设定了userlist_deny=YES)下也不能访问FTP服务器,而如果在vsftpd.conf中设定了userlist_deny=NO,则仅仅允许此文件中指定的用户访问FTP服务器。此方面的例子将在后面介绍。主要配置文件主要配置文件vsftpd.confv/etc/vsftpd/vsftpd.conf是vsftp服务器的主要配置文件,建议读者认真理解里面的内容,以使vsFTP服务器发挥最大的效能。此文件的设置格式如下:v参数设置值 v若是以“#”开头的行表示注释文字,会被服务器所忽略。下面将分类解释各参数的含义:vsftpd.conf匿名用户选项匿名用
17、户选项 v anonymous_enable=YES|NO v ftp_username=v no_anon_password=YES|NO v deny_email_enable=YES|NO v banned_email_file=/etc/vsftpd.banned_emails v anon_root=v anon_world_readable_only=YES|NO v anon_upload_enable=YES|NO v anon_mkdir_write_enable=YES|NO v anon_other_write_enable=YES|NO v chown_uploads=
18、YES|NO v chown_username=v local_enable=YES|NO v local_root=v user_config_dir=vsftpd.conf虚拟用户用户选项虚拟用户用户选项vguest_enable=YES|NO 若是启动这项功能,所有的不以匿名登录的用户,都视为“guest”类型,而此类用户的实际权限就是“guest_username”选项中所指定的帐号。默认不启用此选项。vguest_username=定义vsFTPD的guest用户登录时在系统中的帐号名称,默认值为ftp。vsftpd.conf连接选项连接选项v(1)监听地址与控制端口 listen_
19、address=ip address listen_port=port_value v(2)FTP模式与数据端口 port_enable=YES|NO Connect_from_port_20=YES|NO ftp_data_port=port number port_promiscuous=YES|NO pasv_enable=YES|NO pasv_min_port=port number pasv_max_port=port number pasv_promiscuous=YES|NO pasv_address=v(3)ASCII模式 ascii_upload_enable=YES|NO
20、 ascii_download_enable=YES|NO vsftpd.conf性能与负载控制选项性能与负载控制选项v超时选项 idle_session_timeout=data_connection_timeout=accept_timeout=numerical value connect_timeout=numerical value v负载控制 max_clients=numerical value max_per_ip=numerical value anon_max_rate=value local_max_rate=value 设置速率举例设置速率举例v 设定系统本地用户允许的
21、最大数据传输速率,以Bytes/s为单位。默认为0。此选项对所有的用户都生效。此外,也可以在用户个人配置文件中使用此选项,以指定特定用户可获得的最大数据传输速率。v 例如,为特定用户设置传输速率。v 操作步骤如下:v 在/etc/vsftpd/vsftpd.conf中指定用户个人配置文件所在的目录,如:v user_config_dir=/etc/vsftpd/userconf v 生成/etc/vsftpd/userconf目录。rootCandy rootmkdir/etc/vsftpd/userconfv 用户个人配置文件是在该目录下,生成与特定用户同名的文件,如:rootCandy r
22、oottouch/etc/vsftpd/userconf/user1 v 在用户user1的个人配置文件中设置local_max_rate参数,如:local_max_rate=80000 (即为80KB/s)v 以上步骤设定FTP用户user1的最大数据传输速度为80KBytes/s。v vsFTPD 对于速度控制的变化范围大概在80%到120%之间。比如我们限制最高速度为100KBytes/s,但实际的速度可能在80KBytes/s 到120KBytes/s 之间。当然,若是线路带宽不足时,速率自然会低于此限制。vsftpd.conf安全措施选项安全措施选项v(1)用户登录控制 v pam
23、_service_name=vsftpd 指出vsFTPD进行PAM认证时所使用的PAM配置文件名,默认值是vsftpd,默认PAM配置文件是/etc/pam.d/vsftpd。v/etc/vsftpd.ftpusers vsFTPD禁止列在此文件中的用户登录FTP服务器。这个机制是在/etc/pam.d/vsftpd中默认设置的。v userlist_enable=YES|NO 若是启用此功能,vsFTPD将读取/etc/userlist_file参数所指定的文件中的用户列表。当列表中的用户登录FTP服务器时,该用户在提示输入密码之前就被禁止了。即该用户名输入后,vsFTPD查到该用户名在列
24、表,vsFTPD就直接禁止该用户登录,不会再进行询问密码等后续步聚,这可避免明文(Clear Text)在网络上传输。默认值为NO。vsftpd.conf安全措施选项(续)安全措施选项(续)vuserlist_file=/etc/vsftpd.user_list 指出userlist_enable选项生效后,被读取的包含用户列表的文件。默认值是/etc/vsftpd.user_list。vuserlist_deny=YES|NO 此选项在userlist_enable 选项启动后才生效。决定禁止还是只允许由/etc/userlist_file指定文件中的用户登录FTP服务器。YES,默认值,禁
25、止文件中的用户登录,同时也不向这些用户发出输入口令的提示。若设为停用(即为NO),则只允许在文件中的用户登录FTP服务器。vtcp_wrappers=YES|NO 若值为YES,将在vsFTPD中使用TCP_wrappers远程访问控制机制,因此可利用/etc/hosts.allow与/etc/hosts.deny文件来定义可联机或是拒绝的来源地址。但默认不启用此选项。vsftpd.conf安全措施选项(续)安全措施选项(续)v(2)目录访问控制 chroot_list_enable=YES|NO chroot_list_file=/etc/vsftpd/chroot_list chroot_
26、local_users=YES|NO passwd_chroot_enable vsftpd.conf安全措施选项(续)安全措施选项(续)v(3)文件操作控制 hide_ids=YES|NO ls_recurse_enable=YES|NO write_enable=YES|NO secure_chroot_dir=vsftpd.conf安全措施选项(续)安全措施选项(续)v(4)新增文件权限设定 vanon_umask=匿名用户新增文件的umask 数值。默认值为077。这表示匿名用户新增的文件权限最大为700(777077700)。vfile_open_mode=表示上传文件的权限,与ch
27、mod命令所使用的数值相同。如果希望上传的文件可以执行,设此值为0777。默认值为0666。vlocal_umask=本地用户新增文件的umask 数值。默认值为077(其他大多数的FTP服务器都是使用022。您也可以修改为022)。vsftpd.conf提示信息选项提示信息选项vftpd_banner=login banner string vbanner_file=/directory/vsftpd_banner_file vdirmessage_enable=YES|MO vmessage_file=vsftpd.conf日志设置选项日志设置选项vxferlog_enable=YES|N
28、O vxferlog_file=vxferlog_std_format=YES|NO vlog_ftp_protocol=YES|NO vsftpd.conf其他设置其他设置 vsetproctitle_enable=YES|NO vtext_userdb_names=YES|NOvuser_localtime=YES|NO vcheck_shell=YES|NO vnopriv_user=vpam_service_name=vsFTP服务器的使用举例服务器的使用举例1【例】配置匿名用户,使之可以上传/下载文件。v 操作步骤如下:(1)在/var/ftp/创建一个上传目录,并修改权限。root
29、Candy rootcd/var/ftp /首先进入/var/ftp目录。rootCandy ftp#mkdir/var/ftp/incoming /创建incoming目录。rootCandy ftp#chmod 777/var/ftp/incoming /更改incoming目录的权限为777。vsFTP服务器的使用举例服务器的使用举例1(续)(续)(2)编辑/etc/vsftpd/vsftpd.conf文件 rootCandy rootvi/etc/vsftpd/vsftpd.conf 确保 anonymous_enabled=YES有效。v 找到“#anon_upload_enable
30、=YES”行,去掉前面的注释符号“#”,并在下面添加如下行:chown_uploads=YESanon_umask=077anon_mkdir_write_enable=YESanon_world_readable_only=NO(3)存盘退出。v 通过前面的配置后,匿名用户ftp(或anonymous)既可下载文件,又可上传文件到incoming目录,也能在incoming目录下创建新的目录。vsFTP服务器的使用举例服务器的使用举例2【例】配置vsFTPD,使本地用户user1具有上传/下载、user2只具有下载功能,其中user1和user2同属于students组。v 操作步骤如下:(
31、1)创建用户组 students和FTP的主目录rootCandy rootgroupadd studentsrootCandy rootmkdir /var/ftprootrootCandy rootuseradd-G students d/var/ftproot M user1v 注:-G:用户所在的组;v-d:表示创建用户主目录的位置;v-M:不建立默认的用户主目录,也即在/home下不创建用户主目录。rootCandy rootuseradd G students d/var/ftproot M user2vsFTP服务器的使用举例服务器的使用举例2(续)(续)(2)改变目录的属主和权
32、限rootCandy rootchown user1.students /var/ftproot /把/var/students的属主定为user1。rootCandy rootchmod 750/var/students 即自己具有所有权限,同组成员只具有读和执行权限,而其他人不具有任何权限。(3)修改配置文件/etc/vsftpd/vsftpd.conf 设置local_enable=yes,write_enable=yes和chroot_local_usr=yes三个选项即可。vsFTP服务器的使用举例服务器的使用举例3v【例】配置vsftpd通过pam认证方式,添加虚拟用户。v 操作步
33、骤如下:(1)在/etc/pam.d/目录中创建一个文件ftp rootCandy root#touch/etc/pam.d/ftp(2)在/etc/pam.d/ftp里面加上如下两行:v auth required/lib/security/pam_userdb.so db=/etc/vsftpd_loginv account required/lib/security/pam_userdb.so db=/etc/vsftpd_login(3)创建用户密码文件logins.txt,例如,此包含user1和user2,密码均为“karma”。v rootCandy root#touch log
34、ins.txtUser1KarmaUser2Karma(4)在系统中创建一个真实的用户,如:user3,rootCandy root#useradd user3vsFTP服务器的服务器的使用使用举例举例3(续续)(5)把/etc/hosts复制到user3的用户主目录/home/user3,并改变它的属主rootCandy root#cp/etc/hosts/home/user3/hostsrootCandy root#chown user3.students/home/user3/hosts(6)通过db_load创建虚拟用户的库文件。rootCandy root#db_load-T-t h
35、ash-f logins.txt/etc/vsftpd_login.db(7)更改vsftpd.conf文件,加入如下的几行pam_service_name=ftpguest_enable=YESguest_username=user3 /user3即为上面创建的系统本地用户。anon_world_readable_only=NO(8)重启vsftpd服务器,然后就可以以虚拟用户user1和user2登录系统了。rootCandy root#service vsftpd restartvsFTPD常见问题常见问题v如何更改启动方式v如何使用非常规的端口(如:2121)v如何把用户限制在自己的用户主目录中 v如何打开vsftp服务器的日志功能 实训实训12 vsFTP的安装配置和使用的安装配置和使用1.安装vsFTP服务器(若连接了Internet,可使用yum install vsftpd命令安装)。2.配置匿名用户使用读的权限访问/var/ftp目录。3.建立一个名为alice的FTP账户,设置该账户的磁盘配额为1G,下载带宽限制为100KB/s,alice对/var/ftp目录具有读写的权限。4.分别使用文本界面和图形界面的FTP客户端(如CuteFTP Pro)测试连接情况。