• FTP服务-实现vsftpd虚拟用户


    前几篇介绍了基础,这篇将具体实现几个案例

    实现基于文件验证的vsftpd虚拟用户,每个用户独立一个文件夹

    1、创建用户数据库文件

    vim /etc/vsftpd/vusers.txt
    qq
    centos
    momo
    centos

    备注:文件内容格式为奇数行为用户名,偶数行为密码

    2、设置权限与编译此文件

    cd /etc/vsftpd/
    db_load -T -t hash -f vusers.txt vusers.db ##编译文件
    chmod 600 vusers.db 

    备注:修改权限是为了安全

    3、创建linux用户和ftp目录(这个账号将来虚拟账号映射成它)

    useradd -s /sbin/nologin vftpuser
    chmod 555 /home/vftpuser/  ###把用户家目录的写权限去掉

    备注:映射账号对根要没有写权限

    mkdir upload  ##创建上传用的文件夹
    chown vftpuser upload/  

    备注:把这个文件夹的所属人改为vftpuser用户,次用户虽然对 /home/vftpuser/ 就也是根,没有写权限,但是对根下的目录有写权限。

    把匿名写权限打开

    clipboard

    4、修改pam配置文件

    vim /etc/pam.d/vusers.db  #这个名字叫什么都可

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

    注意:这个vusers名字一定要和第二步中创建的xxxx.db名字一样

    account required pam_userdb.so db=/etc/vsftpd/vusers

    5、让主配置文件知道你要用自己修改的pam模块

    clipboard

    备注:放在vusers.txt里面的就是合法用户,可以登陆

    6、把所有系统账号映射成我们创建的vftpuser账号,并关闭linux系统账号登陆

    vim /etc/vsftpd/vsftpd.conf

    guest_enable=YES
    guest_username=vftpuser

    7、虚拟用户建立独立的配置文件

    vim /etc/vsftpd/vsftpd.conf

    user_config_dir=/etc/vsftpd/vftpuser.d/

    创建上面这个文件夹创建出来

    mkdir /etc/vsftpd/vftpuser.d/

    在这个文件夹目录下创建针对虚拟用户的配置

    [root@centos7_77 vftpuser.d]# cat > qq
    anon_upload_enable=YES
    anon_mkdir_write_enable=YES      
    备注:意思是说虚拟用户qq有匿名写权限

    8、让两个虚拟用户进来时看到的文件夹不一样

    vim /etc/vsftpd/vftpuser.d/qq

    local_root=/data/qq

    备注:要是这个文件夹不存在就创建

    mkdir /data/qq

    备注:在qq目录下创建个文件用于测试

    touch /data/qq/qq.txt

    重启,测试

    clipboard

    备注:想要增加用户,在vusers.txt文件中写入,再生成db文件

    实现:基于MYSQL验证的vsftpd虚拟用户

    说明:本实验在两台CentOS主机上实现,一台做为FTP服务器,一台做数据库服务器

    一、安装所需要包和包组

    在数据库服务器上安装包:

    Centos7:在数据库服务器上安装

    yum –y install mariadb-server
    systemctl start mariadb.service
    systemctl enable mariadb

    Centos6:在数据库服务器上安装

    yum –y install mysql-server

    在FTP服务器上安装vsftpd和pam_mysql包

    centos6:pam_mysql由epel6的源中提供

    yum install vsftpd pam_mysql

    centos7:无对应rpm包,需手动编译安装

    yum -y groupinstall "Development Tools"

    yum -y install mariadb-devel pam-devel vsftpd

    下载pam_mysql-0.7RC1.tar.gz

    https://sourceforge.net/projects/pam-mysql/

    1、解压缩pam模块

    [root@centos7_77 ~]# tar xvf pam_mysql-0.7RC1.tar.gz

    cd pam_mysql-0.7RC1/

    2、编译

    [root@centos7_77 pam_mysql-0.7RC1]# ./configure --with-pam-mods-dir=/lib64/security --with-mysql=/usr --with-pam=/usr

    备注:这样需要注意指定的位置,mysql

    现在还没有pam_mysql.so

    clipboard

    开始make

    [root@centos7_77 pam_mysql-0.7RC1]# make && make install

    clipboard

    3、创建数据库和表

    1)创建ftpdb数据库

    MariaDB [(none)]> create database ftpdb;

    2)授权一个用户可以连这个数据库(有读权限就行)

    MariaDB [(none)]> grant select on ftpdb.* to vsftpd@'localhost' identified by 'centos';

    3)创建一个表

    MariaDB [ftpdb]> create table users (id INT AUTO_INCREMENT NOT NULL PRIMARY KEY, name CHAR(50) BINARY NOT NULL, password CHAR(48) BINARY NOT NULL );

    4)往表里增加虚拟用户

    MariaDB [ftpdb]> INSERT INTO users(name,password) values('gg',password('centos'));

    MariaDB [ftpdb]> INSERT INTO users(name,password) values('mm',password('centos'));

    clipboard

    3、准备一个pam配置文件(在FTP服务器上建立pam认证所需文件)

    cd /etc/pam.d/
    vim vsftpd.mysql
    
    auth required pam_mysql.so user=vsftpd passwd=centos host=localhost db=ftpdb table=users usercolumn=name passwdcolumn=password
     crypt=2
    account required pam_mysql.so user=vsftpd passwd=centos host=localhost db=ftpdb table=users usercolumn=name passwdcolumn=passw
    ord crypt=2

    备注:

    配置字段说明

    • auth 表示认证

    • account 验证账号密码正常使用

    • required 表示认证要通过

    • pam_mysql.so模块是默认的相对路径,是相对/lib64/security/路径而言,也可以写绝

    对路径;后面为给此模块传递的参数

    • user=vsftpd为登录mysql的用户

    • passwd=magedu 登录mysql的的密码

    • host=mysqlserver mysql服务器的主机名或ip地址

    • db=vsftpd 指定连接msyql的数据库名称

    • table=users 指定连接数据库中的表名

    • usercolumn=name 当做用户名的字段

    • passwdcolumn=password 当做用户名字段的密码

    • crypt=2 密码的加密方式为mysql password()函数加密

    4、让ftp服务器知道调用我们配置的pam模块配置文件

    vim /etc/vsftpd/vsftpd.conf

    clipboard

    5、映射为系统账号vftpuser

    vim /etc/vsftpd/vsftpd.conf

    guest_enable=YES
    guest_username=vftpuser

    备注:意思说,启动guest用户,系统用户映射为guest用户,而guest用户是vftpuser,

    别忘了去掉此用户的家目录的读W权限

    6、让登陆的账号权限不一样(针对每个用户都有自己的配置文件)

    指定用户存放配置的文件夹

    vim /etc/vsftpd/vsftpd.conf
    user_config_dir=/etc/vsftpd/vftpuser.d
    cd /etc/vsftpd/vftpuser.d
    [root@centos7_77 vftpuser.d]# cat > mm
    local_root=/data/mm
    cat > gg
    local_root=/data/gg

    备注:要想gg mm 充当虚拟用户的根必须没有写权限

    [root@centos7_77 data]# chmod a=rx mm
    [root@centos7_77 data]# chmod a=rx gg
    再gg、mm目录下创建个文件好测试
    [root@centos7_77 gg]# touch gg.txt
    [root@centos7_77 mm]# touch mm.txt
    

    重启

    测试

    clipboard

    clipboard

    备注:要想让gg用户有写权限,在/etc/vsftpd/vftpuser.d/gg文件中加入

    anon_upload_enable=YES

    anon_mkdir_write_enable=YES

    还要对/data/gg这个目录要有写权限

    setfacl -m u:vftpuser:rwx /data/gg

  • 相关阅读:
    Python修饰器 ,控制授权,通过ini配置文件 使用密钥 给函数限制试用期和过期后试用次数
    excel vba 自定义函数 使用正则表达式提取字符串
    python 值比较判断,np.nan is np.nan 却 np.nan != np.nan ,pandas 单个数据框/单元格 值判断nan
    python 读取中文CSV 'gbk' codec can't decode bytes in position 2-3:illegal multibyte sequence
    python ipython [Errno 22] invalid mode ('rb') or filename 、IDE工作路径
    windows下 python 添加PYTHONPATH 环境变量
    pandas(python2) 读取中文数据,处理中文列名
    qq邮箱 微信提醒不通知
    python :import error
    python推荐淘宝物美价廉商品 2.0
  • 原文地址:https://www.cnblogs.com/xsuid/p/9537235.html
Copyright © 2020-2023  润新知