文档章节

vsftp mysql 管理虚拟用户

jodg
 jodg
发布于 2014/08/28 12:57
字数 1298
阅读 40
收藏 0

大概结构是这样的.

web 管理在前端集群上,ftp 是单独的一个服务器,用户量不大.

这些用户只能访问自己的目录,

用户可以上传文件,对自己上传的文件可以重命名,删除操作,

不可下载自己上传的文件,但可下载我们指定的文件.

具体的实现思路是这样,

在 ftp 服务器上搭建一个apache+mysql+php,

然后 ftp 通过 pam 用户认证.php 去创建 mysql 中的用户信息. 建立对应的用户权限配置.

root 用户权限去创建用户 ftp 对应的目录.

分别对一个用户创建上传和下载两个帐号,分开目录并对权限管理.

创建无登录权限的系统帐号运行 ftp webserver, mysql 只能本地访问.

保证 ftp 文件都是该帐号的所属. 

然后看看具体的配置过程.


安装 所需服务

yum install httpd vsftpd mysql-server mysql-devel pam-devel php php-pdo

php 需要 5.2+

最好用 pdo 扩展.


创建系统帐号.

建立虚拟账户

groupadd www
useradd -d /data1/www -s /sbin/nologin -g www www

httpd vsftpd 用 www 帐号及 www 组运行.

我的用户以及服务数据目录都在/data1/www  

该目录权限为

drwxr-xr-x  7 www     www       4096 Aug 20 14:31 www 


配置 httpd

增加一些配置即可,只对内网服务.所以设置监听内网 ip的某个端口

Listen 192.168.1.2:8080
<VirtualHost *:8080>
     DocumentRoot /data1/www/htdocs/project/
     RewriteEngine On
     RewriteRule (.*)$ /index.php [L]
</VirtualHost>

php的代码都放在上面的路径中

新建目录

mkdir -p /data1/www/htdocs/project/

 php选用超级好用的 yaf

安装 yaf 框架扩展 (https://github.com/laruence/php-yaf)

$PHP_BIN/phpize
./configure --with-php-config=$PHP_BIN/php-config
make
make install

修改 php.ini 

extension=yaf.so
[yaf]
yaf.environ = product
yaf.library = NULL
yaf.cache_config = 0
yaf.name_suffix = 1
yaf.name_separator = ""
yaf.forward_limit = 5
yaf.use_namespace = 0
yaf.use_spl_autoload = 0


安装pam_mysql.so

http://pam-mysql.sourceforge.net

./configure --with-mysql=/usr --with-openssl
make
make install
ln -s /lib/security/pam_mysql.* /lib64/security/

编译若有 md5 错误

ln -s /usr/include/openssl/md5.h /usr/include/


创建 database 和 table

CREATE DATABASE project;
CREATE TABLE `project.users` (
  `id` int(11) NOT NULL auto_increment,
  `name` varchar(16) NOT NULL default '0',
  `password` varchar(68) NOT NULL default '0',
  `password_real` varchar(68) NOT NULL default '0',
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8




新建配置文件,注意文件保持 root 用户所属

新建 pam 配置

/etc/pam.d/vsftpd_project.mysql 

auth required /lib64/security/pam_mysql.so user=www passwd=123456 host=127.0.0.1:3440 db=project table=users usercolumn=name passwdcolumn=password crypt=3 verbose=1
account required /lib64/security/pam_mysql.so user=www passwd=123456 host=127.0.0.1:3440 db=project table=users usercolumn=name passwdcolumn=password crypt=3 verbose=1

/etc/vsftpd/vsftpd_project.conf 

#启动用户
nopriv_user=www
#设置端口
listen_port=2121
guest_enable=YES
guest_username=www
#pam 配置
pam_service_name=vsftpd_project.mysql
userlist_enable=YES
tcp_wrappers=YES
#虚拟用户配置目录
user_config_dir=/etc/vsftpd/vsftpd_project_user_conf

ftp 虚拟用户配置目录

/etc/vsftpd/vsftpd_project_user_conf/

下载用户配置

vim /etc/vsftpd/vsftpd_project_user_conf/download_jodg
#下载配置实例,只能下载,不能上传和删除,支持续传 
write_enable=NO
anon_world_readable_only=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=YES
chroot_local_user=YES
download_enable=YES
cmds_allowed=ABOR,CWD,CDUP,FEAT,LIST,MDTM,PASS,PASV,PORT,PWD,QUIT,REST,RETR,STRU,TYPE,USER
local_root=/data1/www/ftproot/jodg/down/

上传帐号配置

vim /etc/vsftpd/vsftpd_project_user_conf/upload_jodg
#可上传删除重命名,不可下载,支持续传
write_enable=YES
anon_umask=022
anon_world_readable_only=YES
anon_upload_enable=YES
anon_mkdir_write_enable=NO
anon_other_write_enable=YES
chroot_local_user=YES
download_enable=NO
cmds_allowed=ABOR,APPE,CWD,CDUP,FEAT,LIST,MDTM,PASS,PASV,PORT,PWD,QUIT,REST,RNFR,RNTO,STOR,STRU,TYPE,USER,DELE
local_root=/data1/www/ftproot/jodg/up/


可能会遇到的问题.和资料

pam_mysql若有错误,可查看日志

tail -f /var/log/secure

看端口占用情况,检查端口是否占用或者服务否正常启动

/usr/sbin/lsof -i

上传文件超时解决方法:

/etc/vsftpd/vsftpd.conf
# You may change the default value for timing out an idle session.
idle_session_timeout=0
#
# You may change the default value for timing out a data connection.
data_connection_timeout=0

vsftpd cmds_allowed 对照表

CWD - change working directory 更改目录
DELE - delete a remote file 删除文件
LIST - list remote files 列目录
MKD - make a remote directory 新建文件夹
NLST - name list of remote directory
PWD - print working directory 显示当前工作目录
RETR - retrieve a remote file 下载文件
RMD - remove a remote directory 删除目录
RNFR - rename from 重命名
RNTO - rename to 重命名
STOR - store a file on the remote host 上传文件

以上是常用的一些参数,大家对照学习一下!下面是列也的全部参数,供大家参考!

# ABOR - abort a file transfer 取消文件传输
# CWD - change working directory 更改目录
# DELE - delete a remote file 删除文件
# LIST - list remote files 列目录
# MDTM - return the modification time of a file 返回文件的更新时间
# MKD - make a remote directory 新建文件夹
# NLST - name list of remote directory
# PASS - send password
# PASV - enter passive mode
# PORT - open a data port 打开一个传输端口
# PWD - print working directory 显示当前工作目录
# QUIT - terminate the connection 退出
# RETR - retrieve a remote file 下载文件
# RMD - remove a remote directory
# RNFR - rename from
# RNTO - rename to
# SITE - site-specific commands
# SIZE - return the size of a file 返回文件大小
# STOR - store a file on the remote host 上传文件
# TYPE - set transfer type
# USER - send username
# less common commands:
# ACCT* - send account information
# APPE - append to a remote file
# CDUP - CWD to the parent of the current directory
# HELP - return help on using the server
# MODE - set transfer mode
# NOOP - do nothing
# REIN* - reinitialize the connection
# STAT - return server status
# STOU - store a file uniquely
# STRU - set file transfer structure
# SYST - return system type


© 著作权归作者所有

jodg
粉丝 0
博文 1
码字总数 1298
作品 0
海淀
程序员
私信 提问
使用vsftp基于mysql搭建ftp服务器及使用web界面管理(附php源码)

一、FTP服务器 FTP,File Transfer Protocol 文件传输协议,FTP协议是一种古老的协议,它出现的比HTTP协议还要早,FTP主要应用于网络空间数据交换操作。ftp在工作时会有两个连接:一是命令连...

wubinary
2014/03/29
0
0
vsftpd和mysql结合实现认证

tep1: 首先安装vsftp和mysql [root@localhost ~]#yum install vsftpd mysql-server mysql-devel pam-devel -y 在PAM中默认是没有mysql认证模块的,所以要下载源码自己手动安装 [root@localh...

guanshanyue1990
2014/01/09
0
0
金刚java虚拟主机管理系统--KgHost

KgHost,金刚java虚拟主机管理系统,专为IDC空间商开发的主机管理系统,支持apache,php,jsp等主流空间,kgHost专门为java空间提供全面的主机支持,是逐龙JuuLuu的一款功能强大稳定的源java虚...

聚龙软件
2011/11/15
3.3K
0
日志、文件服务器(vsftp、NFS)

下面介绍的是)日志、文件服务器(vsftp、NFS、samba 一、日志 1、日志基础 (1)、日志 日志 -----------记录具有一定意义的历史事件。 事件 -----------时间、事件本身的内容、事件的关键程...

little_ding
2017/09/22
0
0
Vsftp搭建(一)与PAM验证 SSL加密 登陆

觉得有用请顶一下,谢谢 先上配置设置 Vsftp常用参数一览表: 编 参数选项 意义及用法 一、全局配置参数(同样用于本地用户、匿名用户、虚拟用户) 登录信息参数: 1 dirmessage_enable=YES ...

拜仁慕尼黑
2013/03/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

强引用、软引用、弱引用、虚引用

强引用: 脱离作用域 或对象被设为空会被回收 内存不足也不会被清理 软引用 脱离作用域 或对象被设为空会被回收 内存不足会被清理 弱引用 下一次GC 会被清理 虚引用 虚引用也称为幻影引用, ...

Java搬砖工程师
21分钟前
0
0
redHat 安装weblogic 未设置 DISPLAY 环境变量 错误

redHat 在安装 weblogic 12的时候,报了一个错误 启动程序日志文件为/tmp/OraInstall2019-05-21_10-34-22AM/launcher2019-05-21_10-34-22AM.log。 正在提取安装程序... . . . . . 完成 检查 ...

internetafei
24分钟前
1
0
Django视图

一个视图函数或者类,简称视图(view),是一个简单的Python 函数(类),它接受Web请求并且返回Web响应。响应可以是HTML页面、一个重定向、一个404错误、一个xml、json数据、或图片等,视图...

彩色泡泡糖
24分钟前
1
0
盘它 | 谁说鱼和熊掌不可兼得?我全部都要!

大家好,我叫王小刚,是一名IT经理 因为各种网络安全政策的强制要求, 我便买了某品牌SSL证书安装在刚部署的网站上 之后再也没在意过它, 随着网站访问量上去了, 网页加载速度延迟问题时常困...

亚洲诚信
25分钟前
1
0
(二) java版电子商务spring cloud分布式微服务b2b2c社交电商-Spring Boot配置文件详解

Spring cloud b2b2c电子商务社交平台源码请加企鹅求求:一零三八七七四六二六。springboot采纳了建立生产就绪Spring应用程序的观点。 Spring Boot优先于配置的惯例,旨在让您尽快启动和运行。...

sccspuercode
27分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部