• 学校ftp服务器搭建


    ftp配置文件,默认配置:

    默认配置

    anonymous_enable=YES
    #允许匿名用户和本地用户登陆。

    local_enable=YES
    #匿名用户使用的登陆名为ftp或anonymous,口令为空;匿名用户不能离开匿名用户家目录/var/ftp,且只能下载不能上传。

    write_enable=YES
    #本地用户的登录名为本地用户名,口令为此本地用户的口令;本地用户可以在自己家目录中进行读写操作;本地用户可以离开自家目录切换至有权限
    访问的其他目录,并在权限允许的情况下进行上传/下载。

    #写在文件/etc/vsftpd.ftpusers中的本地用户禁止登陆。

    anonymous_enable=YES/NO(YES)
    #控制是否允许匿名用户登入,YES 为允许匿名登入,NO 为不允许。默认值为YES。

    write_enable=YES/NO(YES)
    #是否允许登陆用户有写权限。属于全局设置,默认值为YES。

    no_anon_password=YES/NO(NO)
    #若是启动这项功能,则使用匿名登入时,不会询问密码。默认值为NO。

    ftp_username=ftp
    #定义匿名登入的使用者名称。默认值为ftp。

    anon_root=/var/ftp
    #使用匿名登入时,所登入的目录。默认值为/var/ftp。注意ftp目录不能是777的权限属性,即匿名用户的家目录不能有777的权限。

    anon_upload_enable=YES/NO(NO)
    #如果设为YES,则允许匿名登入者有上传文件(非目录)的权限,只有在write_enable=YES时,此项才有效。当然,匿名用户必须要有对上层目录的写入权。默认值为NO。

    anon_world_readable_only=YES/NO(YES)
    #如果设为YES,则允许匿名登入者下载可阅读的档案(可以下载到本机阅读,不能直接在FTP服务器中打开阅读)。默认值为YES。当为YES时,文件的other用户必须有r权限才允许下载,即使文件的属主为ftp且对文件有r权限也无法下载,为了安全考虑,默认为YES;当为NO时,则只要属主为ftp且对文件有r权限即可下载;

    anon_mkdir_write_enable=YES/NO(NO)
    #如果设为YES,则允许匿名登入者有新增目录的权限,只有在write_enable=YES时,此项才有效。当然,匿名用户必须要有对上层目录的写入权。
    默认值为NO。

    anon_other_write_enable=YES/NO(NO)
    #如果设为YES,则允许匿名登入者更多于上传或者建立目录之外的权限,譬如删除或者重命名。(如果anon_upload_enable=NO,则匿名用户不能
    上传文件,但可以删除或者重命名已经存在的文件;如果anon_mkdir_write_enable=NO,则匿名用户不能上传或者新建文件夹,但可以删除或者重
    命名已经存在的文件夹。)默认值为NO。

    chown_uploads=YES/NO(NO)
    #设置是否改变匿名用户上传文件(非目录)的属主。默认值为NO。配合anon_umask一起使用,可以既显示匿名用户上传文件目录内容,又能同时控制匿名用户上传文件权限。

    chown_username=username
    #设置匿名用户上传文件(非目录)的属主名。建议不要设置为root。

    anon_umask=077
    #设置匿名登入者新增或上传档案时的umask 值。默认值为077,则新建档案的对应权限为700。注意,默认为066,上传文件后,无法显示文件内容,改为umask=022,可以正常显示匿名用户上传文件夹中的所有内容。同时这个anon_umask是造成我们使用匿名用户上传文件不能下载的主要原因

    deny_email_enable=YES/NO(NO)
    #若是启动这项功能,则必须提供一个档案/etc/vsftpd/banner_emails,内容为email address。若是使用匿名登入,则会要求输入email address,
    若输入的email address 在此档案内,则不允许进入。默认值为NO。

    是否使用tcp_wrappers作为主机访问控制方式。
    tcp_wrappers可以实现linux系统中网络服务的基于主机地址的访问控制
    在/etc目录中的hosts.allow和hosts.deny两个文件用于设置tcp_wrappers的访问控制
    前者设置允许访问记录,后者设置拒绝访问记录。
    如想限制某些主机对FTP服务器192.168.57.2的匿名访问,编缉/etc/hosts.allow文件,如在下面增加两行命令:
    vsftpd:192.168.57.1:DENY 和vsftpd:192.168.57.9:DENY
    表明限制IP为192.168.57.1/192.168.57.9主机访问IP为192.168.57.2的FTP服务器
    此时FTP服务器虽可以PING通,但无法连接
    tcp_wrappers=YES

    chroot_local_user=YES
    #是否将所有用户限制在主目录,YES为启用 NO禁用.(该项默认值是NO,即在安装vsftpd后不做配置的话,ftp用户是可以向上切换到要目录之外的)
    allow_writeable_chroot=YES
    #选项chroot_local_user=YES 意味着本地用户将进入 chroot 环境,当登录以后默认情况下是其 home 目录。并且我们要知道,默认情况下,出于安全原因,VSFTPD 不允许 chroot 目录具有可写权限。然而,我们可以通过选项 allow_writeable_chroot=YES 来改变这个设置
    chroot_list_enable #是否启动限制用户的名单 YES为启用? NO禁用(包括注释掉也为禁用)
    chroot_list_file=/etc/vsftpd/chroot_list #是否限制在主目录下的用户名单,至于是限制名单还是排除名单,这取决于chroot_local_user的值,我们可以这样记忆: chroot_local_user总是一个全局性的设定,其为YES时,全部用户被锁定于主目录,其为NO时,全部用户不被锁定于主目录。那么我们势必需要在全局设定下能做出一些“微调”,即,我们总是需要一种“例外机制",所以当chroot_list_enable=YES时,表示我们“需要例外”。而”例外“的含义总是有一个上下文的,即,当”全部用户被锁定于主目录“时(即chroot_local_user=YES),"例外"就是:不被锁定的用户是哪些;当"全部用户不被锁定于主目录"时(即chroot_local_user=NO),"例外"“就是:要被锁定的用户是哪些。这样解释和记忆两者之间的关系就很清晰了!

    virtual_use_local_privs=YES
    #虚拟用户和本地用户有相同的权限

    banned_email_file=/etc/vsftpd/banner_emails
    #此文件用来输入email address,只有在deny_email_enable=YES时,才会使用到此档案。若是使用匿名登入,则会要求输入email address

    应用场景:搭建一个学校ftp,创建一个Teacher目录,只用于teacher账号的资料存储及使用方便,匿名用户无权限访问;创建 一个benet目录,并在其中建立各个班级的子目录文件夹,所有学生使用匿名用户登陆ftp服务器提交作业,要求权限只能上传不能下载;为了方便学生课后更好的学习,需要下载ftp服务器中的学习资料,需要Public目录下的所有文件都能下载。

    1、创建用户,并指定家目录
    [root@x101 home]# useradd teacher -d /ftproot
    [root@x101 home]# echo "p@SS123" | passwd --stdin teacher
    
    2、挂载硬盘,创建lvm逻辑卷,并永久挂载到/ftproot目录下
    [root@x101 home]# fdisk /dev/sdb
    Command (m for help): n
    Partition type:
       p   primary (1 primary, 0 extended, 3 free)
       e   extended
    Select (default p): 
    Using default response p
    Partition number (2-4, default 2): 
    Command (m for help): t     
    Selected partition 1
    Hex code (type L to list all codes): 8e
    Command (m for help): p
    
    Disk /dev/sdb: 5368 MB, 5368709120 bytes, 10485760 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk label type: dos
    Disk identifier: 0x485aacab
    
       Device Boot      Start         End      Blocks   Id  System
    /dev/sdb1            2048    10485759     5241856   8e  Linux LVM
    Command (m for help): w
    
    [root@x101 home]# lsblk 
    NAME                MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda                   8:0    0   20G  0 disk 
    ├─sda1                8:1    0  500M  0 part /boot
    ├─sda2                8:2    0    1G  0 part [SWAP]
    └─sda3                8:3    0 18.5G  0 part /
    sdb                   8:16   0    5G  0 disk 
    └─sdb1                8:17   0    5G  0 part 
    
    创建物理卷
    [root@x101 home]# pvcreate sdb1 /dev/sdb1
    创建卷组
    [root@x101 home]# vgcreate vg_sdb1 /dev/sdb1 
    创建逻辑卷
    [root@x101 home]# vgdisplay 
      --- Volume group ---
      VG Name               vg_sdb1
      System ID             
      Format                lvm2
      Metadata Areas        1
      Metadata Sequence No  2
      VG Access             read/write
      VG Status             resizable
      MAX LV                0
      Cur LV                1
      Open LV               1
      Max PV                0
      Cur PV                1
      Act PV                1
      VG Size               <5.00 GiB
      PE Size               4.00 MiB
      Total PE              1279
      Alloc PE / Size       1279 / <5.00 GiB
      Free  PE / Size       0 / 0   
      VG UUID               swSkuE-7RoQ-Qy6f-spus-QdHk-Plch-2SPHgQ
       
    [root@x101 home]# echo "1279*4"|bc
    5116
    [root@x101 home]# lvcreate -n lv_sdb1 -L 5116M vg_sdb1 
    # -n用于指定逻辑卷名称,-L 指定创建的逻辑卷大小 [root@x101 home]# mkfs.ext4 /dev/vg_sdb1/lv_sdb1 [root@x101 home]# mount /dev/vg_sdb1/lv_sdb1 /ftproot [root@x101 home]# echo "/dev/vg_sdb1/lv_sdb1 /ftproot ex4 defaults 0 0">> /etc/fstab [root@x101 home]# mount -a [root@x101 home]# df -Th

      

     

    3、根据要求,安装并配置ftp服务器ftp根目录下有三个目录:
    
    Benet要求所有学员能上传作业(上传文件不能是:*.rmvb,*.mp3,*.avi,*.exe)但不能下载,且要求teacher能给该目录授权并下载学员作业;
    
    Public要求共享学习资料,学员能下载不能上传,teacher能上传下载;
    
    Teacher目录只有teacher能访问,其他所有人都无法访问。
    访问测试并验证。
    主配置文件添加的配置项:
    
    anon_upload_enable=YES
    
    #anon_mkdir_write_enable=NO
    
    chown_uploads=YES
    
    chown_username=teacher
    
    chroot_local_user=YES
    
    anon_root=/ftproot
    
    allow_writeable_chroot=YES
    deny_file={*.rmvb,*.mp3,*.avi,*.exe} 
    实施步骤: 
    [root@x101 home]# yum -y install vsftpd
    [root@x101 home]# vim /etc/vsftpd/vsftpd.conf
    添加如下内容: anon_upload_enable=YES 
    #anon_mkdir_write_enable=NO 
    chown_uploads=YES 
    chown_username=teacher 
    chroot_local_user=YES 
    allow_writeable_chroot=YES 
    local_root=/ftproot 
    anon_root=/ftproot
    deny_file={*.rmvb,*.mp3,*.avi,*.exe} 
    [root@x101 home]# chown teacher.teacher /ftproot/ 
    #给/ftproot目录授权teacher用户 
    [root@x101 home]# rm -rf /ftproot/* 
    [root@x101 home]# chmod 755 /ftproot/ 
    [root@x101 home]# systemctl start vsftpd;systemctl enable vsftpd 
    测试: 
    [root@x112 ~]# lftp teacher:123@192.168.0.101 
    lftp teacher@192.168.0.101:~> ls 
    ls: Login failed: 500 OOPS: vsftpd: refusing to run with writable root inside chroot() 
    [root@x101 vsftpd]# chmod a-w /ftproot/ 
    [root@x101 vsftpd]# lftp teacher@192.168.0.101
    :~> ls 
    drwx------ 2 0 0 16384 Aug 17 02:31 lost+found lftp teacher@192.168.0.101:/> 
    [root@x101 vsftpd]# yum list vsftpd 
    Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile 
    * base: mirrors.aliyun.com 
    * extras: mirrors.aliyun.com 
    * updates: mirrors.aliyun.com Installed Packages vsftpd.x86_64 3.0.2-22.el7 @rhel 
    #vsftpd3.0版本及之后的版本,默认关闭chroot囚禁家目录的写权限,才能够进行访问或者添加此项allow_writeable_chroot=YES 
    

      

    windows访问ftp,使用teacher用户登录并创建Benet、Public、Teacher目录,并在Benet5.2下建立班级目录并授权,上传资源到Public、Teacher目录,关闭窗口。

    [root@x101 benet]# chown ftp benet /1班
    [root@x101 benet]# chown ftp benet /2班
    [root@x101 benet]# chown ftp benet /3班
    [root@x101 ftproot]# ll -R
    .:
    total 12
    drwxr-xr-x 5 teacher teacher 4096 Aug 17 19:13 benet
    drwxr-xr-x 2 teacher teacher 4096 Aug 17 19:15 Public
    drwx------ 2 teacher teacher 4096 Aug 17 19:15 Teacher
    
    ./benet:
    total 12
    drwxr-xr-x 2 ftp teacher 4096 Aug 17 19:18 1班
    drwxr-xr-x 2 ftp teacher 4096 Aug 17 19:49 2班
    drwxr-xr-x 2 ftp teacher 4096 Aug 17 19:11 3班
    
    ./benet/1班:
    total 16
    -rw------- 1 teacher ftp 14848 Aug 17 19:18 三班_李勇_学号2010230578.doc
    
    ./benet/2班:
    total 44
    -rw------- 1 teacher ftp 14848 Aug 17 19:49 三班_李勇_学号2010230578.doc
    -rw------- 1 teacher ftp 26112 Aug 17 19:21 租房合同1.doc
    
    ./benet/3班:
    total 0
    
    ./Public:
    total 16
    -rw-r--r-- 1 teacher teacher 422 Aug 17 19:14 LXE文件播放说明.txt
    -rw-r--r-- 1 teacher teacher 6656 Aug 17 19:15 新建 XLS 工作???xls
    -rw-r--r-- 1 teacher teacher 531 Aug 17 19:15 新建文本文档 (3).txt
    
    ./Teacher:
    total 32
    -rwx------ 1 teacher teacher 171 Aug 17 19:15 linux网络排错.txt
    -rwx------ 1 teacher teacher 26112 Aug 17 19:15 租房合同1.doc
    [root@x101 ftproot]#
    [root@x101 home]# chmod 700 /ftproot/Teacher/ #授权 

      

      

    访问测试: 
    匿名访问,上传作业、下载作业、下载Public中的资源、访问teacher。

    匿名用户下载Public中的资源,正常下载,但是不能上传。
    匿名用户访问Teacher目录失败,无权限访问

    用户teacher登入 给teacher文件夹创建的权限 匿名用户访问teacher文件夹 没有权限(上面的命令生效)

    
    
    配置汇总如下:
    
    [root@x101 ftproot]# grep -Ev "^[#|$]" /etc/vsftpd/vsftpd.conf
    anonymous_enable=YES
    local_enable=YES
    write_enable=YES
    local_umask=022
    anon_umask=066                #可以不需要(默认)
    anon_upload_enable=YES
    anon_world_readable_only=YES        #可以不需要(默认)
    anon_root=/ftproot
    local_root=/ftproot
    allow_writeable_chroot=YES
    anon_mkdir_write_enable=NO
    dirmessage_enable=YES
    xferlog_enable=YES
    connect_from_port_20=YES
    chown_uploads=YES
    chown_username=teacher
    xferlog_std_format=YES
    chroot_local_user=YES
    listen=NO
    listen_ipv6=YES
    
    pam_service_name=vsftpd
    userlist_enable=YES
    tcp_wrappers=YES
    deny_file={*.rmvb,*.mp3,*.avi,*.exe}
    

      

      

      

     

      

  • 相关阅读:
    SpringMvc 框架
    面试:你最大的长处和弱点分别是什么?这些长处和弱点对你在企业的业绩会有什么样的影响?
    线程、并发、并行、进程是什么,以及如何开启新的线程?
    面向对象三大特性
    一台客户端有三百个客户与三百个客户端有三百个客户对服务器施压,有什么区别?
    JavaScript 引擎
    Spring Data JPA简介 Spring Data JPA特点
    redo log 有什么作用?
    Spring的简介和优点?
    学习笔记——享元模式Flyweight
  • 原文地址:https://www.cnblogs.com/xiaofeng666/p/13516305.html
Copyright © 2020-2023  润新知