Posted on 2010-09-24 10:25
子期 阅读(3623)
评论(0) 编辑 收藏
Subversion Linux自助密码修改
1.
自助密码修改的思想
在svn库新增用户并设置密码后, 假如用户想修改密码, 则用户必须要找管理员进行修改, 如果用户能自己修改的话, 给用户及管理提供了很大的方便。以下脚本(见3.1.脚本)就是实现用户自助修改svn密码。该脚本的思想如下:
Ø
利用Subversion的认证文件对脚本进行认证,因此能够确保只有经过认证的用户才能访问脚本。
Ø
当Apache认证用户通过后,会将认证信息保存到$_SERVER数组中,用户名为:$_SERVER["PHP_AUTH_USER"],密码为:$_SERVER["PHP_AUTH_PW"]。如此使得我们能够知道是哪一个用户要修改自己的密码以及用户的原密码。
Ø
利用php能够执行系统命令的功能,根据上述信息和用户输入拼出要执行的命令字符串,使用System()函数进行执行htpasswd,从而达到修改密码的作用。
2.
脚本运行环境
脚本部署在SVN服务器中,并且SVN服务器的Apache服务必须支持php,才能执行此脚本。具体如下:
Ø
SVN服务
Ø
Apache
服务:Apache必须支持php
Ø php5 :php5是提供支持修改密码的脚本环境(如果系统存在就不需要安装,如果没有安装则可以按照以下方法安装。)

3.
svn密码修改脚本
3.1. 脚本

3.2. 脚本中的配置
脚本中要配置两个路径:
$passwdfile="/svnroot/repository/test1/conf/passwd";
(test1库的密码文件的路径)
$command='"/usr/local/apache2/bin/htpasswd"
-b '.$passwdfile." ".$username." ".$newpass; (修改密码命令htpasswd的路径)
3.3. http.conf的配置
# vi
/usr/local/apache2/conf/httpd.conf(apache的配置文件)
增加以下内容:
alias /pass1 /svnroot/repository/test1/passwd.php
<Directory
/svnroot/repository/test1 >
AuthName
"Subversion PasswdChanged"
AuthType Basic
AuthUserFile
/svnroot/repository/test1/conf/passwd
Require valid-user
</Directory>
说明:
Ø
alias
/pass1 /svnroot/repository/test1/passwd.php
为脚本passwd.php自定义一个别名, 访问的时候使用路径http://127.0.0.1/pass1即可。
Ø
<Directory
/svnroot/repository/test1 >
/svnroot/repository/test1为passwd.php的目录。
Ø
/svnroot/repository/test1/conf/passwd 为test1库的密码文件的路径。
客户端访问URL: http://127.0.0.1/pass1(127.0.0.1为SVN服务器IP地址,端口号为默认端口80),输入用户名和密码就可以进入修改密码页面了。