FTP服务-实现vsftpd虚拟用户
前几篇介绍了基础,这篇将具体实现几个案例
实现基于文件验证的vsftpd虚拟用户,每个用户独立一个文件夹
1、创建用户数据库文件
vim /etc/vsftpd/vusers.txt
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/ 就也是根,没有写权限,但是对根下的目录有写权限。
把匿名写权限打开
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模块
备注:放在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
重启,测试
备注:想要增加用户,在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
开始make
[root@centos7_77 pam_mysql-0.7RC1]# make && make install
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'));
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
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
重启
测试
备注:要想让gg用户有写权限,在/etc/vsftpd/vftpuser.d/gg文件中加入
anon_upload_enable=YES
anon_mkdir_write_enable=YES
还要对/data/gg这个目录要有写权限
setfacl -m u:vftpuser:rwx /data/gg
FTP服务-实现vsftpd虚拟用户的更多相关文章
- CentOS7 FTP服务搭建(虚拟用户访问FTP服务)
概述 最近在搞Oracle在Linux系统下集群,针对Linux系统,笔人也是一片空白.Liunx外部文件的传输,避免不了使用FTP服务,所以现在就整理下,CentOS7环境下,FTP服务的搭建.FT ...
- vsftpd虚拟用户【公司系统部分享】
一,安装相关工具包 #yum -y install pam vsftpd db4 db4-utils -- pam 是用来提供身份验证的 -- vsftpd 是ftp服务的主程序 -- db4支持文件 ...
- 烂泥:ubuntu下vsftpd虚拟用户配置
本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我微信ilanniweb. 以前搭建vsftpd都是在centos下,本以为在ubuntu按照以前的步骤搭建即可.可 ...
- ubuntu server vsftpd 虚拟用户及目录
ubuntu server vsftpd 虚拟用户及目录 一:需求场景: 在ubuntu server上开设一个虚拟网站,在网站目录建立一个ftp目录,允许用户通过ftp上传网站文件到网站目录: 同时 ...
- Ubuntu 12.04 LTS为例演示vsftpd虚拟用户 的配置
vsftpd虚拟用户 2012-05-19 15:46:59| 分类: GNU/Linux | 标签:ubuntu vsftpd ftp 虚拟用户 |举报|字号 订阅 我们登录FTP有 ...
- vsftpd 虚拟用户限定在虚拟用户目录
1.安装vsftpd yum -y install pam pam-devel db4 db4-tcl vsftpd 2.更名默认配置文件,以便恢复 cp /etc/vsftpd/vsftpd.con ...
- 实现验证的vsftpd虚拟用户
实现基于文件验证的vsftpd虚拟用户--(一台) 一.创建用户数据库文件 vim /etc/vsftpd/vuser cd /etc/vsftpd/ db_load -T -t hash -f vu ...
- Vsftpd虚拟用户登陆配置(Centos7)
1 安装Vsftpd服务 # yum install vsftpd -y vsftp虚拟用户是为了保证FTP服务器的安全性,由vsftpd服务器提供的非系统用户账号, 相对于FTP的本地用户来说,虚拟 ...
- vsftpd虚拟用户创建实例(转载)
vsftpd虚拟用户创建实例 发布:theboy 来源:net [大 中 小] vsftpd虚拟用户创建实例,有需要的朋友可以参考下. vsftpd虚拟用户创建实例,有需要的朋友可以参考 ...
随机推荐
- 数据库性能分析 慢查询 profile工具
- vue教程4-vueadmin上手
项目地址 https://github.com/PanJiaChen/vue-admin-template 这是一个 极简的 vue admin 管理后台 它只包含了 Element UI & ...
- ERROR 1366 (HY000): Incorrect string value: '\xB3\xA4\xC9\xB3' for column
在用以下方法之前,请先执行下面命令查看. show variables like 'character%'; ——查看所有编码方式 show create table table_name; — ...
- 福昕阅读器把pdf某一页保存出来
第一步: 第二步: 第三步: 第四步:点击保存即可
- 题解 BZOJ 1037 & Luogu P2592 [ZJOI2008]生日聚会
BZOJ & Luogu 老师说是背包?并没看出来QAQ 设f[i][j][o][p]表示已经选了i个人,j个男生,男生比女生最多多o个,女生比男生最多多p个时的方案数 两种转移: <= ...
- 51nod1244 莫比乌斯函数之和 杜教筛
虽然都写了,过也过了,还是觉得杜教筛的复杂度好玄学 设f*g=h,∑f=S, 则∑h=∑f(i)S(n/i下取整) 把i=1时单独拿出来,得到 S(n)=(∑h-∑2->n f(i)S(n/i下 ...
- NET Core准备:使用Hyper-V安装Ubuntu Server 16.10
NET Core准备:使用Hyper-V安装Ubuntu Server 16.10 概述 Hyper-V是微软的一款虚拟化产品,和VMWare一样采用的hypervisor技术.它已经被内嵌到Win1 ...
- Python 踩坑之旅进程篇其四一次性踩透 uid euid suid gid egid sgid的坑坑洼洼
目录 1.1 踩坑案例 1.2 填坑解法 1.3 坑位分析 1.4 技术关键字 1.5 坑后思考 下期坑位预告 代码示例支持 平台: Centos 6.3 Python: 2.7.14 代码示例: 菜 ...
- IntelJ IDEA创建简单Java工程
1. 打开IDEA J 2017开发工具,如下图: 2.点击“Create New Project”,将打开以下图: 3.选择 “Java”,选择“Next”,打开下图: 4.“Create pro ...
- 构造方法,this,super,final,static
1构造方法 一个Person类,属性都被private了,外界无法直接访问属性,必须对外提供相应的set和get方法.但如果需要在创建对象的同时明确对象的属性值,就需要构造方法了. 1.1定义 构建创 ...