svn重置密码linux,linux下如何实现的客户端修改svn密码

rar.gif文件:ChangePasswd.rar

大小:2KB

下载:

注意:

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

2、以下脚本是改动网上查找脚本之后的成果。

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

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

/etc/httpd/passwd     //密码路径

usrname                     //用户名

password                   //用户名所对应的密码。

5.需改动地方我已经用红色标出,别的请不要随意改动。

一、创建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)    {&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, "while ()

{#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, "while ()

{

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

$description

$yourname

$oldpwd

$newpwd1

$newpwd2

注意:新密码位数必需大于$pwdminlen,且为字母与数字组合

END_OF_PAGE

}

sub otherhtml{

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

print

$_[1]

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

四、修改密码

通过修改密码。

80对应自己设置的端口。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值