IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    Linux FTP多用户多目录

    MatthewLXJ发表于 2021-03-18 08:52:00
    love 0

    考虑到服务器文件安全性,在此需要开设多类不同权限的账户。

    一、用户管理

    1. USER

    此类用户只具有上传权限,取消下载权限与删除权限。

    2. Admin

    此类用户具有上传与下载权限,取消删除权限。

    二、目录设置

    1. USER

    Virtuoso工程的建立目录与PDK environment File(JAZZ.cshrc)中$PROJ_ROOT需要统一,因此采取一个用户一个单独目录的方案实现。
    系统中建立用户

    adduser user1
    passwd user1
    mkdir /home/user1/project 
    mkdir /home/user2/project

    project作为工程目录

    cp JAZZ.cshrc /home/user1/project
    cp JAZZ.cshrc /home/user1/project
    vi JAZZ.cshrc

    修改user1配置文件中setenv PROJ_ROOT /home/user1/project,在此目录下新建JAZZ工程

    2. Admi

    Administrator账户用户服务器关键仿真文件的下载与管理,Admin账户能够下载所有USER目录下的文件。
    系统中建立用户

    adduser admin1
    passwd admin1

    三、配置vsftpd

    1. 安装vsftpd

    yum -y install vsftpd
    rpm -ql vsftpd

    配置文件路径/etc/vsftpd/

    service vsftpd start

    2. 虚拟用户

    首先建立一个本地系统用户同于管理;

    useradd -d /home/download abcde -s /sbin/nologin

    子目录即为
    /home/user1/project与/home/user2/project

    3. 创建用户数据文件

    一行账号一行密码,不能存在空行与空格vi /etc/vsftpd/userlist.txt

    user1
    123456
    user2
    123456
    admin
    12345678

    生成数据文件:

    yum -y install db4* 
    db_load -T -t hash -f /etc/vsftpd/userlist.txt /etc/vsftpd/userlist.db

    生成之后userlist.txt可用于备份

    4. 修改数据文件权限

    chmod 600 /etc/vsftpd/userlist.txt

    5. 修改pam配置

    vi /etc/pam.d/vsftpd

    将文件中内容全部注释加入两行

    auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/user_list
    account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/user_list

    64为操作系统文/lib64,32为操作系统为/lib

    6.创建系统本地用户abcde对应的虚拟用户

    虚拟用户需要通过本地系统用户来实现各种操作,因此要放在系统用户的同名文件夹下。

    mkdir /etc/vsftpd/abcde
    cd /etc/vsftpd/abcde

    修改user1权限:

    cat >>user1<<EOF
    anon_world_readable_only=NO
    write_enable=YES
    download_enable=NO
    anon_mkdir_write_enable=YES
    anon_upload_enable=YES
    anon_other_write_enable=YES
    cmds_denied=DELE
    local_root=/home/user1/project
    EOF

    修改user2权限:

    cat >>user2<<EOF
    anon_world_readable_only=NO
    write_enable=YES
    download_enable=NO
    anon_mkdir_write_enable=YES
    anon_upload_enable=YES
    anon_other_write_enable=YES
    cmds_denied=DELE
    local_root=/home/user2/project
    EOF

    修改admin权限:

    cat >>admin<<EOF
    anon_world_readable_only=NO
    write_enable=YES
    anon_mkdir_write_enable=YES
    anon_upload_enable=YES
    anon_other_write_enable=YES
    local_root=/home/
    EOF

    user1与user2均删除下载权限与文件删除权限,admin保留下载权限。

    7. 配置文件vsftpd.conf

    vi /etc/vsftpd/vsftpd.conf

    修改内容如下

    listen=YES
    listen_ipv6=NO
    connect_from_port_20=YES
    anonymous_enable=NO
    local_enable=YES
    write_enable=NO
    anon_upload_enable=NO
    anon_mkdir_write_enable=NO
    anon_other_write_enable=NO
    chroot_local_user=YES
    chroot_list_enable=YES
    chroot_list_file=/etc/vsftpd/chroot_list
    guest_enable=YES
    guest_username=abcde
    virtual_use_local_privs=YES
    allow_writeable_chroot=YES
    pam_service_name=vsftpd
    user_config_dir=/etc/vsftpd/abcde
    local_umask=477
    xferlog_enable=YES
    xferlog_file=/var/log/vsftpd.log

    vi /etc/vsftpd/chroot_list空白文件
    添加local_umask=477为删除下载权限指令

    service vsftpd restart

    四、日常维护

    1. 更新帐号,先修改userlist.txt,再执行db_load

    db_load -T -t hash -f /etc/vsftpd/userlist.txt /etc/vsftpd/userlist.db

    2. 更新/etc/vsftpd/abcde/下不同用户对应的权限

    3. 重启vsftpd

    service vsftpd restart

    注:
    上述完成后FTP无法按照权限读或写,修改文件夹权限:

    chown -R abcde: /home/user1/project
    chown -R abcde: /home/user2/project

    切记在此不能之间图省事将 /home 权限设置为abcde,会导致无法登录远程桌面;

    chmod 755 /home/user1/project
    chmod 755 /home/user2/project


沪ICP备19023445号-2号
友情链接