Linux下 Apache+SVN 让用户自行修改SVN密码
2016-09-08 10:50
796 查看
默认在Linux下Apache+SVN没有提供用户修改密码功能,这里利用PHP脚本来为用户提供一种修改密码的方法。
第一步,用户在修改密码之前需要先登录,而登录的验证方法和访问SVN是一样的,在/etc/apache2/mods-available/alias.conf中加入如下配置
第二步,创建 /var/www/svntools 目录,创建一个php文件,如index.php,输入以下代码
第三步,修改用户密码文件权限
chown www-data:www-data /var/repository/htpasswd
第四步,访问http://hostname/svntools/index.php
PS:网上提供的修改用户密码基本都是类似这个脚本,但是注意,php的页面需要在“<?”标签后面加上“php”字符串,否则都无法正常运行。
第一步,用户在修改密码之前需要先登录,而登录的验证方法和访问SVN是一样的,在/etc/apache2/mods-available/alias.conf中加入如下配置
Alias /svntools/ "/var/www/svntools/" <Directory "/var/www/svntools"> AuthType Basic AuthName "svntools repository" AuthUserFile /var/repository/htpasswd<span style="font-family: Arial, Helvetica, sans-serif;"> </span> Require valid-user </Directory>
第二步,创建 /var/www/svntools 目录,创建一个php文件,如index.php,输入以下代码
<?php $username = $_SERVER["PHP_AUTH_USER"]; //经过 AuthType Basic 认证的用户名 $authed_pass = $_SERVER["PHP_AUTH_PW"]; //经过 AuthType Basic 认证的密码 $input_oldpass = (isset($_REQUEST["oldpass"]) ? $_REQUEST["oldpass"] : ""); //从界面上输入的原密码 $newpass = (isset($_REQUEST["newpass"]) ? $_REQUEST["newpass"] : ""); //界面上输入的新密码 $repeatpass = (isset($_REQUEST["repeatpass"]) ? $_REQUEST["repeatpass"] : ""); //界面上输入的重复密码 $action = (isset($_REQUEST["action"]) ? $_REQUEST["action"] : ""); //以hide方式提交到服务器的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"; } ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=GBK"> <title>Subversion 在线自助密码修改</title> </head> <body> <?php //action=view 显示普通的输入信息 if ($action == "view"){ ?> <script language = "javaScript"> <!-- function loginIn(myform) { var newpass=myform.newpass.value; var repeatpass=myform.repeatpass.value; if(newpass==""){ alert("请输入密码!"); return false; } if(repeatpass==""){ alert("请重复输入密码!"); return false; } if(newpass!=repeatpass){ alert("两次输入密码不一致,请重新输入!"); return false; } return true; } //--> </script> <style type="text/css"> <!-- table { border: 1px solid #CCCCCC; background-color: #f9f9f9; text-align: center; vertical-align: middle; font-size: 9pt; line-height: 15px; } th { font-weight: bold; line-height: 20px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-bottom-style: solid; color: #333333; background-color: f6f6f6; } input{ height: 18px; } .button { height: 20px; } --> </style> <br><br><br> <form method="post"> <input type="hidden" name="action" value="modify"/> <table width="220" cellpadding="3" cellspacing="8" align="center"> <tr> <th colspan=2>Subversion 密码修改</th> </tr> <tr> <td>用户名:</td> <td align="left"> <?=$username?></td> </tr> <tr> <td>原密码:</td> <td><input type=password size=12 name=oldpass></td> </tr> <tr> <td>用户密码:</td> <td><input type=password size=12 name=newpass></td> </tr> <tr> <td>确认密码:</td> <td><input type=password size=12 name=repeatpass></td> </tr> <tr> <td colspan=2> <input onclick="return loginIn(this.form)" class="button" type=submit value="修 改"> <input name="reset" type=reset class="button" value="取 消"> </td> </tr> </table> </form> <?php } else if($action == "oldpasswrong"){ $msg="原密码错误!"; } else if($action == "passempty"){ $msg="请输入新密码!"; } else if($action == "passnotsame"){ $msg="两次输入密码不一致,请重新输入!"; } else{ $passwdfile="/var/repository/htpasswd"; $command='"/usr/bin/htpasswd" -b '.$passwdfile." ".$username." ".$newpass; system($command, $result); if($result==0){ $msg="用户[".$username."]密码修改成功,请用新密码登陆."; } else{ $msg="用户[".$username."]密码修改失败,返回值为".$result.",请和管理员联系!"; } } if (isset($msg)){ ?> <script language="javaScript"> //<!-- alert("<?=$msg?>"); window.location.href="<?=$_SERVER["PHP_SELF"]?>" //--> </script> <?php } ?> </body> </html>
第三步,修改用户密码文件权限
chown www-data:www-data /var/repository/htpasswd
第四步,访问http://hostname/svntools/index.php
PS:网上提供的修改用户密码基本都是类似这个脚本,但是注意,php的页面需要在“<?”标签后面加上“php”字符串,否则都无法正常运行。
相关文章推荐
- Apache+SVN-让用户自行修改SVN密码
- 服务端linux +svn+apache 实现客户端svn用户自主修改密码
- svn结合apache后用户修改密码的解决方案
- linux svn+apache 配置客户自助修改密码
- 修改linux用户密码
- Linux下SVN远程web密码修改
- linux下如何实现的客户端修改svn密码
- linux在单用户模式下修改启动密码
- linux忘记root密码,进入单用户模式修改密码
- linux 修改用户密码+非交互设置密码
- Linux单用户模式修改root密码or禁止单用户模式增强系统安全
- 为VisualSVN Server增加在线修改用户密码的功能
- Linux单用户模式:修改ROOT密码和grub加密
- 使 svn 用户可以修改自己的密码
- linux进入单用户模式修改root密码
- linux忘记root密码,可以进入单用户模式修改密码
- 网域环境如何让用户自行修改密码
- linux 进入单用户模式修改root密码
- linux单用户模式修改密码(针对CentOS)
- linux 修改用户密码