1. 程式人生 > >Linux下 Apache+SVN 讓使用者自行修改SVN密碼

Linux下 Apache+SVN 讓使用者自行修改SVN密碼

預設在Linux下Apache+SVN沒有提供使用者修改密碼功能,這裡利用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”字串,否則都無法正常執行。

相關推薦

Linux Apache+SVN 使用者自行修改SVN密碼

預設在Linux下Apache+SVN沒有提供使用者修改密碼功能,這裡利用PHP指令碼來為使用者提供一種修改密碼的方法。 第一步,使用者在修改密碼之前需要先登入,而登入的驗證方法和訪問SVN是一樣的,在/etc/apache2/mods-available/alias.co

linuxapache+SVN搭建完美版

一 、先介紹一下Subversion和apache,apr,apr-util的關係         很多朋友初次接觸Subversion時不是很理解subversion和apache的關係。         我在這裡簡單說明一下svn伺服器和客戶端的安裝說明。 1.

linuxapache+svn+ssl的環境搭建(申請免費的SSL證書)

1.安裝apache2和svn server $sudo apt-get install apache2 $sudo apt-get install subversion $sudo apt-get install libapache2-svn 2.建立版本庫 $sudo

linuxApache的安裝

linux Apache 安裝 Apache是一個基金會的名字,httpd才是我們需要安裝的軟件包apr和apr-util是一個通用的函數庫,它讓httpd可以不關聯底層操作系統平臺,可以很方便的移植,如果不安裝這兩個,httpd就無法工作。步驟1、下載httpd、apr和apr-utilwget

LinuxApache與tomcat的整合

一.jdk安裝 1.在www.sun.com中下載linu的jdk1.6,下載到/home/lijing/下 2.在當前目錄下,輸入sh jdk-6u2-linux-i586-rpm.bin   看到 安裝程式在詢問您是否尊守許可協議頁面 ,回車,空格都可以,看完協議. &

LinuxApache安裝_學習記錄

Linux下Apache安裝_學習記錄 Centos 7 版本 一、Yum安裝Apache的實驗步驟: 1. Yum install httpd 2. 編輯/etc/httpd/conf/httpd.conf檔案,編輯內容如下: 刪除#ServerName

Linux Apache 的安裝與配置

1、安裝APR (Apache Portable Runtime) wget http://archive.apache.org/dist/apr/apr-1.4.5.tar.gz tar -zxf apr-1.4.5.tar.gz cd apr-1.4.5 ./configure --pre

LinuxApache服務(wsgi)

wsgi WSGI是Web Server Gateway Interface的縮寫。以層的角度來看,WSGI所在層的位置低於CGI。但與CGI不同的是WSGI具有很強的伸縮性且能運行於多執行緒或多程序的環境下,這是因為WSGI只是一份標準並沒有定義如何去實現。實際上WSGI並非CGI,因

LinuxApache服務(CGI)

CGI (通用閘道器介面) CGI 是Web 伺服器執行時外部程式的規範,按CGI 編寫的程式可以擴充套件伺服器功能。CGI 應用程式能與瀏覽器進行互動,還可通過資料庫API 與資料庫伺服器等外部資料來源進行通訊,從資料庫伺服器中獲取資料。格式化為HTML文件後,傳送給瀏覽器,也可以將從

LinuxApache服務(php)

PHP (超文字前處理器) PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文字前處理器”)是一種通用開源指令碼語言。語法吸收了C語言、Java和Perl的特點,利於學習,使用廣泛,主要適用於Web開發領域。PHP 獨特的語法混合了C、Java、Per

LinuxApache服務的基本設定(企業級)

Apache Apache是世界使用排名第一的Web伺服器軟體。它可以執行在幾乎所有廣泛使用的計算機平臺上,由於其跨平臺和安全性被廣泛使用,是最流行的Web伺服器端軟體之一。它快速、可靠並且可通過簡單的API擴充,將Perl/Python等直譯器編譯到伺服器中。同時Apache音譯為阿帕

linuxApache預設安裝路徑

如果採用RPM包安裝,安裝路徑應在 /etc/httpd目錄下 apache配置檔案:/etc/httpd/conf/httpd.conf 可以修改相關的訪問路徑及配置 Apache模組路徑:/usr/sbin/apachectl 啟動模組 web目錄:/var/www/html 專案的儲存

Linux Apache storm 環境搭建

Linux 下Apache storm 環境搭建 寫在前面 Storm的搭建 zookeeper叢集的安裝 Storm的下載和安裝 寫在前面 網上有不少搭建storm環境的方法,我也是從這些方法開始學習stor

LinuxApache、PHP、MySQL預設安裝路徑

Apache: 如果採用RPM包安裝,安裝路徑應在 /etc/httpd 目錄下 Apache配置檔案:/etc/httpd/conf/httpd.conf Apache模組路徑:/usr/sbin/apachectl Web目錄:/var/www/html 如

linuxmysql安裝報錯及修改密碼登入等等

1:下載 [root@localhost soft]# wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.19-linux-glibc2.12-x86_64.tar.gz 2:解壓檔案 [root@dbserver /]# tar -xzvf

linux apache httpd安裝配置

JDK的安裝 1.解壓 tar -zxvf jdk-8u181-linux-x64.tar.gz 2.重名名後移動到 /usr/目錄下 mv jdk-8u181-linux-x64 jdk sudo mv jdk /usr 3. 新增環境變數 sudo vim /etc/profile

linux Apache 配置虛擬主機三種方式

<VirtualHost 192.168.1.11:80>  ServerName www.test1.com  DocumentRoot /www/test1/  <Directory "/www/test1">     Options Indexes FollowSymLinks 

Linux MySQL 8.0.11 登陸 修改密碼

MySQL 8.0.11 指令與之前版本有很大的出入。安裝步驟網上有很多,這裡就不再多說。然後是指令檢視MySQL執行狀態:systemctl status mysqld開啟MySQL執行服務:systemctl start mysqld關閉MySQL與性服務:systemc

linuxapache負載均衡與jboss叢集配置

一、安裝並配置jdk 首先安裝JDK,執行命令./ jdk-6u27-linux-x64.bin,JDK安裝目錄為當前指定目錄或者是./jdk-6u33-linux-x64-rpm.bin,或者(如果是rpm格式)執行 rpm –ivh jdk-6u33-linux-amd

LinuxApache虛擬主機目錄許可權問題

原文出處:http://mtyblog.sinaapp.com/?p=25 文章摘要: ubuntu下新版Apache目錄結構有變化,本文討論一個許可權問題 APACHE虛擬主機目錄許可權問題 今天一直在ubuntu配置Apache虛擬主機。想要配置到0.0.0.0:2和0