PureFTPd+Mysql+PHP_Manager实现虚拟用户磁盘限额(2)
} else {
// die(530, LOG_DEBUG, MSG_NO_ANONYMOUS_LOGIN); // 注释掉该行
addreply(331, MSG_USER_OK, account); // 修改为这行
}
发现一个PureFTPd的缺点,就是使用了磁盘限额后,虽然已起作用了,但是会有以下情况发生。
在连接后只能看到限的文档数,无法正常显示用了多少磁盘空间。
解决方法:
修改源代码
/src/quotas.c
在第71行有一条语句为:
*bufpnt=0;这一条语句会将用户根目录下的.ftpquota文档中得到的第二个使用空间数清为0,将该语句注释掉,不影响使用。
在第73行有一条语句为:
old_quota.size = quota->size = strtoull(bufpnt + 1, NULL, 10);
读出并传给quota->size的值有错误,不应该是bufpnt+1,而应该是buf+1,或是bufpnt,修改好后,重新编译安装即可。
当然在网页上传时还是看不到,但是用命令行或是FTP工具能够正常看到显示磁盘配额信息。
为了对访问
限制,我们做如下修改:
前提条件是我们安装了:
#rpm –ivh auth_mysql…..
在mysql中运行:
CREATE DATABASE auth;
USE auth;
CREATE TABLE users (
user_name CHAR(30) NOT NULL,
user_passwd CHAR(20) NOT NULL,
PRIMARY KEY (user_name)
);
CREATE TABLE groups (
user_name CHAR(30) NOT NULL,
user_group CHAR(20) NOT NULL,
PRIMARY KEY (user_name, user_group)
);
GRANT SELECT
ON auth.users
TO
[email=authuser@localhost]authuser@localhost[/email]
IDENTIFIED BY 'PaSsW0Rd';
GRANT SELECT
ON auth.groups
TO
[email=authuser@localhost]authuser@localhost[/email]
IDENTIFIED BY 'PaSsW0Rd';
INSERT INTO users VALUES ('testuser', ENCRYPT('testpass'));
INSERT INTO groups VALUES ('testuser', 'user');
INSERT INTO users VALUES ('testadmin', ENCRYPT('testpass'));
INSERT INTO groups VALUES ('testadmin', 'admin');
INSERT INTO groups VALUES ('testadmin', 'user');
#vi /etc/httpd/conf.d/pureftpdadmin.conf
内容变为:
pureftpdadminAlias /ftpadmin /var/www/pureftpd_manager
Order deny,allow
Deny from all
Allow from 127.0.0.1
Allow from ::1
Allow from 192.168.8.0/24
Allow from 192.168.9.0/24
#加入对mysql的认证
AuthName "MySQL group authenticated zone"
AuthType Basic
AuthMYSQLEnable on
AuthMySQLUser authuser
AuthMySQLPassword PaSsW0Rd
AuthMySQLDB auth
AuthMySQLUserTable users
AuthMySQLNameField user_name
AuthMySQLPasswordField user_passwd
AuthMySQLGroupTable groups
AuthMySQLGroupField user_group
#
require group user
我们再次输入
时就会弹出对话框,输入用户和密码后才可登入。
文件:
pureftpd_php_manager.zip
大小:
17KB
下载:
下载
顶(0)
踩(0)
- 最新评论