svn修改密码。

注意:

1、ChangePasswd.ini、ChangePasswd.cgi必须放在apache的cgi-bin(根据自己电脑上的路径来,我的是/var/www/cgi-bin)下。

2、修改密码文件的所有者是apache,如果不是,执行chown apache:apache passwd(密码文件)。

3、如果密码是用htpasswd -c 或-m所建,执行htpasswd -b /etc/httpd/passwd usrname password更新。

一、创建ChangePasswd.ini文件

创建一个空文件:

a.将其命名为ChangePasswd.ini并将以下内容复制到此文件中。

b.注意将以下红色部分改为你自己的路径。第一行为所建用户和密码文件的路径。第二行为修改密码的日志的路径(该文件是自己建的)。

[path]

authuserfile=/etc/httpd/passwd

logfile=/var/www/cgi-bin/ChangePasswd.log

[setup]

pwdminlen=6

[html]

title=SVN用户密码自助修改

description=SVN用户密码自助修改

yourname=用户名

oldpwd=旧密码

newpwd1=新密码

newpwd2=确认新密码

btn_change=修 改

btn_reset=重 置

changepwdok=成功修改密码

changepwdfailed=修改密码失败

servererror=服务器错误

passmustgreater=新密码位数必须大于

twopassnotmatched=两密码不一致

entername=请输入用户名

enterpwd=密码未输入

errorpwd=你的密码不正确

back=返回

二、创建ChangePasswd.cgi文件并设置其权限

创建一个空文件,将以下内容复制到创建的文件里并更名为ChangePasswd.cgi,设置其权限为755(可执行)

命令:chmod 755 ChangePasswd.cgi.

#!/usr/bin/perl -w

use strict;

use CGI;

my $time        = localtime;

my $remote_id   = $ENV{REMOTE_HOST} || $ENV{REMOTE_ADDR};

my $admin_email = $ENV{SERVER_ADMIN};

my $cgi = new CGI;

my $pwd_not_alldiginal = "密码不能全为数字";

my $pwd_not_allchar = "密码不能全为字符";

my $user_not_exists ="该用户不存在";

my $file_not_found ="文件不存在,请联系管理员";

my $authuserfile;

my $logfile;

my $pwdminlen;

my $title;

my $description;

my $yourname;

my $oldpwd;

my $newpwd1;

my $newpwd2;

my $btn_change;

my $btn_reset;

my $changepwdok;

my $changepwdfailed;

my $oldpwderror;

my $passmustgreater;

my $twopassnotmatched;

my $entername;

my $enterpwd;

my $errorpwd;

my $back;

&IniInfo;

if ($cgi -> param())

{#8

my $User = $cgi->param(‘UserName‘);

my $UserPwd = $cgi->param(‘OldPwd‘);

my $UserNewPwd = $cgi->param(‘NewPwd1‘);

my $MatchNewPwd = $cgi->param(‘NewPwd2‘);

if (!$User)

{&Writer_Log("Enter no user name");

&otherhtml($title,$entername,$back);}

elsif (!$UserPwd )

{&Writer_Log("Enter no OldPasswd");

&otherhtml($title,$enterpwd,$back); }

elsif (length($UserNewPwd)<$pwdminlen)

{&Writer_Log("Password‘s length must greater than".$pwdminlen);

&otherhtml($title,$passmustgreater.$pwdminlen,$back);}

elsif ($UserNewPwd =~/^\d+$/)

{&Writer_Log("New Passwd isn‘t all diginal");

&otherhtml($title,$pwd_not_alldiginal,$back);}

elsif ($UserNewPwd =~/^[A-Za-z]+$/)

{&Writer_Log("New Passwd isn‘t all char");

&otherhtml($title,$pwd_not_allchar,$back);}

elsif ($UserNewPwd ne $MatchNewPwd)

{&Writer_Log("Two new passwords are not matched");

&otherhtml($title,$twopassnotmatched,$back);}

else

{if($authuserfile)

{#6

open UserFile, "<$authuserfile" or die "打开文件失败:$!";

while (<UserFile>)

{#5

my $varstr=$_;

if($varstr =~/($User)/)

{#3

my $eqpos =index($varstr, ":");

my $UserName = substr($varstr,0,$eqpos);

my $cryptpwd = substr($varstr,$eqpos + 1,13);

next if($UserName ne $User);

if(crypt($UserPwd,$cryptpwd) eq $cryptpwd)

{#a

my $rc = system("/usr/bin/htpasswd -b $authuserfile $User $UserNewPwd");

if ($rc == 0)

{#1

&Writer_Log( $User.":Change Passwd");

&otherhtml($title,$changepwdok,$back);

}#1

else

{#2

&Writer_Log( $User.":Change Passwd Failed");

&otherhtml($title,$changepwdfailed,$back);

}#2

exit;

}#a

else

{#b

&Writer_Log("Old Passwd is Incorrect ");

&otherhtml($title,$errorpwd,$back);

}#b

exit;

}#3

else

{#4

if(eof)

{ &Writer_Log($User.":no this user");

&otherhtml($title,$user_not_exists,$back);

exit;

}

else

{next;}

}#4

}#5

close UserFile;

}#6

else

{#7

&Writer_Log($authuserfile.":no found");

&otherhtml($title,$file_not_found,$back);

}#7

}

}#8

else

{&Index_Html;}

sub IniInfo{

my $inifile = "/var/www/cgi-bin/ChangePasswd.ini";

open CGI_INI_FILE, "<$inifile" or die "打开文件失败:$!";;

while (<CGI_INI_FILE>)

{

my $eqpos =index($_,‘=‘);

my $len = length($_);

if ($_ =~/authuserfile/)

{$authuserfile= substr($_, $eqpos + 1, $len - $eqpos -2);}

elsif ($_ =~/logfile/)

{$logfile= substr($_, $eqpos + 1);}

elsif ($_ =~/pwdminlen/)

{$pwdminlen= substr($_, $eqpos + 1);}

elsif ($_ =~/title/)

{$title = substr($_, $eqpos + 1);}

elsif ($_ =~/description/)

{$description = substr($_, $eqpos + 1);}

elsif ($_ =~/yourname/)

{$yourname = substr($_, $eqpos + 1);}

elsif ($_ =~/oldpwd/)

{$oldpwd= substr($_, $eqpos + 1);}

elsif ($_ =~/newpwd1/)

{$newpwd1= substr($_, $eqpos + 1);}

elsif ($_ =~/newpwd2/)

{$newpwd2= substr($_, $eqpos + 1);}

elsif ($_ =~/btn_change/)

{$btn_change = substr($_, $eqpos + 1);}

elsif ($_ =~/btn_reset/)

{$btn_reset = substr($_, $eqpos + 1);}

elsif ($_ =~/changepwdok/)

{$changepwdok = substr($_, $eqpos + 1);}

elsif ($_ =~/changepwdfailed/)

{$changepwdfailed = substr($_, $eqpos + 1);}

elsif ($_ =~/oldpwderror/)

{$oldpwderror = substr($_, $eqpos + 1);}

elsif ($_ =~/passmustgreater/)

{$passmustgreater = substr($_, $eqpos + 1);}

elsif ($_ =~/twopassnotmatched/)

{$twopassnotmatched = substr($_, $eqpos + 1);}

elsif ($_ =~/entername/)

{$entername = substr($_, $eqpos + 1);}

elsif ($_ =~/enterpwd/)

{$enterpwd= substr($_, $eqpos + 1);}

elsif ($_ =~/errorpwd/)

{$errorpwd= substr($_, $eqpos + 1);}

elsif ($_ =~/back/)

{$back = substr($_, $eqpos + 1);}

}

close CGI_INI_FILE;

}

sub Index_Html

{

print "Content-type: text/html\n\n";

print <<END_OF_PAGE;

<html >

<head>

<title>$title</title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

</head>

<body>

<HR>

<center><h1>$description</h1>

</center>

<form method="POST" enctype="multipart/form-data" action="/cgi-bin/ChangePasswd.cgi">

<br>

<TABLE align="center">

<TR><TD
class="t_text">$yourname</TD><TD><input type="text"
name="UserName" /></TD></TR>

<TR><TD
class="t_text">$oldpwd</TD><TD><input type="password"
name="OldPwd" /></TD></TR>

<TR><TD
class="t_text">$newpwd1</TD><TD><input
type="password" name="NewPwd1" /></TD></TR>

<TR><TD
class="t_text">$newpwd2</TD><TD><input
type="password" name="NewPwd2" /></TD></TR>

</TABLE>

<br>

<TABLE align="center">

<TR><TD><input
type="submit" name="chgpasswd" value="$btn_change"> <input
type="reset" value="$btn_reset"></TD></TR>

</TABLE>

</form>

<HR>

<font color="#FF0000">注意:新密码位数必需大于$pwdminlen,且为字母与数字组合</font>

</body>

</html>

END_OF_PAGE

}

sub otherhtml{

print "Content-type: text/html\n\n";

print <<END_OF_PAGE;

<html>

<head>

<meta http-equiv="Content-Language" content="zh-cn">

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>$_[0]</title>

</head>

<body>

<p align="center"><font size="5">$_[1]</font></p>

<p align="center"><a href="/cgi-bin/ChangePasswd.cgi"><font size="4">$_[2]</font></a></p>

<HR>

</body>

</html>

END_OF_PAGE

}

sub Writer_Log{

if($logfile)

{

my $loginfo ="[".$time."] "." [".$remote_id."] "." || ".$_[0];

open LOGFILE,">>$logfile" or die "Couldn‘t open LOG FILE for writing: $!";

print LOGFILE ("$loginfo\n");

close LOGFILE;

}

}

三、创建ChangePasswd.log文件并设置其权限。

进入目标位置(即你想创建ChangePasswd.log的位置),如: /var/www/cgi-bin(根据自己的位置定),创建一个名为ChangePasswd.log的文件并赋予该文件写的权限:

命令:chmod 666 ChangePasswd.log

四、修改密码

通过http://ip:80/cgi-bin/ChangePasswd.cgi修改密码。

80对应自己设置的端口。

PS:只针对svn://地址,这样的svn用户修改,如果是http的用户是识别不了的,会提示你的密码不正确。

时间: 2024-12-17 17:08:56

svn修改密码。的相关文章

svn自助修改密码(PHP脚本实现)

#创建脚本目录 mkdir -p /var/www/svn/svntools #创建apache配置文件 touch /etc/httpd/conf.d/alias.conf #输入以下内容: Alias /svntools "/var/www/svn/svntools" <Directory "/var/www/svn/svntools"> Require valid-user AuthType Basic AuthName "svn too

jenkins SVN更改密码后出现的坑爹问题

1.前提 公司SVN账号密码和AD账号密码是绑定在一起的,为了保证代码检出总是最新,jenkins中做代码检查前总会从SVN中检出最新代码. 最近公司要求AD账户不得使用原始密码,更改密码后,jenkins在检出代码的时候出现了一个坑爹的问题:控制台打印的问题是subversion update has been canceled. 2.分析原因 subversion update has been canceled——SVN代码无法正常更新,这很明显是SVN密码更改后的副作用. 3.所做的努力

MyEclipse中SVN用户名密码的切换

WindowsXP: 将C:\Documents and Settings\Administrator\Application Data\Subversion\auth\svn.simple文件夹下的所有文件删除就行了 Application Data是隐藏文件 要先显示隐藏文件 Windows7: 将C:\Users\admin\AppData\Roaming\Subversion\auth\svn.simple文件夹下的所有文件删除就行了 其中AppData是隐藏的文件夹,也是要先显示出来才

在Exchange 2013 OWA登录页面中修改密码

透过OWA登录界面改密码对于使用Exchange的用户来说是一个很有有用的功能. 因为如果用户不在公司域环境中,当密码已经到期登录不了OWA,就没有办法通过OWA中的[选项]来改密码,当开启这项功能后,管理员和用户都可以很方便的处理密码到期的case. 早在Exchange2010的时候,我们需要通过修改CAS服务器的注册表项来实现这个功能.现在的Exchange2013已经内置了该功能,使用前只需要确认该功能属性的状态就可以了. 在最新的Exchange2013 SP1和CU5版本中,此功能在

Win7修改密码策略

第一步.Win+R打开cmd窗口输入gpedit.msc 第二步.修改密码策略(打开"计算机配置"-->"安全设置"-->"账户策略"-->"密码策略") 第三步.修改密码复杂度.密码使用期限 第四步.设置密码锁定次数 第五步.cmd下设置密码[net user administrator Hell0!jie]

MySQL5.7修改密码

MySQL5.7出来蛮久了,今天用官方的RPM包安装玩了一遍,与值之前的版本有些差异,MARK下. OS PLATFORM:Centos 7.3 安装MySQL 5.7版本,官网http://dev.mysql.com/downloads/repo/yum/ rpm -ivh  http://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm YUM安装: yum -y install mysql-community-serv

mysql 5.1版本 修改密码,及远程登录mysql数据库

mysql创建用户并授权:   格式:grant 权限 on 数据库名.表名 to 用户@登录主机 identified by "用户密码"; grant[英][grɑ:nt]   承认; 同意; 准许; 授予;  例1:允许mk用户从localhost登录 mysql>  grant all on book.* to [email protected] identified by "123456";  #允许访问book数据库下的所有表, 只能访问book表

mysql多实例忘记root密码,修改密码

1.修改配置参数 /etc/my.cnf 在 [mysqld3306] 下面加上: skip-grant-tables 2.重启MySQL mysqld_multi start 3306 3.修改密码 mysql -h127.0.0.1 -P3306 -uroot update mysql.user set password=password('test_new2_password') where user= 'root'; flush privileges; 关闭数据库 mysqld_mult

mysq安装以及修改密码

安装版MySQL是不能一键安装的,下载下来是压缩包,解压后只要进行相关配置就可以正常使用: 文章主要是记录一下,以防自己忘记: 1.首先在mysql官网--http://dev.mysql.com/downloads/mysql/  下载mysql: 2.下载后解压到对应路径 我是放在 D:\mysql-5.7.14-winx64\ 里面,解压完后改名,可以自己进行重命名: 3.配置环境变量 找到--高级系统变量--环境变量--系统变量 新建环境变量:变量名 MYSQL_HOME,变量值 D:\