为了进一步提高SVN管理规范和账号安全性,要求用户能自主修改SVN的登录密码,而默认SVN好像是不提供这个功能的,所以只能另辟蹊径,参考网上资料,利用PHP来,实现通过HTTP访问的方式在线自主修改密码功能。
一、SVN配置文件
1.1 修改SVN配置文件
[root@svnback172 svn]#vim /etc/httpd/conf.d/svn.conf
#之前安装SVN的时候,已经手动创建这个文件了,详细可以参考‘SVN安装篇’
添加如下代码:
Require valid-user
AuthType Basic
AuthName "svn tools"
AuthUserFile /data/svn/sample/.htpasswd
参数说明:
:指定实现SVN密码修改功能的PHP页面路径,下面会手动创建
AuthUserFile :指定SVN账号密码的文件,重点就是针对该文件进行修改操作
二、配置PHP修改页面
2.1 创建存放PHP页面的目录,每个库一个单独目录,便于管理
[root@svnback172 svn]#mkdir /var/www/html/sample && cd /var/www/html/sample
注意:PHP页面需要放在http的根目录下,因为到时候修改SVN密码是用http页面进行在线修改的。
2.2 手动创建PHP页面,修改密码的功能就是这个页面实现的
[root@svnback172 svn]#vim index.php
//经过 AuthType Basic 认证的用户名
$username = $_SERVER["PHP_AUTH_USER"];
//经过 AuthType Basic 认证的密码
$authed_pass = $_SERVER["PHP_AUTH_PW"];
//从界面上输入的原密码
$input_oldpass = (isset($_REQUEST["oldpass"]) ? $_REQUEST["oldpass"] : "");
//界面上输入的新密码
$newpass = (isset($_REQUEST["newpass"]) ? $_REQUEST["newpass"] : "");
//界面上输入的重复密码
$repeatpass = (isset($_REQUEST["repeatpass"]) ? $_REQUEST["repeatpass"] : "");
//以hide方式提交到服务器的action
$action = (isset($_REQUEST["action"]) ? $_REQUEST["action"] : "");
if($action!="modify"){
$action = "view";
}
else if($authed_pass!=$input_oldpass){
$action = "oldpasswrong";
}
else if(empty($newpass)){
$action = "passempty";
}
else if($newpass!=$repeatpass){
$action = "passnotsame";
}
else{
$action = "modify";
}
?>
Subversion 在线自助密码修改//action=view 显示普通的输入信息
if ($action == "view"){
?>
Subversion 密码修改 | |
---|---|
用户名: | =$username?> |
原密码: | |
用户密码: | |
确认密码: | |
}
else if($action == "oldpasswrong"){
$msg="原密码错误!";
}
else if($action == "passempty"){
$msg="请输入新密码!";
}
else if($action == "passnotsame"){
$msg="两次输入密码不一致,请重新输入!";
}
else{
$passwdfile="/data/svn/sample/.htpasswd";
$command='"/usr/bin/htpasswd" -b '.$passwdfile." ".$username." ".$newpass;
system($command, $result);
if($result==0){
$msg="用户[".$username."]密码修改成功,请用新密码登陆.";
}
else{
$msg="用户[".$username."]密码修改失败,返回值为".$result.",请和管理员联系!";
}
}
if (isset($msg)){
?>
//
}
?>
重点:第134行,需要修改对应SVN库的账户密码文件。
$passwdfile="/data/svn/sample/.htpasswd";
其实,这里已经可以通过‘http://IP/sample/index.php’自主修改密码了,但是为了后面的管理和使用方便,我们再创建一个统一修改密码的链接页面;
三、配置密码修改页面
3.1 手动创建http页面,用于指定SVN库进行密码修改
[root@svnback172 svn]#vim svn.html
添加如下代码:
SVN密码在线自主修改body{
text-align:center
}
div div{
text-align:center;
padding: 2%;
}
.first_div {
margin:2% auto;
}
XXXXXXXX----SVN密码修改
sample
重点:第21行,需要修改对应SVN库的密码修改http路径
sample
如果有多个,只需要添加
以上的SVN页面配置的非常简单,有需要修饰的自行美工,这里只提供最简单的功能。
四、验证效果
4.1 重启httpd服务
[root@svnback172 svn]#systemctl restart httpd
4.2 浏览器访问:http://IP/svn.html
选择需要修改密码的SVN库,每个SVN库的密码文件都是独立的。
4.3 输入对应库的SVN密码
4.4 SVN密码修改,此处进行密码修改,会直接同步到后台的.htpasswd密码文件,至此密码修改成功!