• linux-vsftp虚拟多用户


    目录

    1.安装vsftp

    2.安装DB工具,能转化普通文件为vsftpd识别数据库加密文件

    3.创建登录虚拟用户的名单

    4.加密文件

    6.需要修改vsftpd的配置文件

    7.修改vsftp的配置文件,加载支持虚拟用户模式

    8.针对不同用户开启不同权限

    9.重启服务

    10.测试


    安装vsftp,并设置虚拟用户登录

    1.安装vsftp

    yum install vsftpd


    2.安装DB工具,能转化普通文件为vsftpd识别数据库加密文件

    yum install db4 db4-utils -y

    3.创建登录虚拟用户的名单

    1. cd /etc/vsftpd/
    2. vim ftp_user.txt

    切换到etc目录里,创建密码文件(必须在/etc/里)

    查看创建的密码文件(奇数是用户,偶数是密码)


    4.加密文件

    由于这样普通文件很不安全,vsftpd也无法识别改txt的文件数据,因此还得用db_load命令

    对于我们刚刚创建的ftp_user.txt文件进行加密

    1. db_load -T -t hash -f /etc/vsftpd/ftp_user.txt /etc/vsftpd/ftp_user.db
    2. chmod 600 ftp_user.db

    删除一下源明文文件,防止安全问题

    1. [root@localhost vsftpd]# rm ftp_user.txt
    2. rm: remove regular file ‘ftp_user.txt’? y

    5.真实用户映射

    创建当虚拟用户登录ftp之后进入文件夹的路径,且和linux中的用户做一个映射关系,防止虚拟用户登录有,创建了文件夹,但是系统没有此用户会报错一个问题。

    创建一个系统用户和虚拟用户做映射,且不需要家目录,禁止用户登录shell

    useradd -d /var/ftpdir/ -s /sbin/nologin virtual_user
    

    检查一下用户的家目录

    ll -ld /var/ftpdir/

    这个用户需要做ftp虚用户的映射,所以如果家目录只允许这个真实用户访问,那么会有权限问题,我们把他的家目录权限修改一下

    1. [root@localhost vsftpd]# chmod -Rf 755 /var/ftpdir/
    2. [root@localhost vsftpd]# ll -ld /var/ftpdir/
    3. drwxr-xr-x 3 virtual_user virtual_user 78 Oct 15 17:33 /var/ftpdir/

    修改virtual_user用户添加到ftpsuer文中,增大系统安全,该操作不会影响虚拟用户的操作

    echo "virtual_user" >> /etc/vsftpd/ftpusers

    6.需要修改vsftpd的配置文件

    添加一个支持虚拟用户验证的pam文件,pam是一组安全机制的模块,认证文件路径在/etrc/pam.d/vsftp

    1. [root@localhost vsftpd]# echo "virtual_user" >> /etc/vsftpd/ftpusers
    2. [root@localhost vsftpd]# vim /etc/pam.d/vsftpd
    3. [root@localhost vsftpd]# vim /etc/pam.d/vsftpd
    4. [root@localhost vsftpd]# cat /etc/vsftpd/ftp_user.db
    5. ftp_user.db ftpusers user_list vsftpd.conf vsftpd_conf_migrate.sh
    6. [root@localhost vsftpd]# cat /etc/pam.d/vsftpd
    7. auth required pam_userdb.so db=/etc/vsftpd/ftp_user
    8. account required pam_userdb.so db=/etc/vsftpd/ftp_user

    7.修改vsftp的配置文件,加载支持虚拟用户模式

    我们看下改之前的配置

    配置vsftp文件

    anonymous_enable=NO— (不允许匿名用户访问)

    local_root— (设置ftp主目录)

    pasv_enable=YES— (开启被动数据传输模式)

    guest_enable=YES—(开启虚拟用户模式)

    guest_username— (虚拟用户实体名称)

    user_config_dir— (虚拟用户权限文件目录位置)

    allow_writeable_chroot=YES—(centos7必须添加)

    anonymous_enable=NO

    local_root=/var/ftpdir

    pasv_enable=YES

    guest_enable=YES

    guest_username

    user_config_dir

    allow_writeable_chroot=YES

    添加后

    1. vim /etc/vsftpd/vsftpd.conf
    2. grep -Ev "^#|^$" /etc/vsftpd/vsftpd.conf


    8.针对不同用户开启不同权限

    anon_world_readable_only=NO

    write_enable=YES

    anon_mkdir_write_enable=YES

    anon_other_write_enable=YES

    anon_upload_enable=YES

    local_root=/home/CodeTiger

    write_enable=NO

    anon_upload_enable=YES

    anon_mkdir_write_enable=YES

    anon_world_readable_only=NO

    download_enable=NO

    local_root=/home/CodeTiger

    ou : 该用户,允许他能够上传,新建,修改,查看,删除等权限

    ftpuser:只读权限

    需要修改vsftpd文件,定义user_config_dir参数即可

    1. mkdir /etc/vsftpd/virtual_user_dir
    2. cd /etc/vsftpd/virtual_user_dir
    3. vim ou

    添加

    1. local_root=/home/ftpuser/ou # 目录修改成ou需要设置ftp的目录
    2. write_enable=YES
    3. anon_world_readable_only=YES
    4. anon_upload_enable=YES
    5. anon_mkdir_write_enable=YES
    6. anon_other_write_enable=YES

    给ftpuser添加只读权限

    1. [root@localhost ~]# cat /etc/vsftpd/virtual_user_dir/ftpuser
    2. local_root=/var/ftpdir/ftpuser # 目录修改成ftpuser需要设置ftp的目录
    3. write_enable=NO
    4. anon_world_readable_only=YES
    5. anon_upload_enable=NO
    6. anon_mkdir_write_enable=NO
    7. anon_other_write_enable=NO

    记得要创建用户的家目录

    1. mkdir -p /var/ftpdir/ou
    2. mkdir -p /var/ftpdir/ftpuser
    3. chown -R virtual_user:virtual_user /var/ftpdir

    修改下配置文件

    vim /etc/vsftpd/vsftpd.conf

    添加这个

    user_config_dir=/etc/vsftpd/virtual_user_dir

    9.重启服务

    1. [root@localhost virtual_user_dir]# systemctl restart vsftpd
    2. [root@localhost virtual_user_dir]# systemctl status vsftpd.
    3. Unit vsftpd..service could not be found.
    4. [root@localhost virtual_user_dir]# systemctl status vsftpd.service
    5. ● vsftpd.service - Vsftpd ftp daemon
    6. Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; disabled; vendor preset: disabled)
    7. Active: active (running) since Sun 2023-10-15 19:54:31 CST; 11s ago
    8. Process: 36959 ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (code=exited, status=0/SUCCESS)
    9. Main PID: 36961 (vsftpd)
    10. Tasks: 1
    11. CGroup: /system.slice/vsftpd.service
    12. └─36961 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
    13. Oct 15 19:54:30 localhost.localdomain systemd[1]: Starting Vsftpd ftp daemon...
    14. Oct 15 19:54:31 localhost.localdomain systemd[1]: Started Vsftpd ftp daemon.
    15. [root@localhost virtual_user_dir]#

    10.测试

    ou用户以创建文件和文件夹

    ftpuser不可以创建文件和文件夹

    他只有读取的权限没办法创建和删除文件和目录

  • 相关阅读:
    win10解决,你没有权限打开该文件,请向文件的所有者或管理员申请权限
    强推这款键盘利器(Keychron),这次我彻底入坑了
    C#实现在企业微信内创建微信群发送群消息
    智能计算之蚁群算法(ACO)介绍
    在外包干了2年,我悟了...
    数分面试(一)----与业务相关
    prism.js使用图文教程
    [WLAN]在Softap manager中连接、断开时,添加广播
    【python爬虫】批量识别pdf中的英文,自动翻译成中文上
    Mybatis与Mybatis-Plus(注解与Xml)(单表与多表)
  • 原文地址:https://blog.csdn.net/bmxch/article/details/134098692