apache mysql 密码_如何密码保护目录使用mod_auth_mysql在Apache2(Debian Squeeze)

如何使用mod_auth_mysql密码保护目录在Apache2上(Debian Squeeze)

本指南介绍如何使用Debian Squeeze服务器上的Apache2上的mod_auth_mysql密码保护网络目录(与MySQL数据库中的用户)。 它是由mod_auth提供的纯文本密码文件的替代,并允许您使用普通的SQL语法来创建/修改删除用户。 您还可以配置mod_auth_mysql以对现有的MySQL用户表进行身份验证。

我不会保证这将为您工作!

1初步说明

我使用vhost http://www.example.com这里的vhost配置文件/etc/apache2/sites-available/www.example.com.vhost和文档根/var/www/www.example.com/网络 我想在本教程中密码保护目录/var/www/www.example.com/web/protecteddir (转换为http://www.example.com/protecteddir/ )。

2安装MySQL,mod_auth_mysql

要安装MySQL和mod_auth_mysql,我们运行:

apt-get install mysql-server mysql-client libapache2-mod-auth-mysql

您将被要求为MySQL root用户提供密码:

MySQL“root”用户的新密码: < - yourrootsqlpassword

重复MySQL“root”用户的密码: < - yourrootsqlpassword

然后启用mod_auth_mysql模块:

a2enmod auth_mysql

重新启动Apache:

/etc/init.d/apache2 restart

3配置mod_auth_mysql

您可以在/ usr / share / doc / libapache2-mod-auth-mysql目录中找到mod_auth_mysql的文档。 要阅读它,你必须gunzip DIRECTIVES.gz和USAGE.gz文件:

cd /usr/share/doc/libapache2-mod-auth-mysql

gunzip DIRECTIVES.gz

vi DIRECTIVES

gunzip USAGE.gz

vi USAGE

读取这两个文件后,我们创建一个名为examplecomdb的MySQL数据库,我们将在其中创建包含我们的用户和密码的表mysql_auth。 除此之外,我们创建了MySQL用户examplecom_admin - 该用户将被mod_auth_mysql用于以下连接到MySQL:

mysqladmin -u root -p create examplecomdb

mysql -u root -p

GRANT SELECT, INSERT, UPDATE, DELETE ON examplecomdb.* TO 'examplecom_admin'@'localhost' IDENTIFIED BY 'examplecom_admin_password';

GRANT SELECT, INSERT, UPDATE, DELETE ON examplecomdb.* TO 'examplecom_admin'@'localhost.localdomain' IDENTIFIED BY 'examplecom_admin_password';

FLUSH PRIVILEGES;

(用您选择的密码替换examplecom_admin_password 。)

USE examplecomdb;

create table mysql_auth (

username char(25) not null,

passwd char(32),

groups char(25),

primary key (username)

);

(当然,您也可以使用包含用户凭据的现有表,并且还可以在表中添加其他字段,例如定义用户是否处于活动状态的字段)。

现在我们将用户测试插入我们的mysql_auth表,密码测试 (MD5加密); 该用户属于组测试组:

INSERT INTO `mysql_auth` (`username`, `passwd`, `groups`) VALUES('test', MD5('test'), 'testgroup');

然后我们离开MySQL shell:

quit;

我想在/var/www/www.example.com/web/protecteddir目录中创建一个.htaccess文件,它将包含mod_auth_mysql配置,为此,我必须首先修改我们的vhost配置,以使.htaccess文件允许包含身份验证指令。 我们可以使用AllowOverride AuthConfig或AllowOverride All行 (允许.htaccess覆盖虚拟机配置中的所有设置,不仅验证设置)执行此操作:

vi /etc/apache2/sites-available/www.example.com.vhost[...]

AllowOverride AuthConfig

[...]

(如果AllowOverride AuthConfig或AllowOverride All已设置为父目录/var/www/www.example.com/web - /var/www/www.example.com/web/protecteddir继承了以上配置,则可以保留上述配置设置,除非在目录/var/www/www.example.com/web/protecteddir> ... Directory>容器内设置其他内容。)

重新加载Apache:

/etc/init.d/apache2 reload

现在我们创建我们的.htaccess文件:

vi /var/www/www.example.com/web/protecteddir/.htaccessAuthBasicAuthoritative Off

AuthUserFile /dev/null

AuthMySQL On

AuthName "Authentication required"

AuthType Basic

Auth_MySQL_Host localhost

Auth_MySQL_User examplecom_admin

Auth_MySQL_Password examplecom_admin_password

AuthMySQL_DB examplecomdb

AuthMySQL_Password_Table mysql_auth

Auth_MySQL_Username_Field username

Auth_MySQL_Password_Field passwd

Auth_MySQL_Empty_Passwords Off

Auth_MySQL_Encryption_Types PHP_MD5

Auth_MySQL_Authoritative On

require valid-user

AuthBasicAuthoritative Off和AuthUserFile / dev / null是为了防止在Apache错误日志( /var/log/apache2/error.log )中收到像这样的错误:

[Wed Jun 11 17:02:45 2008] [error] Internal error: pcfg_openfile() called with NULL filename

[Wed Jun 11 17:02:45 2008] [error] [client 127.0.0.1] (9)Bad file descriptor: Could not open password file: (null)

如果您的MySQL表中有其他字段可以定义是否允许用户登录(例如,一个称为活动的用户 ),则可以添加Auth_MySQL_Password_Clause指令,例如:[...]

Auth_MySQL_Password_Clause " AND active=1"

[...]

(重要的是引号内的字符串以空格开头!)

require valid-user指令使mysql_auth表中列出的每个用户都可以登录,只要他/她提供正确的密码。 如果您只希望允许某些用户登录,您可以使用类似的东西[...]

require user jane joe

[...]

代替。 如果您只希望某些群组的成员被允许登录,则可以使用以下内容:[...]

require group testgroup

[...]

而已! 现在尝试访问http://www.example.com/protecteddir/ ,您将被要求输入用户名和密码:

d4825dbf3e943cf1071effc064fff4f6.png

54b8f9a6d912f5e08e624aa3ba79b3d3.png

而不是使用.htaccess文件,也可以将mod_auth_mysql配置直接放在vhost配置中。 如果您愿意,请删除.htaccess文件...

rm -f /var/www/www.example.com/web/protecteddir/.htaccess

...打开vhost配置文件:

vi /etc/apache2/sites-available/www.example.com.vhost

添加以下部分(或修改现有的 ... Directory>容器) - 请注意,这一次我们不需要AllowOverride AuthConfig行或AllowOverride全部 ,因为我们不再使用.htaccess文件):[...]

AuthBasicAuthoritative Off

AuthUserFile /dev/null

AuthMySQL On

AuthName "Authentication required"

AuthType Basic

Auth_MySQL_Host localhost

Auth_MySQL_User examplecom_admin

Auth_MySQL_Password examplecom_admin_password

AuthMySQL_DB examplecomdb

AuthMySQL_Password_Table mysql_auth

Auth_MySQL_Username_Field username

Auth_MySQL_Password_Field passwd

Auth_MySQL_Empty_Passwords Off

Auth_MySQL_Encryption_Types PHP_MD5

Auth_MySQL_Authoritative On

require valid-user

[...]

重新加载Apache:

/etc/init.d/apache2 reload

4链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值