6 远程修改svn用户口令
由于SVN+Apache架构下的用户并不是操作系统的用户,而只是Apache的用户,因此没有办法通过SSH登陆到操作系统来修改用户口令,只能另外想办法。借助Apache提供的Web服务,通过CGI或者mod_python等方式来修改authz配置文件,从而达到修改用户口令的目的。以下介绍通过perl的cgi来实现修改口令的功能,至于mod_python方法,我的实验只做了一半。
6.1 修改Apache2的配置文件
将/etc/apache2/apache2.conf 文件打开,找到如下内容(如果没有就直接添加,默认情况下好像就是没有,所以我是直接添加在文件的末尾):
#AddHandler cgi-script .cgi
修改成:
AddHandler cgi-script .cgi .pl
6.2 安装mod_perl默认包
sudo apt-get install libapache2-mod-perl2
6.3 相关配置
默认安装好后,cgi-bin的目录默认指向 /usb/lib/cgi-bin/目录。而安装apache2的时候这个目录一般是不会自动创建的。之所以选择这个目录,原因在下面这个文件:
/etc/apache2/sites-enabled/000-default
该文件是个链接,指向
/etc/apache2/sites-available/default
打开看看,里面有这样的一段,把cgi-bin目录指向了实际的/usr/lib/cgi-bin/目录。
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options ExecCGI -\MultiViews +\SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
默认情况下,上述文件不用任何修改。
6.4 获得修改口令的Perl脚本
访问ftp://192.168.19.63(或者直接与本作者联系)获得ChangePasswd.zip,将压缩包中的三个文件同时copy到/usr/lib/cgi-bin/目录。
sudo cp ChangePasswd.cgi /usr/lib/cgi-bin/
sudo cp ChangePasswd.ini /usr/lib/cgi-bin/
sudo cp ChangePasswd.log /usr/lib/cgi-bin/
6.5 修改脚本执行权限
cd /usr/lib/cgi-bin/
sudo chmod 777 ChangePasswd.cgi
sudo chmod 666 ChangePasswd.log
sudo chmod 666 /etc/subversion/passwd
之后,不用重新启动Apache服务就能通过访问URL来修改口令,直接访问URL:https://192.168.19.3/cgi-bin/ChangePasswd.cgi
验证通过后,即可显示如下修改密码界面:
如果修改成果,则显示如下界面:
ChangePasswd.cgi的详细说明,请参考附录A。