vsftpd基于数据库文件实现虚拟用户管理站点目录

vsftpd基于数据库文件来实现虚拟用户管理站点目录:

ftp授权单个系统用户管理(此用户要禁止登陆服务器),虚拟出多个虚拟用户来管理不同的站点目录

一环境
(1)关闭selinux,centos6.8 x_86_64开启防火墙,放开ftp的端口

(2).存放虚拟用户的密码文件
[[email protected] vsftpd]# cat /etc/vsftpd/vsftpd_login
drxiaowu ##账户
ZkJxu55rt9 ##密码
yanyonG
Zk&aO=+w09
xiaowu
Zk&xi+wu96

(3)生成帐户的文件数据库
db_load -T -t hash -f vsftpd_login /etc/vsftpd/vsftpd_login.db
(4)修改文件数据库访问权限
chmod 600 /etc/vsftpd/vsftpd_login.db
(5)手工建立虚拟用户所需的PAM配置文件
[[email protected] extra]# cat /etc/pam.d/vsftpd.virtual
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login

(6)添加一个虚拟用户的入口帐户
useradd -d /var/www/html -s /sbin/nologin apache

二.生产环境配置演示:

2.1 完整生产配置文件如下:
[[email protected] test001]# cat /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
xferlog_file=/var/log/xferlog

listen=YES
listen_port=1029 ###默认ftp端口是21,现在修改ftp端口为1029
###listen_data_port=1011
pam_service_name=vsftpd.virtual
userlist_enable=YES
tcp_wrappers=YES
check_shell=YES
chroot_local_user=YES
guest_enable=YES
guest_username=apache
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/extra

2.2 多个不同的虚拟用户共享管理同一个站点目录的配置文件:
[[email protected] extra]# cat /etc/vsftpd/extra/drxiaowu
local_root=/var/www/html/cacti
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
idle_session_timeout=600
data_connection_timeout=120
max_clients=3
max_per_ip=3
local_max_rate=50000
[[email protected] extra]# cat /etc/vsftpd/extra/yanyonG
local_root=/var/www/html/cacti
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
max_clients=3
max_per_ip=2
local_max_rate=50000

2.2 多个不同的虚拟用户管理不同站点目录的配置文件:

[[email protected] extra]# cat xiaowu
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/var/www/html/itop
max_clients=1
max_per_ip=2
local_max_rate=50000

[[email protected] extra]# cat drxiaowu
local_root=/var/www/html/cacti
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
idle_session_timeout=600
data_connection_timeout=120
max_clients=3
max_per_ip=3
local_max_rate=50000

测试:
登陆xiaowu ftp账户测试:
[[email protected] itop]# lftp -p 1029 [email protected]
lftp [email protected]:/> mkdir test0000000001
mkdir ok, `test0000000001‘ created
lftp [email protected]:/> cd test0000000001/
lftp [email protected]:/test0000000001> put /root/10.13.23.24.sql
265146 bytes transferred in 5 seconds (48.7K/s)
lftp [email protected]:/test0000000001> ls
-rw-r--r-- 1 48 48 265146 Jan 14 05:47 10.13.23.24.sql
lftp [email protected]:/test0000000001> pwdbr/>ftp://[email protected]:1029/test0000000001
[[email protected] ~]# cd /var/www/html/itop
[[email protected] itop]# ll test0000000001/
total 260
-rw-r--r--. 1 apache apache 265146 Jan 14 13:47 10.13.23.24.sql

登陆drxiaowu ftp账户测试:

[[email protected] itop]# lftp -p 1029 [email protected]
Password:
lftp [email protected]:~> ls
lftp [email protected]:/> mkdir txt0000001
mkdir ok, `txt0000001‘ created
lftp [email protected]:/> cd txt0000001/
lftp [email protected]:/txt0000001> put /root/MegaSAS.log
187351 bytes transferred
lftp [email protected]:/txt0000001> ls
-rw-r--r-- 1 48 48 187351 Jan 14 05:53 MegaSAS.log
lftp [email protected]:/txt0000001>
[[email protected] itop]# cd /var/www/html/cacti/
[[email protected] cacti]# ls txt0000001/
MegaSAS.log
[[email protected] cacti]# ll txt0000001/
total 184
-rw-r--r--. 1 apache apache 187351 Jan 14 13:53 MegaSAS.log

2.3 多个不同的虚拟用户管理不同站点目录的配置文件:
当前的站点目录不都是在/var/www/html 下了,而是在如下目录,例如:/data/www/testweb /var/www/html /opt/www 类似这样的多个目录:
配合文件如下:
[[email protected] /]# cat /etc/vsftpd/extra/xiaowu
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/data/www/testweb
max_clients=1
max_per_ip=2
local_max_rate=50000

测试:
[[email protected] itop]# lftp -p 1029 [email protected]
Password:
lftp [email protected]:~> ls
lftp [email protected]:/> ls
lftp [email protected]:/> pwd
ftp://[email protected]:1029/

lftp [email protected]:/> put /root/10.13.23.24.sql
put: Access failed: 553 Could not create file. (10.13.23.24.sql)
上传文件失败,原因是:虚拟用用户是apache,而指定的ftp的上传的站点目录/data/www/testweb却是root权限,所以没有权限上传。
授权testweb为apache权限
cd /data/www/
chown -R apache.apache testweb
重新上传:
[[email protected] www]# lftp -p 1029 [email protected]
Password:
lftp [email protected]:~> ls
lftp [email protected]:/> pwdbr/>ftp://[email protected]:1029/
lftp [email protected]:/> put /root/10.13.23.24.sql
265146 bytes transferred in 5 seconds (48.8K/s)
lftp [email protected]:/> ls
-rw-r--r-- 1 48 48 265146 Jan 14 06:09 10.13.23.24.sql
[[email protected] www]# ll /data/www/testweb/
total 260
-rw-r--r--. 1 apache apache 265146 Jan 14 14:09 10.13.23.24.sql
上传成功。

提示:此时其他的ftp用户drxiaowu yanyong 任然可以上传文件到/var/www/html/cacti /var/www/html/itop 目录下。

vsftpd基于数据库文件实现虚拟用户管理站点目录

原文地址:http://blog.51cto.com/wujianwei/2060748

时间: 2024-10-01 02:05:05

vsftpd基于数据库文件实现虚拟用户管理站点目录的相关文章

Centos6下vsftpd基于mysql认证创建虚拟用户

一,安装环境以及安装的软件: 1,CentOS release 6.4 (Final) [IP:192.168.1.110] 2,vsftpd-2.2.2-13.el6_6.1.x86_64 3,pam_mysql-0.7-0.12.rc1.el6.x86_64 4,mysql-5.6.16(编译安装) 二,在数据库上创建登录ftp的账号和密码 1,创建对应的database,远程授权登录账号并创建表用来存储登录ftp账号密码. mysql> create database vsftpd; my

centos7 安装vsftpd安装和配置以及虚拟用户权限分配

系统环境 centos7.3 版本 ftp 根目录 : /data/ftpftp 配置文件目录:/etc/vsftpdftp 虚拟用户权限配置文件目录:/etc/vsftpd/vuser_config 实现目标: 1,匿名用户可以登录,但是不能访问虚拟用户的宿主目录,只能访问共享目录2,虚拟用户对自己的宿主目录有任何权限,且只能在自己宿主目录中操作 1,安装vsftpd和db_load加密工具 1 2 3 4 5 6 #要关闭selinux 和防火墙或者开启允许的端口,不然访问会有问题 sed

CentOS6.3下vsftpd通过pam认证实现虚拟用户文件共享

FTP的全称是File Transfer Protocol(文件传输协议),就是专门用来传输文件的协议.它工作在OSI模型的第七层,即是应用层,使用TCP传输而不是UDP.这样FTP客户端和服务器建立连接前就要经过一个"三次握手"的过程.FTP服务还有一个非常重要的特点是它可以独立于平台. LINUX下实现FTP服务的软件很多,最常见的有vsftpd,Wu-ftpd和Proftp等.Red Hat Enterprise Linux中默认安装的是vsftpd. 通常,访问FTP服务器时需

基于vue.js的简单用户管理

功能描述:添加.修改.搜索过滤 效果图: 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <title>简单用户管理</title> 5 <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"

vsFTPd限制虚不同的拟用户使用不同目录

vsftpd的不同虚拟用户分配不同权限的配置一.系统环境:debian sarge二.所需软件:vsftpd libdb3-util三.运行模式:standlone(独立模式)四.用户权限:以两个用户为例tom:浏览,下载,建立新目录,上传boy:浏览,下载,建立新目录,上传,修改,删除五.参考文档: /usr/share/doc/vsftpd/EXAMPLE/VIRTUAL_USERS//usr/share/doc/vsftpd/EXAMPLE/VIRTUAL_USERS_2/六.配置步骤:

基于httpd-2.4配置虚拟主机web站点,并提供https服务(二)

使用httpd-2.2和httpd-2.4实现 > 1.建立httpd服务,要求: > 1) 提供两个基于名称的虚拟主机www1, www2:要求每个虚拟主机都有单独的错误日志和访问日志: > 2) 通过www1的/server-status提供状态信息,且仅允许172.16.0.1主机访问: > 3) www2不允许192.168.1.0/24网络中任意主机访问: > 2.为上面的第2)个虚拟主机提供https服务. > 基于httpd-2.4配置虚拟主机web站点,

搭建FTP-----实现基于mysql验证的虚拟用户

前言: 在上一篇博客中,我们已经实现了基于文件认证的ftp服务,不过此方法也存在不少问题,比如过用户数据不好管理呀,以明文存储不安全呀.不能把用户数据单独存放在其他服务器呀等等.所以此次我们把用户数据放在mysql中,然后通过pam模块去mysql中找用户数据来实现认证.主体的过程和上篇区别不大~那我们就开始把~ 正文: 此次,我们的环境是centos6,因为centos7中的pam_mysql模块得自己手动编译,所以就先使用centos6,不过两者区别也不大,而且编译pam_mysql模块也不

Vsftpd安装以及配置FTP虚拟用户实践

安装vsftpd #查看当前系统版本 [[email protected] vsftpd]# cat  /etc/redhat-release CentOS release 6.7 (Final) #安装 yum  install  vsftpd  -y #开机启动 chkconfig  vsftpd   on 基于虚拟用户和被动模式的配置 [[email protected] vsftpd]# cat  vsftpd.conf anonymous_enable=NO listen=YES li

Linux下vsftpd安装以及配置FTP虚拟用户实践

首选的FTP服务器搭建方式 安装vsftpd #查看当前系统版本 cat /etc/redhat-release  CentOS release 6.6 (Final)  #查看是否已经安装vsftpd rpm -qa | grep vsftpd #如果没有,就安装,并设置开机启动 yum -y install vsftpd chkconfig vsftpd on 基于虚拟用户的配置 所谓虚拟用户就是没有使用真实的帐户,只是通过映射到真实帐户和设置权限的目的.虚拟用户不能登录CentOS系统.