实现基于文件验证的vsftpd虚拟用户--(一台)

一、创建用户数据库文件

vim /etc/vsftpd/vuser

cd /etc/vsftpd/

db_load -T -t hash -f vusers.txt vusers.db //利用文本生成虚拟用户的数据库文件

chmod 600 vusers.db //实现基于文件验证的vsftpd虚拟用户

二、创建用户和访问FTP目录

useradd -d /var/ftproot -s /sbin/nologin vuser

chmod +rx /var/ftproot/

centos7 还需要执行以下操作:

chmod -w /var/ftproot/

mkdir /var/ftproot/upload

setfacl -m u:vuser:rwx /var/ftproot/upload

三、创建pam配置文件

vim /etc/pam.d/vsftpd.db

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

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

四、指定pam配置文件

vim /etc/vsftpd/vsftpd.conf

guest_enable=YES

guest_username=vuser

pam_service_name=vsftpd.db

五、SELinux设置:

禁用SELinux 或者 setsebool -P ftpd_full_access 1

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

mdkir /etc/vsftpd/vusers.d/ //创建配置文件存放的路径

vim /etc/vsftpd/vsftpd.conf

user_config_dir=/etc/vsftpd/vusers.d/

cd /etc/vsftpd/vusers.d/ //进入此目录

//允许wang用户可读写,其它用户只读

vim zhao //创建各用户自已的配置文件

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

vim qian //创建各用户自已的配置文件

local_root=/ //登录目录改变至指定的目录

结果:用户zhao

  1 [root@234c27 ~]# ftp 192.168.234.17
2 Connected to 192.168.234.17 (192.168.234.17).
3 220 (vsFTPd 3.0.2)
4 Name (192.168.234.17:root): zhao
5 331 Please specify the password.
6 Password:
7 230 Login successful.
8 Remote system type is UNIX.
9 Using binary mode to transfer files.
10 ftp> pwd
11 257 "/"
12 ftp> ls
13 227 Entering Passive Mode (192,168,234,17,75,202).
14 150 Here comes the directory listing.
15 drwxrwxr-x 2 0 0 6 Aug 18 02:11 upload
16 226 Directory send OK.
17 ftp>

结果:用户qian

  1 [root@234c27 ~]# ftp 192.168.234.17
2 Connected to 192.168.234.17 (192.168.234.17).
3 220 (vsFTPd 3.0.2)
4 Name (192.168.234.17:root): qian
5 331 Please specify the password.
6 Password:
7 230 Login successful.
8 Remote system type is UNIX.
9 Using binary mode to transfer files.
10 ftp> cd /
11 250 Directory successfully changed.
12 ftp> ls
13 227 Entering Passive Mode (192,168,234,17,218,169).
14 150 Here comes the directory listing.
15 lrwxrwxrwx 1 0 0 7 Aug 16 02:04 bin -> usr/bin
16 dr-xr-xr-x 5 0 0 4096 Aug 17 01:45 boot
17 drwxr-xr-x 20 0 0 3340 Aug 17 12:10 dev
18 drwxr-xr-x 130 0 0 8192 Aug 18 02:10 etc
19 drwxr-xr-x 2 0 0 6 Apr 11 04:59 home
20 lrwxrwxrwx 1 0 0 7 Aug 16 02:04 lib -> usr/lib
21 lrwxrwxrwx 1 0 0 9 Aug 16 02:04 lib64 -> usr/lib64
22 drwxr-xr-x 2 0 0 6 Apr 11 04:59 media
23 drwxr-xr-x 2 0 0 6 Apr 11 04:59 mnt
24 drwxr-xr-x 3 0 0 16 Aug 16 02:18 opt
25 dr-xr-xr-x 188 0 0 0 Aug 17 12:09 proc
26 dr-xr-x--- 8 0 0 271 Aug 18 02:43 root
27 drwxr-xr-x 37 0 0 1120 Aug 18 02:32 run
28 lrwxrwxrwx 1 0 0 8 Aug 16 02:04 sbin -> usr/sbin
29 drwxr-xr-x 2 0 0 6 Apr 11 04:59 srv
30 dr-xr-xr-x 13 0 0 0 Aug 17 12:10 sys
31 drwxrwxrwt 20 0 0 4096 Aug 18 02:41 tmp
32 drwxr-xr-x 13 0 0 155 Aug 16 02:04 usr
33 drwxr-xr-x 23 0 0 4096 Aug 18 02:10 var
34 226 Directory send OK.
35 ftp>

实现基于MYSQL验证的vsftpd虚拟用户--(两台)

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

一、安装所需要包和包组:

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

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

yum –y install mariadb-server

systemctl start mariadb.service

systemctl enable mariadb

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

yum -y groupinstall "Development Tools"

yum -y install mariadb-devel pam-devel vsftpd

下载pam_mysql-0.7RC1.tar.gz

tar xvf pam_mysql-0.7RC1.tar.gz

cd pam_mysql-0.7RC1/

./configure --with-pam-mods-dir=/lib64/security --with-mysql=/usr --with-pam=/usr

make

make install

二、在数据库服务器上创建虚拟用户账号

1.建立存储虚拟用户数据库和连接的数据库用户

mysql> CREATE DATABASE ftpdb;

mysql> SHOW DATABASES;

//ftp服务和mysql不在同一主机:

mysql> GRANT SELECT ON vsftpd.* TO vsftpd@'192.168.234.17' IDENTIFIED BY 'centos';

2.准备相关表

mysql> USE ftpdb;  //创建数据库

Mysql> SHOW TABLES;

mysql> CREATE TABLE users (

id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,

name CHAR(50) BINARY NOT NULL,

password CHAR(48) BINARY NOT NULL

);

mysql>DESC users;

//测试连接

mysql -uwang -h 192.168.234.17 -pcentos

mysyl> SHOW DATABASES;

3.添加虚拟用户

根据需要添加所需要的用户,为了安全应该使用PASSWORD函数加密其密码后

存储

mysql>DESC users;

mysql> INSERT INTO users(name,password) values(‘wang',password('centos'));

mysql> INSERT INTO users(name,password) values(‘mage',password('centos'));

mysql> INSERT INTO users(name,password) values(‘ftp1',password('centos'));

mysql> INSERT INTO users(name,password) values(‘ftp2',password('centos'));

mysql> SELECT * FROM users;
//在数据库中建立4个帐号

三、在FTP服务器上配置vsftpd服务

1.在FTP服务器上建立pam认证所需文件

vim /etc/pam.d/vsftpd.mysql 添加如下两行

  1 [root@234c17 data]# vim /etc/pam.d/vsftpd.mysql
2 auth required pam_mysql.so user=vsftpd passwd=centos host=192.168.234.27 db=ftpdb table=users usercolumn=name passwdcolumn=password crypt=2
3 account required pam_mysql.so user=vsftpd passwd=centos host=192.168.234.27 db=ftpdb table=users usercolumn=name passwdcolumn=password crypt=2

注意:参考README文档,选择正确的加密方式

crypt是加密方式,0表示不加密,1表示crypt(3)加密,2表示使用mysql

password()函数加密,3表示md5加密,4表示sha1加密

配置字段说明

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()函数加密

2.建立相应用户和修改vsftpd配置文件,使其适应mysql认证

//建立虚拟用户映射的系统用户及对应的目录

useradd -s /sbin/nologin -d /var/ftproot vsftpd

chmod 555 /var/ftproot  //centos7需除去ftp根目录的写权限

mkdir /var/ftproot/{upload,pub}

setfacl –m u:vfstpd:rwx /var/ftproot/upload/

//确保/etc/vsftpd.conf中已经启用了以下选项

anonymous_enable=YES

//添加下面两项

guest_enable=YES

guest_username=vsftpd

//修改下面一项,原系统用户无法登录

pam_service_name=vsftpd.mysql

四、启动vsftpd服务

systemctl start vsftpd

systemctl enable vsftpd

//查看端口开启情况

netstat -tnlp |grep :21

五、Selinux相关设置:在FTP服务器上执行

restorecon -R /lib64/security

setsebool -P ftpd_connect_db 1

setsebool -P ftp_home_dir 1

chcon -R -t public_content_rw_t /var/ftproot/

六、测试:利用FTP客户端工具,以虚拟用户登录验证结果

tail /var/log/secure

七、在FTP服务器上配置虚拟用户具有不同的访问权限

vsftpd可以在配置文件目录中为每个用户提供单独的配置文件以定义其ftp服务访

问权限,每个虚拟用户的配置文件名同虚拟用户的用户名。配置文件目录可以是任

意未使用目录,只需要在vsftpd.conf指定其路径及名称即可

1、配置vsftpd为虚拟用户使用配置文件目录

vim /etc/vsftpd/vsftpd.conf

添加如下选项

user_config_dir=/etc/vsftpd/vsftpd.d

2、创建所需要目录,并为虚拟用户提供配置文件

mkdir /etc/vsftpd/vsftpd.d/

cd /etc/vsftpd/vsftpd.d/

touch ftp1 ftp2

3、配置虚拟用户的访问权限

虚拟用户对vsftpd服务的访问权限是通过匿名用户的相关指令进行的。如果需要让用户wang具有上传文件的权限,可以修改

/etc/vsftpd/vsftpd.d/ftp1文件,在里面添加如下选项并设置为YES即可,

只读则设为NO

注意:需确保对应的映射用户对于文件系统有写权限

anon_upload_enable={YES|NO}

anon_mkdir_write_enable={YES|NO}

anon_other_write_enable={YES|NO}

local_root=/ftproot 登录目录改变至指定的目录

实现验证的vsftpd虚拟用户的更多相关文章

  1. 实现基于MYSQL验证的vsftpd虚拟用户访问

    一.配置mysql服务器 1.1 安装mysql # yum -y install mariadb-server # systemctl enable --now mariadb.service &a ...

  2. FTP服务-实现vsftpd虚拟用户

    前几篇介绍了基础,这篇将具体实现几个案例 实现基于文件验证的vsftpd虚拟用户,每个用户独立一个文件夹 1.创建用户数据库文件 vim /etc/vsftpd/vusers.txt qq cento ...

  3. 烂泥:ubuntu下vsftpd虚拟用户配置

    本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我微信ilanniweb. 以前搭建vsftpd都是在centos下,本以为在ubuntu按照以前的步骤搭建即可.可 ...

  4. VSFTPD虚拟用户配置

    转载:http://www.cnblogs.com/allenjin/archive/2011/12/03/2274542.html 以下操作验证OK!!!! VSFTPD虚拟用户配置 VSFTP = ...

  5. vsftpd虚拟用户【公司系统部分享】

    一,安装相关工具包 #yum -y install pam vsftpd db4 db4-utils -- pam 是用来提供身份验证的 -- vsftpd 是ftp服务的主程序 -- db4支持文件 ...

  6. vsftpd虚拟用户创建实例(转载)

    vsftpd虚拟用户创建实例 发布:theboy   来源:net     [大 中 小] vsftpd虚拟用户创建实例,有需要的朋友可以参考下.  vsftpd虚拟用户创建实例,有需要的朋友可以参考 ...

  7. ubuntu server vsftpd 虚拟用户及目录

    ubuntu server vsftpd 虚拟用户及目录 一:需求场景: 在ubuntu server上开设一个虚拟网站,在网站目录建立一个ftp目录,允许用户通过ftp上传网站文件到网站目录: 同时 ...

  8. vsftpd 虚拟用户配置

    vsftpd 虚拟用户的作用是 通过不同的虚拟用户可以有不同的根目录. 从 2.3.5 版本之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能在具有写权限了,如果检查 ...

  9. Ubuntu 12.04 LTS为例演示vsftpd虚拟用户 的配置

    vsftpd虚拟用户   2012-05-19 15:46:59|  分类: GNU/Linux |  标签:ubuntu  vsftpd  ftp  虚拟用户  |举报|字号 订阅 我们登录FTP有 ...

随机推荐

  1. 如何阻止浏览器的默认事件,你是否也遇到过无法阻止Google默认事件的情况( 原生JS )

    如题,话不多话,我们先看怎么解决 根据不同的绑定事件的方法,我们有不同的阻止默认事件的方法 如果你不知到如何绑定事件,请查看我的上一篇文章 关于浏览器滚动的兼容性问题以及事件绑定 1.句柄绑定 只需要 ...

  2. 函数和代码复用 --Python

    1.关于递归函数的描述,以下选项中正确的是 A.包含一个循环结构 B.函数比较复杂 C.函数内部包含对本函数的再次调用 D.函数名称作为返回值 答案:D 答案解析:递归函数是指函数内部包含对本函数的再 ...

  3. the little schemer 笔记(5)

    第五章 “Oh My Gawd”:It's Full of Stars (rember* a l)是什么,其中a是cup,l是((coffee) cup ((tea) cup) rember*发音为r ...

  4. scikit-learning教程(三)使用文本数据

    使用文本数据 本指南的目标是探讨scikit-learn 一个实际任务中的一些主要工具:分析二十个不同主题的文本文档(新闻组帖子)集合. 在本节中,我们将看到如何: 加载文件内容和类别 提取适用于机器 ...

  5. PT2264解码心得

    PT2264解码心得 最近闲暇时间在琢磨无线RF解码程序,正好在数码之家论坛中翻出大佬的解码程序(http://bbs.mydigit.cn/read.php?tid=245739),于是乎,慢慢学习 ...

  6. P1936 水晶灯火灵

    题目描述 ,刚好符合以下③条规则:①m.n∈{1,2,……,k}②(n²-m*n-m²)²=1③m.n为整数. 输入输出格式 输入格式: Only one:k.(What?还是失败?) 输出格式: 共 ...

  7. AJPFX关于StringBuffer,StringBuilder类 总结(一)

    StringBuffer,StringBuilder类 StringBuffer是同步的,数据安全,效率低;StringBuilder是不同步的,数据不安全,效率高 StringBuffer:概述1) ...

  8. AJPFX浅谈Java 性能优化之垃圾回收(GC)

    ★JVM 的内存空间 在 Java 虚拟机规范中,提及了如下几种类型的内存空间: ◇栈内存(Stack):每个线程私有的.◇堆内存(Heap):所有线程公用的.◇方法区(Method Area):有点 ...

  9. 学JAVA第二十四天,Set集合与StringBuilder

    下面的内容需要慢慢看,因为,我的语言表达能力不是很好 首先说Set把,Set集合是一个无序且不允许重复的集合,而且查找效率也是快的可怕的. 但是,有些时候,我们必须要用储存多个相同的值时,Set也是可 ...

  10. Android Studio Terminal 不是内部或外部命令,也不是可运行程序或批处理文件

    1.Android Studio Terminal 命令行无效的问题 在Android Studio中自带了命令行终端Terminal,但是我们在输入命令时经常会发现:“XXX”不是内部或外部命令,也 ...