基于虚拟用户控制的ftp服务

FTP作为最常见的文件共享服务,可提供文件的上传,下载等服务;其用户可分为三类:

匿名用户:即不需要用户账号与密码即可登录FTP服务器,此时登录用户将会被映射为系统上的ftp用户。

系统用户:即用FTP服务器上的用户账号与密码登录FTP服务器。此种方法虽然在一定程度上对登录做出了限制,但由于系统账号的相关权限,则增大了FTP服务器的系统风险;

虚拟用户:用户需要利用专为FTP服务创建的用户账号与密码进行登录;如此,既能限制FTP的登录用户,又尽量保证了FTP服务器的系统安全;

下面我们就以CentOS7为例来实现基于mysqlFTP服务设置虚拟用户登录。

1、环境搭建;

首先,我们需要在系统上安装vsftpdmariadb-server,由于需要实现虚拟用户认证,所以我们还需要安装pam

yum –y install vsftpd mariadb-server pam

由于基于mysql数据库实现虚拟用户认证,所以我们需要将虚拟用户的相关数据存放在mysql中,如此一来,我们还需要安装pam_mysql。由于CentOS7上没有pam_mysqlrpm包,所以我们需要编译安装。具体步骤如下:

yum –y groupinstall “Development Tools” “Server Platform Development”      #安装开发包组    
yum –y install –y pam-devel mairadb-devel                                               #安装所需开发包
./configure –with-pam=/usr –with-mysql=/usr –with-pam-mods-dir=/usr/lib64/security
make
mke install

至此,我们需要的环境搭建完成。

2vsftpd常用选项;

vsftpd的配置文件主要为/etc/vsftpd/vsftpd.conf,我们以用户相关作为分类来了解一下其常见配置;

匿名用户相关配置:

anonymous_enable=YES|NO                #是否允许匿名用户登录;    
anon_upload_enable=YES|NO               #是否允许匿名用户上传;
anon_mkdir_write_enable=YES|NO            #是否允许匿名用户创建文件夹;
anon_other_write_enable=YES|NO            #是否允许匿名用户拥有其他写权限,如删除、新建文件等;

系统用户相关配置:

local_enable=YES|NO             #是否允许系统用户登录;    
write_enable=YES|NO             #是否允许系统用户具有写权限;

3mysql相关配置;

我们需要在mysql中配置vsftpd服务所需的一些数据库及内容;

a、启动mysql服务;

systemctl start mariadb.service

b、初始化mysql

mysql_secure_installation

c、创建所需数据库及表格;

mysql> create database vsftpd;        
mysql> use vsftpd;
mysql> create table user (id int unsigned not null auto_increment primary key,name char(10) not null,password char(48));
mysql> insert into user (name,password) values (‘tom’,password(‘mageedu’)),(‘jerry’,password(‘mageedu’));
mysql> grant all on vsftpd.* to ‘vsftpd’@’localhost’ identified by ‘mageedu’;
mysql> grant all on vsftpd.* to ‘vsftpd’@’127.0.0.1’ identified by ‘mageedu’;
mysql> flush privileges;

可以看到,我们创建了tomjerry两个用户,且密码都为mageedu,如此,我们在mysql中需要创建的相关数据已经完成;

4、创建所需用户与目录;

由于FTP的虚拟用户机制是将虚拟用户映射为本机的一个来宾用户,因此我们先在本机新建一个用户作为虚拟用户的映射用户;

ueradd –d /ftproot vuser        
chown root:root /ftproot
mkdir /ftproot/{upload,pub}
setfacl –m u:vuser:rwx /ftproot/upload

5、配置pamvsftpd

首先我们需要修改vsftpd的几项配置选项如下:

pam_server_name=vsftpd.mysql                 #指定pam的相关配置文件;        
guest_enable=YES                       #启用来宾账户;
guest_username=vuser                     #指定虚拟用户映射的来宾账户名;
user_config_dir=/etc/vsftpd/user_conf             #指定虚拟用户配置文件目录;

然后我们在/etc/pam.d/目录下新建文件vsftpd.myslq,内容如下:

auth required /usr/lib64/security/pam_mysql.so user=vsftpd passwd=mageedu host=127.0.0.1 db=vsftpd table=user usercolumn=name passwdcolumn=password crypt=2        
account required /usr/lib64/security/pam_mysql.so user=vsftpd passwd=mageedu host=127.0.0.1 db=vsftpd table=user usercolumn=name passwdcolumn=password crypt=2

下面即为此文件中一些字段的意义:

    user:连接mysql服务器的用户名,此用户要有权限访问认证vsftpd服务的数据库;

    passwd:连接mysql服务器用户的密码;

    hostmysql服务器主机地址;

    db:认证vsftpd服务的数据库名称;

    table:存放了用户和密码的表;

    usercolumn:用户名对应的字段;

    passwdcolumn:密码对应的字段;

    crypt:密码加密方法

6、创建各虚拟用户配置文件

首先我们新建vsftpd.conf配置文件中指定的用户配置文件存放目录。

mkdir /etc/vsftpd/user_conf

然后在此目录下创建tomjerry两个虚拟用户同名的权限配置文件。对于权限配置文件我们可根据需要给予相应的权限,在此,我们为两位用户给予相同的权限,内容如下:

vim –o /etc/vsftpd/user_conf/{tom,jerry}        
anon_upload=YES
anon_mkdir_enable=YES
anon_other_enable=YES

至此,我们所需的服务以配置完毕。

设置好防火墙与SELinux后,启动服务即可。

iptables –F        
setenforce 0
systemctl start vsftpd

 

原创文章,作者:luoliumeng,如若转载,请注明出处:http://www.178linux.com/53777

(0)
luoliumengluoliumeng
上一篇 2016-10-23
下一篇 2016-10-23

相关推荐

  • DNS 子域授权和高级应用

    DNS 基础主从部分 http://www.178linux.com/12395 实验环境:     系统环境:Centos 6.7     关闭SELINUX:setenforce 0 #立即生效   (实际是宽容模式)     配置防火墙:iptables…

    Linux干货 2016-11-15
  • n25_第一周作业

    1.描述计算机的组成及其功能。 主要分为五个部分: 1. 控制器(Control):是整个计算机的中枢神经,其功能是对程序规定的控制信息进行解释,根据其要求进行控制,调度程序、数据、地址,协调计算机各部分工作及内存与外设的访问等。 2. 运算器(Datapath):运算器的功能是对数据进行各种算术运算和逻辑运算,即对数据进行加工处理。 3. 存储器(Memo…

    Linux干货 2016-12-01
  • 马哥教育网络班22期+第9周课程练习

    1、写一个脚本,判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin);分别这两类用户的个数;通过字符串比较来实现;            [root@test ~]# vim&nbsp…

    Linux干货 2016-10-24
  • 搭建yum仓库

    搭建yum仓库 背景: 在学习完如何搭建yum仓库后,觉得搭建yum仓库很有意义,将自己学习中的感悟和理解记录下来,以备日后复习。 介绍: yum:全称是Yellow dog Updater, Modified。它是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可…

    2017-08-05
  • Linux文件系统

    1、Linux文件系统层级标准 为什么Linux的不同发行版中的目录结构基本上都一样? Linux有一个组织叫LSB定义的Linux发行版基础目录名称命名法则及功用规定,这种标准叫做 FHS(Filesystem Hierarchy Standard),文件系统层级标准。 /boot:系统引导启动时要加载的静态文件:kernel, initramfs(ini…

    Linux干货 2016-10-29
  • 文件管理相关

     rename:对文件重命名     rename [options] expression replacement file        示例:          # rename -v cut.exe cut.exe3 cut.exe…

    Linux干货 2017-02-25