FTP服务-实现vsftpd虚拟用户

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

 

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

一、建立用户数据库文件

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

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

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

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

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

三、建立linux用户和ftp目录(这个帐号未来虚拟帐号映射成它)

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

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

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

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

把匿名写权限打开vim

clipboard

四、修改pam配置文件

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

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

注意:这个vusers名字必定要和第二步中建立的xxxx.db名字同样安全

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

五、让主配置文件知道你要用本身修改的pam模块

clipboard

备注:放在vusers.txt里面的就是合法用户,能够登录bash

六、把全部系统帐号映射成咱们建立的vftpuser帐号,并关闭linux系统帐号登录

vim /etc/vsftpd/vsftpd.conf服务器

guest_enable=YES
guest_username=vftpuser

 

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

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有匿名写权限

 

八、让两个虚拟用户进来时看到的文件夹不同

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服务器,一台作数据库服务器

1、安装所须要包和包组

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

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/

 

一、解压缩pam模块

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

cd pam_mysql-0.7RC1/

二、编译

[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

三、建立数据库和表

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

三、准备一个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()函数加密

 

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

vim /etc/vsftpd/vsftpd.conf

clipboard

五、映射为系统帐号vftpuser

vim /etc/vsftpd/vsftpd.conf

guest_enable=YES
guest_username=vftpuser

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

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

六、让登录的帐号权限不同(针对每一个用户都有本身的配置文件)

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

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

相关文章
相关标签/搜索