FTP服务

 

 

ftp服务
一、FTP 文件传输协议
  1.FTP为系统提供了通过网络与远程服务器进行传输的简单方法,分主动和被动两种;
  2.vsftpd:安全型服务器包,被动传输的接口是随机的,安全级别更高;
  3.默认配置文件让anonymous用户只能下载位于chroot目录中的内容;
  4./var/ftp:远程FTP客户端能以用户anonymous或ftp用户连接到服务器,无需密码;

 

 

二、设置FTP服务

       530密码输入错误

       550当前用户没有权限

       553文件权限不够

       500文件权限过大     

 

  1.配置yum源,安装vsftpd, lftp 
  2.开启ftp服务,查看ftp接口,设置开机自启动

 

  [[email protected] ~]# systemctl start vsftpd  开启服务

  [[email protected] ~]# systemctl enable vsftpd  开机自启动

 

  [[email protected] ~]# netstat -antlupe | grep ftp  查看ftp接口

 

   tcp6       0      0 :::21        :::*       LISTEN      0     107439     32498/vsftpd  

(显示为21接口)

  

 

   ln -s '/usr/lib/systemd/system/vsftpd.service' '/etc/systemd/system/multi-user.target.wants/vsftpd.service'
  3.在客户端进行实验  (防火墙处于开启状态)

 

  [[email protected] Desktop]$ lftp 172.25.254.148

  lftp 172.25.254.148:~> ls

              

  
  Interrupt  
  
  4.在服务端修改配置文件,允许ftp连接
   查看防火墙限制的服务  firewall-cmd --get-services  
  [[email protected] ~]# firewall-cmd --get-services 
 

 

   修改配置文件,允许ftp服务通过防火墙

 

 

   firewall-cmd --permanent --add-service=ftp

 

 

   防火墙服务重新加载配置文件

 

   firewall-cmd --reload

 

   查看防火墙允许服务   firewall-cmd --list-all

 

  [[email protected] ~]# firewall-cmd --list-all

  

  5.修改配置后,客户端连接ok   ##默认目录 /pub

 

  [[email protected] Desktop]$ lftp 172.25.254.148
  

三、用户登陆设置
   注意:该实验必须修改内核级限制文件 /etc/sysconfig/selinux    SELINUX=disabled(关闭) (如不修改会影响试验效果)
   编辑配置文件 vim /etc/vsftpd/vsftpd.conf     
   注:(每次修改完配置文件后必须重新加载systemctlrestartvsfapd)否则修改后的配置文件不生效 
  1.匿名用户登陆
   anonymous_enable=YES  允许匿名用户登陆

 

   anonymous_enable=NO   不允许匿名用户登陆

实验:在服务端修改配置文件为不允许匿名用户登陆,设置完成后重起服务,在客户端连接服务端被禁止。

   不允许登陆状态如下: 

 

  2.本地用户登陆
   local_enable=YES    允许本地用户登陆

 

   local_enable=No     不允许本地用户登陆 (注:本地用户需加-u指定本地用户)

实验:修改服务端配置文件为不允许指定用户登陆,在客户端指定 -u student用户连接服务端被拒绝。

   

   3.本地用户读写    

 

   write_enable=YES     允许读写

 

   write_enable=NO      不允许读写

实验:上传(put),删除(rm -fr )

四、登陆用户的读写权限
    1.查看ftp可操作的命令  help
    2.匿名用户上传文件权限 vim /etc/vsftpd/vsftpd.conf (打开修改配置文件)

 

     anon_upload_enable=YES   (允许匿名用户上传文件)

 

     

 

    
    实验效果如下:
   [[email protected] Desktop]$ lftp 172.25.254.148 

 

 

   

   修改组  chgrp ftp /var/ftp/pub/  (修改组跟权限在服务端)
   修改权限  chmod 775 /var/ftp/pub/ 
  3.匿名用户删除文件权限 vim /etc/vsftpd/vsftpd.conf (打开修改配置文件)

 

 

     anon_other_write_enable=YES(允许匿名用户删除或移动文件)

 

     

     

 

  4.匿名用户下载文件权限 vim /etc/vsftpd/vsftpd.conf  (打开修改配置文件)

 

    anon_world_readable_only=NO     (不允许你名用户下载文件)

    

 

    实验效果如下:

 

   lftp 172.25.254.148:/pub> get group

   

 

  5.匿名用户新建目录权限vim /etc/vsftpd/vsftpd.conf  (打开修改配置文件)

 

   anon_mkdir_write_enable=YES    (允许匿名用户新建目录)

   

 

    实验效果如下:
   lftp 172.25.254.148:/pub> mkdir hello

 

   mkdir ok, `hello' created

   

五、用户登陆的相关配置

 

  1.修改默认用户,即以用户student的身份登陆
    vim /etc/vsftpd/vsftpd.conf  (打开修改配置文件)
    chown_uploads=YES

 

    chown_username=student

    

   

 

  2.匿名用户的最大上传速度   单位byte

 

    anon_max_rate=102400  (表示上传最大速度为10M/s)

  

 

  3.

 

    anon_root=/mnt     匿名用户登陆的默认目录修改

   

       

    local_root=/mnt      本地用户登陆的默认目录

   

   

  4.最多同时在线人数设定

 

    max_clients=3      (设置后只允许设置内的人数在线)
  5.修改本地用户登陆后,文件默认权限修改

 

   local_umask=022(配置文件默认022,改为033,改完后文件默认权限为644)

 

  6.用户登陆,锁定在用户加目录

 

    chroot_local_user=YES

 

 

    注意:此时要取消家目录文件W权限,否则会500报错,权限太大
   [[email protected] Desktop]$ lftp 172.25.254.108 -u student
    Password: 
    lftp [email protected]:~> ls      
    ls: Login failed: 500 OOPS: vsftpd: refusing to run with writable root inside chroot()
    用户登陆,可切换目录,如切到根目录    
    chroot_local_user=NO
   [[email protected] Desktop]$ lftp 172.25.254.108 -u student
   Password: 
   lftp [email protected]:~> cd /    
   cd ok, cwd=/ 
  7.本地用户登陆黑/白名单
  chroot_local_user=NO
  chroot_list_enable=YES
  chroot_list_file=/etc/vsftpd/chroot_list
  注意:当锁定用户家目录(YES)时,/etc/vsftpd/chroot_list是白名单
       当不锁定用户家目录(NO)时,/etc/vsftpd/chroot_list是黑名单
  8.黑名单配置文件
    ftpusers     ##永久黑名单,一旦加入,任何操作都不能洗白
    user_list    ##临时黑名单,可修改配置文件,变为白名单
    userlist_enable=YES  ##开启userlist列表
    userlist_deny=NO     ##默认所有用户加入黑名单,白名单用户可登陆
    注意:若用户既在永久黑名单,也在白名单,此用户不能登陆!!

六、虚拟用户登陆
   1.建立虚拟用户   
    vim /etc/vsftpd/users    ##名字可自定义
    hello
    123                 ##注意:不能有空格
   2.对虚拟用户和密码加密
    db_load -T -t hash -f users users.db
     会生成 /etc/vsftpd/users.db文件
   3.建立ftp验证文件
    /etc/pam.d/usercheck
    account     required    pam_userdb.so    db=/etc/vsftpd/users     ##用户认证
    auth    required    pam_userdb.so    db=/etc/vsftpd/users     ##密码认证
   4.修改配置文件,使虚拟用户登陆
     pam_service_name=usercheck        ##pam读取虚拟用户文件usercheck
     guest_enable=YES                  ##开启虚拟用户登陆
     guest_username=ftp                ##使虚拟用户以ftp映射用户登陆,
   5.配置虚拟用户具备独立的家目录
     建立虚拟用户的家目录(例:两个用户)
    mkdir /var/ftpdir/hello/hellodir -p
    mkdir /var/ftpdir/nihao/nihaodir -p    ##—p 表示上层目录不存在,自动建立
     修改配置文件,使虚拟用户登陆到自己独立的家目录
    local_root=/var/ftpdir/$USER
    user_sub_token=$USER
     实验效果如下:
   [[email protected] Desktop]$ lftp 172.25.254.108 -u hello
    Password: 
    lftp [email protected]:~> ls        
    drwxr-xr-x    2 0        0               6 Apr 18 08:12 hellodir
    lftp [email protected]:/> exit
   [[email protected] Desktop]$ lftp 172.25.254.108 -u nihao
    Password: 
    lftp [email protected]:~> ls        
    drwxr-xr-x    2 0        0               6 Apr 18 08:12 nihaodir
   6.虚拟用户分开管理(VIP)
     将匿名用户所有的权限关闭
     修改配置文件,给指定虚拟用户特殊权限
     user_config_dir=/etc/vsftpd/user_conf
     在/etc/vsftpd/user_conf目录下建立文件,以虚拟用户名命名
     touch hello
     [[email protected] user_conf]# cat hello      anon_upload_enable=YES      修改虚拟用户登陆家目录权限      chmod 755 /var/ftpdir/hello/hellodir/      更改虚拟用户登陆家目录组      chgrp student /var/ftpdir/hello/hellodir/