webdav使用mysql_如何设置WebDAV与MySQL认证在Apache2(Debian Lenny)

本文档详细介绍了如何在Debian Lenny的Apache2服务器上使用MySQL进行WebDAV身份验证。通过安装Apache2、WebDAV、MySQL和mod_auth_mysql,然后创建虚拟主机并配置MySQL数据库,实现WebDAV的用户管理和安全访问。最后,文章还提供了测试WebDAV连接的方法和针对不同客户端的配置指导。
摘要由CSDN通过智能技术生成

如何在Apache2(Debian Lenny)上使用MySQL身份验证设置WebDAV

版本1.0

作者:Falko Timme

本指南介绍如何在Debian Lenny服务器上的Apache2上使用MySQL身份验证(使用mod_auth_mysql)设置WebDAV。 WebDAV代表基于Web的分布式创作和版本控制 ,是HTTP协议的一组扩展,允许用户直接编辑Apache服务器上的文件,以便不需要通过FTP下载/上传文件。 当然,WebDAV也可以用来上传和下载文件。

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

1初步说明

我正在使用Debian Lenny服务器,其主机名为server1.example.com ,IP地址为192.168.0.100 。

2安装Apache2,WebDAV,MySQL,mod_auth_mysql

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

aptitude install apache2 mysql-server mysql-client libapache2-mod-auth-mysql

您将被要求为MySQL root用户提供密码 - 此密码对用户root @ localhost以及root@server1.example.com有效 ,因此我们不必在以后手动指定MySQL根密码:

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

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

然后启用WebDAV和mod_auth_mysql模块:

a2enmod dav_fs

a2enmod dav

a2enmod auth_mysql

重新启动Apache:

/etc/init.d/apache2 restart

3创建虚拟主机

现在我将在目录/ var / www / web1 / web中创建一个默认的Apache vhost。 为此,我将修改/ etc / apache2 / sites-available / default中的默认Apache vhost 配置 。 如果您已经拥有要启用WebDAV的虚拟主机,则必须根据您的情况调整本教程。

首先,我们创建目录/ var / www / web1 / web ,并使Apache用户( www-data )成为该目录的所有者:

mkdir -p /var/www/web1/web

chown www-data /var/www/web1/web

然后我们备份默认的Apache vhost配置( / etc / apache2 / sites-available / default )并创建我们自己的配置:

mv /etc/apache2/sites-available/default /etc/apache2/sites-available/default_orig

vi /etc/apache2/sites-available/defaultNameVirtualHost *

ServerAdmin webmaster@localhost

DocumentRoot /var/www/web1/web/

Options Indexes MultiViews

AllowOverride None

Order allow,deny

allow from all

然后重新加载Apache:

/etc/init.d/apache2 reload

4配置WebDAV的虚拟主机

您可以在/ 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

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

mysqladmin -u root -p create webdav

mysql -u root -p

GRANT SELECT, INSERT, UPDATE, DELETE ON webdav.* TO 'webdav_admin'@'localhost' IDENTIFIED BY 'webdav_admin_password';

GRANT SELECT, INSERT, UPDATE, DELETE ON webdav.* TO 'webdav_admin'@'localhost.localdomain' IDENTIFIED BY 'webdav_admin_password';

FLUSH PRIVILEGES;

(用您选择的密码替换webdav_admin_password )

USE webdav;

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');

您可以稍后使用URL http://192.168.0.100/webdav连接到WebDAV。 如果您在Windows XP客户端上执行此操作并键入用户名测试 ,Windows将其转换为192.168.0.100 \ test 。 因此,我们现在创建第二个用户帐户:

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

(我们必须在用户名中使用第二个反斜杠来转义第一个!)

如果您指定WebDAV URL中的端口,则不必执行此操作,例如http://192.168.0.100:80 / webdav - 在这种情况下,Windows将简单地查找用户测试 ,而不是192.168.0.100 \ test 。

然后我们离开MySQL shell:

quit;

现在我们在/ etc / apache2 / sites-available / default中修改vhost,并添加以下行:

vi /etc/apache2/sites-available/default[...]

Alias /webdav /var/www/web1/web

DAV On

AuthBasicAuthoritative Off

AuthUserFile /dev/null

AuthMySQL On

AuthName "webdav"

AuthType Basic

Auth_MySQL_Host localhost

Auth_MySQL_User webdav_admin

Auth_MySQL_Password webdav_admin_password

AuthMySQL_DB webdav

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

[...]

Alias指令(与一起)使得当您调用/ webdav时,调用WebDAV,但仍可以访问vhost的整个文档根目录。 该vhost的所有其他URL仍然是“正常”的HTTP。

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

[...]

最终的vhost应该是这样的:NameVirtualHost *

ServerAdmin webmaster@localhost

DocumentRoot /var/www/web1/web/

Options Indexes MultiViews

AllowOverride None

Order allow,deny

allow from all

Alias /webdav /var/www/web1/web

DAV On

AuthBasicAuthoritative Off

AuthUserFile /dev/null

AuthMySQL On

AuthName "webdav"

AuthType Basic

Auth_MySQL_Host localhost

Auth_MySQL_User webdav_admin

Auth_MySQL_Password webdav_admin_password

AuthMySQL_DB webdav

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

5测试WebDAV

我们现在将安装cadaver ,一个命令行WebDAV客户机:

aptitude install cadaver

要测试WebDAV是否工作,请输入:

cadaver http://localhost/webdav/

应提示您输入用户名。 输入测试 ,然后输入用户测试的密码。 如果一切顺利,您应该被授予访问权,这意味着WebDAV工作正常。 键入退出以离开WebDAV shell:

server1:~# cadaver http://localhost/webdav/

Authentication required for webdav on server `localhost':

Username: test

Password:

dav:/webdav/> quit

Connection to `localhost' closed.

server1:~#

现在再次使用用户名192.168.0.100 \ test (这是Windows XP需要的格式,如果您不使用WebDAV URL中的80 ):

cadaver http://localhost/webdav/

server1:~# cadaver http://localhost/webdav/

Authentication required for webdav on server `localhost':

Username: 192.168.0.100\test

Password:

dav:/webdav/> quit

Connection to `localhost' closed.

server1:~#

6配置Windows XP客户端连接到WebDAV共享

这在https://www.howtoing.com/how-to-set-up-webdav-with-apache2-on-debian-lenny-p2中描述 。

如果您不使用WebDAV URL( http://192.168.0.100:80 / webdav )中的80 ,则必须使用用户名192.168.0.100 \ test登录; 如果你使用:80 ,那么你可以简单地用用户名测试登录。

7配置Linux客户端(GNOME)连接到WebDAV共享

这在https://www.howtoing.com/how-to-set-up-webdav-with-apache2-on-debian-lenny-p3中有描述 。

8故障排除

当您尝试连接到WebDAV时,例如使用以下命令,观察Apache错误日志( /var/log/apache2/error.log )是个好主意:

tail -f /var/log/apache2/error.log

如果您收到以下错误:

[Wed Jun 11 15:39:04 2008] [error] [client 192.168.0.46] (13)Permission denied: Could not open property database. [500, #1]

这意味着/ var / lock / apache2不是由Apache用户拥有(在Debian上的www-data )。 您可以通过运行以下方法来解决此问题:

chown www-data /var/lock/apache2

如果Windows不断询问并询问用户名和密码,您应该在WebDAV URL中指定端口,例如http://192.168.0.100:80 / webdav (参见第四章)。

9链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值