linux系统中FTP服务相关问题

FTP:文本传输协议

FTP的实验我们在虚拟机中做,在做实验之前,我们需要  1.vim /etc/sysconfig/selinux   在这里边将selinux的状态改为diabled

                                                                                 2 .reboot  因为这个修改是内核级的,所以我们需要重启虚拟机

                                                                                 3.getenforce  若显示为disabled表示更改成功


一.部署FTP服务

    1.服务端   

      vsftpd服务是服务端软件,lftp是客户端软件

      1.yum install vsftpd  安装vsftp服务  (相当于服务器端)

      2.systemctl start vsftpd打开vsftp服务

      3.systemctl enable vsftpd设置vsftp服务开机时自启动

      4.firewall-cmd --list-all查看开启的所有内容

      5.firewall-cmd --add-service=ftp将ftp服务加进去(暂时加进去,不能reload)

         

       firewall-cmd --permanent --add-service=ftp(永久加进去,可以reload)

      //6. firewall-cmd --reload重新加载防火墙的配置

  2.客户端

          yum install lftp

          lftp 172.25.254.210

          cd pub

           ls    (显示有内容,表示登录成功)

二.ftp服务中的基本配置信息

    1.报错id的解析

          500 文件系统权限过大        530 用户认证失败         550 服务本身功能未开放           553 本地文件系统权限过小

    2.匿名用户登陆

          vim /etc/vsftpd/vsftpd.conf

               anonymous_enable=YES|NO   匿名用户是否可以登陆

               local_enable=YES          本地用户是否可以登陆

               write_enable=YES          ftp服务是否对登陆用户可写

                每次修改完配置文件后要重启vsftpd服务systemctl restart vsftpd

  3.匿名用户上传

         vim /etc/vsftpd/vsftpd.conf

             write_enable=YES

             anon_upload_enable=YES

        chgrp ftp /var/ftp/pub  将/var/ftp/pub修改为ftp组  (lftp后看到的文件通常是在/var/ftp中(默认发布目录)

                                                                                     (匿名用户的家目录是pub)

        chmod 775 /var/ftp/pub  将/var/ftp/pub权限设置为755

        lftp  172.25.254.210  

        cd pub    pub是匿名用户的家目录

        put /etc/passwd

             

    4.匿名用户家目录修改

        anon_root=/directory         在服务端建立一个目录

    5.匿名用户上传文件默认修改权限修改

        anon_umask=xxx

    6.匿名用户建立目录

        anon mkdir write enable=YES

    7.匿名用户下载文件

        anon_world_readable_only=NO

    8.匿名用户删除文件,目录(重命名)

        anon_other_write_enable=YES|NO

    9.匿名用户新建目录

       anon_mkdir_write_enable=YES

    10.匿名用户最大传输速率

      anon_max_rate=      限制匿名用户上传文件的最大速率

          /mnt下截取文件dd if =/dev/zero of=/mnt/bigfile bs=1M count=2000

         上传之后删除了再上传,查看传送速率

          

     11.write_enable=NO

          所有用户不可写(不可上传)

    

     12.local_umask=022  本地用户上传文件的默认权限

          

         anon_umask       匿名用户上传文件的默认权限

     13.限制本地用户浏览根目录

         (1)所有用户被锁定在自己的家目录(大概在102行)

             chroot_local_user=YES

             chmod u-w /home/*

             

        (2)用户黑名单建立

             chroot_local_user=NO

             chroot_list_enable=YES

             chroot_list_file=/etc/vsftpd/chroot_list

              

             vim /etc/vsftpd/chroot_list(编辑这个文件后不用重启vsftpd服务)

                 NO说明没有将所有用户锁在自己的家目录,都可以自由访问根目录,所以要设置黑名单

                在这里边添加黑名单用户,只有这里边的用户不可以浏览根目录

             

             

         (3)用户白名单建立

            chroot_local_user=YES

            chroot_list_enable=YES

            chroot_list_file=/etc/vsftpd/chroot_list

              

            vim /etc/vsftpd/chroot_list     写进用户

                YES说明将所有用户锁在自己的家目录,不能随意访问根目录,所以要设置白名单

                在这里边添加白名单用户,只有这里边的用户可以浏览根目录   

            

    14.设置用户登陆的黑白名单

         ftpusers  永久黑名单,优先级最高

          user_list 默认黑名单,临时性 (可以是黑名单,有时候也可以是白名单)

          

          当它是黑名单时:

               主配置文件中(大致128行)   userlist_enable=YES

          当它是白名单时:

               主配置文件中(大致128行)   userlist_enable=YES    userlist_deny=NO

             

          ftpusers和白名单中有同一个人时,该用户不能登陆,因为ftpusers的优先级最高

            

   三.设置ftp虚拟用户

   因为系统用户等登陆ftp服务,同时也可以登陆系统,这样很不安全,所以我们要建立ftp虚拟用户,使这些用户只能登陆ftp

   当虚拟用户登陆策略启用时,系统用户和其它用户均不能再登陆

        1.vim /etc/vsftpd/userdb

           user1

           123

           user2

           123

           user3

           123

      2.此时这个文件是明文的,我们要对其加密

         db_load -T -t hash -f /etc/vsftpd/userdb userdb.db  采用哈希加密

         file /etc/vsftpd/userdb

         file /etc/vsftpd/userdb.db

      3.安装验证用户密码的插件

         yum install pam_userdb.so

      4.编辑策略文件(验证密码与用户是否一致的文件)   文件名称任意

           vim /etc/pam.d/jay

          account   required    pam_userdb.so    db=/etc/vsftpd/userdb(记录帐号和密码的文件)

           auth      required    pam_userdb.so    db=/etc/vsftpd/userdb

            required表示用户名必须正确,如果错误,则直接pass

            注意:db=/etc/vsftpd/userdb而不能是userdb.db,因为pam_userdb.so会自动识别userdb.db

                      如果写db=/etc/vsftpd/userdb.db,那么pam_userdb.so会识别文件userdb.db.db

 

       5.指定策略文件到配置文件中

          pam_service_name=jay

          guest_enable=YES

      6.虚拟帐号身份指定(用虚拟身份登陆时,实际上还是用一个已经存在的用户身份登陆

         guest_username=student(该用户身份必须是已经存在的)

         chmod u-w /home/student

三.虚拟用户家目录的设置

    如果我们建立了一个家目录,将这个家目录写入主配置文件中,我们会发现所有的虚拟用户都会在这个家目录中

    1.建立一个目录/vftpdir

    2.在目录中建立三个虚拟用户的家目录/vftpdir/user1(家目录必须跟用户同名)

                                                         /vftpdir/user2

                                                          /vftpdir/user3

    3.在这三个家目录中分别添加文件(为了验证用户进入的是否是自己的家目录)

    4.编写配置文件:vim /etc/vsftpd/vsftpd.conf

                          local_root=/vftpdir/$USER  (shell中$USER的用法)

                                $USER  相当于c语言中的变量,给不同的值,输出不同的值

                                   验证:su - student    echo $USER

                          user_sub_token=$USER       (将shell中$USER的用法挪到ftp服务中来用)

        

        

        

四.虚拟帐号配置独立设定

   因为虚拟用户使用的是匿名用户的参数控制,如果我们要给不同的虚拟用户不同的参数控制,就必须给每个虚拟用户设置自己的次配置文件。

   在这个实验中,我们要对不同用户设置不同权限,所以要将相应的主配置文件的匿名用户参数取消。

    1.mkdir user{1..3}/pub

    2.vim /etc/vsftpd/vsftpd.conf  查看自己是以哪个已存在的用户身份登陆的

    3.chgrp student user{1..3}/pub

    4.chmod 775 user{1..3}/pub

    5.mkdir -p /etc/vsftpd/userconf   建立虚拟用户的次配置目录

    6.vim /etc/vsftpd/userconf/user1  在上边的目录底下建立user1的次配置文件

      在里边写上允许虚拟用户做的动作:anon_upload_enable=YES  允许user1上传

    7.编辑主配置文件vim /etc/vsftpd/vsftpd.conf

        在里边写user_config_dir=/etc/vsftpd/userconf  (在这个目录底下只有user1的次配置文件,所以只有user1有指定权限)

        

猜你喜欢

转载自blog.csdn.net/jay_youth/article/details/80244491