Linux——基本命令介绍(6)

安装和卸载FTP服务器端及客户端

  1. 安装和卸载ftp服务器端
  1. 查看是否安装ftp服务器端

【rpm软件包管理】

    rpm -q vsftpd           #查看是否安装vsftpd软件包(也可用rpm -qa |grep vsftpd查看)

Linux——基本命令介绍(6)

  1. 安装vsftpd软件包
  • 查看光驱挂载情况,进入光驱挂载目录

Linux——基本命令介绍(6)

  • cd /media/RHEL_6.1\ I386\ Disc\ 1       #进入光驱(因为目录的名字中有空格,所以在空格前需要用“\”连接,也可以用tab键自动完成)
  • ls              #查看当前目录,可以找到Packages目录,所有的rpm软件包都在该目录下
  • cd Packages     #进入该目录
  • ls |grep vsftpd     查看vsftpd软件包的完整名称

Linux——基本命令介绍(6)

  • rpm -ivh  vsftpd-2.2.2-6.el6_0.1.i686.rpm   #用rpm命令安装vsftpd(用tab键自动完成)

Linux——基本命令介绍(6)

  • rpm -q vsftpd               #查看是否安装成功,显示文件名则表示安装成功

Linux——基本命令介绍(6)

  1. 卸载软件包

rpm -e vsftpd               #卸载软件包

【注意】若卸载时提示有关联文件,即存在依赖关系,则需要带上参数“--nodeps”,此时不考虑关联文件,仅卸载指定的软件:rpm --nodeps -e vsftpd

  1. 安装和卸载ftp客户端
  1. 查看是否安装ftp客户端

    rpm -q ftp                  #查看是否安装ftp软件包

Linux——基本命令介绍(6)

  1. 安装vsftpd软件包
  • cd /media/RHEL_6.1\ I386\ Disc\ 1/Packages  #进入光驱的Packages目录
  • ls |grep ftp                            #查看ftp的完整名称

Linux——基本命令介绍(6)

  • rpm -ivh  ftp-0.17-51.1.el6.i686.rpm        #用rpm命令安装ftp

Linux——基本命令介绍(6)

  • rpm -q ftp              #查看是否安装成功,显示文件名则表示安装成功

Linux——基本命令介绍(6)

 

  • 配置ftp服务器端
  1. 与vsftpd服务器相关的文件和目录
  1. vsftpd.conf

该文件为vsftpd服务器的主配置文件,具体路径/etc/vsftpd/vsftpd.conf。

配置vsftpd服务器主要是通过对配置文件/etc/vsftpd /vsftpd.conf中选项的设定来实现,配置文件vsftpd.conf的内容非常单纯,每一行即为一项设定。若是空白行或是开头为“#”的一行,将会被忽略。对每一项的描述都是由代表该项的名称和值两部分组成,如:option=value,其中option代表要设定项的名称,value代表为该项所赋的值,设定时需注意等号两边不能加空格。简单地说其格式有如下规则:

·配置语句的语法规则形式为:“参数名称=参数值”。

·配置语句中除了参数值以外,所有选项都不区分大小写。

·可以使用“#”标注该行为注释信息。

vsftpd.conf 文件中可定义多个配置参数,常用的部分配置参数如下表所示:

参数名

说明

anonymous_enable

设定是否允许匿名登入,默认值为YES

local_enable

设定是否允许本机使用者登入,默认值为YES

local_umask

设定本机登入者新增档案时的umask 数值,默认值为077

write_enable

指定是否开放写权限,默认值为YES

dirmessage_enable

指定是否能浏览目录内的信息

Listen=YES/NO

指定vsftpd 服务器的运行方式,默认为YES 以独立运作的方式运行

data_connection_timeout

指定数据连接空闲多长时间(以秒为单位)后自动断开,默认值为300

idle_session_timeout

指定用户会话空闲多次时间(以秒为单位)后自动断开,默认值为300

xferlog_enable

指定是否启用日志功能,默认取值为YES

xferlog_file

指定日志文件所在的位置,默认取值为/var/log/vsftpd.log

userlist_enable

指定是否启用user_list 文件,默认取值为NO

pam_service_name

指定验证方式,默认取值为vsftpd

tcp_wrapper

指定是否启用防火墙

【注意】用vi编辑器打开vsftpd.conf文件,可以查看到其默认内容如下所示:

 

12:anonymous_enable=YES       //允许匿名访问这是匿名服务器必需的

15:local_enable=YES

18:write_enable=YES

22:local_umask=022

35:dirmessage_enable=YES

38:xferlog_enable=YES

41:connect_from_port_20=YES

55:xferlog_std_format=YES

109:listen=YES

116:pam_service_name=vsftpd

117:userlist_enable=YES

118:tcp_wrappers=YES

根据vsftpd服务器的默认设置,本地用户和匿名用户都可以登录。本地用户默认进入其个人主目录,并可以切换到其他有权访问的目录,还可以上传和下载文件。匿名用户只能下载/var/ftp目录下的文件。默认情况下/var/ftp没有任何文件。

  1. ftpusers

/etc/vsftpd/ftpusers用于指定不能访问vsftpd服务器的用户列表。此文件在格式上采用每个用户一行的形式,其包含的用户通常是Linux系统的超级用户和系统用户。

  1. user_list

同样处于/etc/vsftpd目录的user-list文件中也保留用户列表,其是否起效取决于vsftpd.conf文件中的userlist_enable和userlist_deny参数。

  1. vsftpd 服务器用户

一般情况下,用户必须经过身份验证才能登录vsftpd服务器,然后访问和传输FTP服务器上的资源。vsftpd服务器的用户主要可以分为两类:本地用户和匿名用户。

本地用户是vsftpd服务器上拥有账户的用户。本地用户输入自己的用户名和密码可以登录vsftpd服务器,并且直接进入该用户的主目录。

匿名用户是vsftpd 服务器上没有账号的用户。如果vsftpd服务器提供匿名访问功能,那么就可以输入匿名用户名(ftp或者anonymous),然后输入用户的E-mail地址作为密码进行登录。甚至不输入口令也可以登录。当匿名用户登录系统后,进入匿名FTP服务目录/var/ftp。

  1. 配置vsftpd服务器
  1. 允许和禁止匿名用户登录
  • 允许匿名用户登录:将vsftpd.conf文件中的anonymous的值设置为YES;
  • 禁止匿名用户登录:将vsftpd.conf文件中的anonymous的值设置为NO;
  1. 设置匿名用户的权限

匿名用户访问FTP 服务器在很多场合都会使用到,比如公共的资源等。默认情况下,匿名用户可以下载/var/ftp/目录下的所有文件,但是不能上传文件。vsftpd.conf 文件中有“write_enable=yes”设置语句存在的情况下,可增加匿名用户的写权限。

 

27:anon_upload_enable=yes                           //允许匿名用户上传文件

31:anon_mkdir_write_enable=yes                   //允许匿名用户创建目录

【例1】配置一台简单的ftp服务器,要求只允许匿名用户登录,匿名用户可以在/var/ftp/pub目录中新建目录、上传和下载文件。

  • 配置vsftpd.conf 主配置文件,使其包括下列参数:

 

12:anonymous_enable=YES                     //允许匿名用户访问

15:local_enable= NO                               //禁止本地用户登录

18:write_enable= YES

27:anon_upload_enable=YES                   //允许匿名用户上传文件

31:anon_mkdir_write_enable=YES           //允许匿名用户可以创建目录

41:connect_from_port_20=YES

109:listen=YES                                     //独立的vsftpd 服务器

118:tcp_wrappers= YES

  • 修改/var/ftp/pub 目录的权限,允许其他用户写入文件

chmod 777 /var/ftp/pub

  • 重新启动vsftpd 服务器

service vsftpd restart

  • 按照上次课的方法设置网络,使虚拟机中的linux操作系统和实体机的windows操作系统可以相互通信(可以相互ping通)
  • 测试,匿名登录ftp服务器

【方法一】测试本地ftp服务器(服务器IP:127.0.0.1,确保ftp服务器已经打开)

ftp 127.0.0.1           #使用匿名用户登录,用户名为anonymous,密码为空

Linux——基本命令介绍(6)

pwd                 #查看当前目录

Linux——基本命令介绍(6)

ls                  #查看目录中的内容

Linux——基本命令介绍(6)

cd pub              #切换到pub子目录

Linux——基本命令介绍(6)

        put /home/rjxy/x x  #把本地/home/rjxy目录下的文件x上传到ftp的pub目录中,并命名为x(必须要命名,否则无法上传)

Linux——基本命令介绍(6)

【方法二】测试远程ftp服务器(在实体机的Winxp或Win7系统中测试连接ftp服务器,假设服务器IP为192.168.1.100)

  1. 确保在Winxp或Win7中能ping通ftp服务器

Linux——基本命令介绍(6)

  1. ftp 192.168.1.100       #在Winxp或Win7的命令提示符中输入该命令,连接ftp服务器

Linux——基本命令介绍(6)

若出现未知错误号的提示,表示linux的iptables服务没有清空,需要先清空iptables,然后保存iptables即可。

【清空iptalbes】iptables –F

【保存iptables】service iptables save

Linux——基本命令介绍(6)

  1. ftp 192.168.1.100       #再次连接ftp服务器,并用匿名用户anonymous登录

Linux——基本命令介绍(6)

  1. 限定本地用户

vsftpd 服务器提供多种方法限制某些本地用户登录服务器。具体包括以下三种方法。

  1. 直接编辑/etc/vsftpd/ftpuser 文件,将禁止登录的用户名写入到ftpuser 文件。
  2. 直接编辑/etc/vsftpd/user_list 文件,将禁止登录的用户名写入到user_list 文件。同时vsftpd.conf文件应设置“userlist_enable=YES”和“userlist_deny=YES”语句,则user_list 文件中指定的用户不能访问FTP 服务器。
  3. 直接编辑/etc/vsftpd/user_list文件,将允许登录的用户名写入到user_list 文件。同时vsftpd.conf文件应设置“userlist_enable=YES”和“userlist_deny=NO”语句,则只允许user_list 文件中指定的用户访问FTP 服务器。如果某用户同时出现在user_list ftpuser 文件中,那么该用户将不被允许登录。这是因为vsftpd 总是先执行user_list 文件,再执行ftpuser 文件。

【例2】验证vsftpd.conf文件中userlist_enable和userlist_deny参数的值与user_list中用户登录状态的对应关系。(在本地测试,即测试127.0.0.1)

  • 添加新用户test并设置密码

useradd test

passwd test

  • 修改/etc/vsftpd/user_list,将用户test添加到该文件中
  • 由于【例1】中修改了local_enable,所以要将该参数恢复为local_enable=YES
  • 设置userlist_enable=YES(默认值),此时配置文件中没有userlist_deny参数,相当于其默认值为YES

vi /etc/vsftpd/vsftpd.conf

service vsftpd restart          #重启vsftpd服务——修改配置文件后,必须重启服务,使配置文件生效

ftp 127.0.0.1                   #test用户不能登录

Linux——基本命令介绍(6)

  • 设置userlist_enable=YES,添加userlist_deny=NO

vi /etc/vsftpd/vsftpd.conf

service vsftpd restart          #重启vsftpd服务

ftp 127.0.0.1                   #test用户可以登录——即user_list中的用户可以登录,不在user_list中的用户不能登录

Linux——基本命令介绍(6)

  • 设置userlist_enable=NO,userlist_deny=YES

vi /etc/vsftpd/vsftpd.conf

service vsftpd restart          #重启vsftpd服务

ftp 127.0.0.1               #所有用户都可以登录,不论是否在user_list中

Linux——基本命令介绍(6)

  • 设置userlist_enable=NO,userlist_deny=NO

vi /etc/vsftpd/vsftpd.conf

service vsftpd restart          #重启vsftpd服务

ftp 127.0.0.1               #所有用户都可以登录,不论是否在user_list中

Linux——基本命令介绍(6)

【总结】userlist_enable和userlist_deny参数的值与user_list中用户登录状态的对应关系

userlist_enable=YES

userlist_deny=YES

user_list中的用户不能登录,其他用户可以登录

userlist_deny=NO

user_list中的用户可以登录,其他用户不能登录

userlist_enable=NO

userlist_deny=YES

所有用户都可以登录

userlist_deny=NO

  1. 允许root用户登录
  • 将/etc/vsftpd/ftpuser和/etc/vsftpd/user_list文件中的root前面加“#”注释掉
  • 测试用root用户连接ftp服务器,如果出现错误提示“500 OOPS:cannot change directory:/root”,说明selinux防火墙没有关闭,将selinux防火墙关闭即可。

Linux——基本命令介绍(6)

  • 将selinux防火墙关闭后,再次测试root用户登录

Linux——基本命令介绍(6)

  1. 禁止切换到其他目录

在vsftpd服务器的默认设置里,本地用户可以切换到其主目录以外的其他目录进行浏览,并在权限允许的范围内进行上传和下载资料。这样的默认设置是不安全的,用户可以通过设置chroot相关参数,禁止用户切换到主目录以外的目录(注意:这里的主目录指需要通过local_root=/var/ftp设置的站点根目录,当用户不允许切换到其他目录时,有登录后ftp站点的根目录“/”是该ftp帐户的主目录,即local_root所设置的文件系统中/var/ftp目录。)。

  1. 设置所有的本地用户的主目录。需要在vsftpd.conf文件中添加“local_root=/var/ftp”配置语句。
  2. 根据下面的表格编辑vsftpd.conf,添加以下语句,指定只有/etc/vsftpd/chroot_list文件中的用户才不能切换到主目录以外的目录。

95:chroot_list_enable=XXX

96:chroot_local_user=XXX

98:chroot_list_file =/etc/vsftpd/chroot_list

总结】chroot_list_enable 和chroot_local_user参数的值与chroot_list中用户切换状态的对应关系

chroot_list_enable =YES

chroot_local_user =YES

chroot_list中列出的用户可切换到站点的其他目录,未在chroot_list中列出的用户不可以切换;

chroot_local_user =NO

chroot_list中列出的用户不可切换到站点的其他目录,未在chroot_list中列出的用户可以切换;

chroot_list_enable =NO

chroot_local_user=YES

所有用户均不可切换到站点的其他目录;

chroot_local_user =NO

所有用户均可切换到站点的其他目录;

c) 然后,在/etc目录下创建chroot_list文件,其文件格式同user_list相同,要求每个用户占一行。

【例3】配置一台ftp服务器,要求禁止test用户切换到其他目录,其他本地用户可以切换到其他目录,并在本地测试该服务器。

  • 由于【例2】中修改了userlist_enable和userlist_deny,需要先把这两项恢复成默认设置,即userlist_enable=YES,userlist_deny=YES
  • 由于【例2】中把test用户添加到了user_list文件中,需要先把该文件中的test删除
  • vi /etc/vsftpd/vsftpd.conf                                          #启用chroot_list_enable=YES和chroot_list_file=/etc/vsftpd/chroot_list
  • touch /etc/vsftpd/chroot_list                 #创建chroot_list文件
  • vi /etc/vsftpd/chroot_list                      #修改chroot_list文件,添加用户test
  • service vsftpd restart
  • ftp 127.0.0.1                                      #测试本地ftp服务器

Linux——基本命令介绍(6)

  1. ftp服务器的启动与停止
  1. 启动

service vsftpd start

  1. 关闭

service vsftpd stop

  1. 重启

service vsftpd restart

  1. ftp客户端的使用

【常用命令】

    open:打开ftp服务器

    pwd:显示远程目录

    ls:显示远程目录的内容

    !cd:查看本地当前目录(!cd是winxp的命令,如果本地是linux,则用!pwd命令)

    !dir:查看本地目录的内容(!dir是winxp的命令,如果本地是linux,则用!ls命令)

    cd:改变远程主机目录

    lcd:改变本地主机目录

    get:下载文件

    put:上传文件

    quit/bye:退出登录

【例】

  • ftp 192.168.2.1     #在windows中登录ftp服务器(假设ftp服务器地址为192.168.2.1),使用用户rjxy登录
  • ls                  #查看远程目录
  • pwd                 #查看远程主机宿主目录
  • cd /home            #切换远程目录到/home

pwd                 #查看是否切换成功

  • !cd                 #查看本地目录
  • lcd c:\             #切换本地目录到c:\

!cd                 #查看是否切换成功

  • mkdir ab            #创建目录ab,提示失败,因为当前在/home目录,而rjxy用户对此目录没有写权限
  • cd /home/rjxy       #切换远程目录到/home/rjxy
  • mkdir ab            #在当前目录下创建目录ab
  • get a aaa.txt   #把远程当前目录下的文件“a”复制到本地当前目录,并重命名为“aaa.txt”(注意,需要先在fedora中/home/rjxy目录下创建文件“a”)

!dir                #查看当前目录有没有文件“aaa.txt”

  • put c:\1.txt 2      #把本地c:\1.txt文件上传到ftp服务器当前目录,并改名为“2”(注意,需要现在c:\创建文件1.txt)

ls                  #查看ftp服务器当前目录是否有文件“2”

  • bye                 #退出ftp服务器