由于在linux系统Apache+svn服务器,用户需要自定义密码怎么办呢?

1.创建脚本目录

mkdir -p /var/www/svn/svntools

2.创建apache配置文件

touch /etc/httpd/conf.d/alias.conf

3.输入以下内容:

Alias /svntools "/var/www/svn/svntools"  
    <Directory "/var/www/svn/svntools">  
            Require valid-user  
            AuthType Basic  
            AuthName "svn tools"  
            AuthUserFile "/var/www/svn/passwd"

</Directory>

4.创建修改密码的php脚本,当然不一定是php脚本,js脚本也可轻易做到等等

  1. <?php
  2. $username = $_SERVER["PHP_AUTH_USER"]; //获取当前用户名
  3. $authed_pass = $_SERVER["PHP_AUTH_PW"]; //获取当前用户密码
  4. $input_oldpass = (isset($_REQUEST["oldpass"]) ? $_REQUEST["oldpass"] : ""); //输入的原密码
  5. $newpass = (isset($_REQUEST["newpass"]) ? $_REQUEST["newpass"] : ""); //输入的新密码
  6. $repeatpass = (isset($_REQUEST["repeatpass"]) ? $_REQUEST["repeatpass"] : ""); //输入的重复密码
  7. $action = (isset($_REQUEST["action"]) ? $_REQUEST["action"] : ""); //以hide方式提交到服务器的action
  8. if($action!="modify"){
  9. $action = "view";
  10. }
  11. else if($authed_pass!=$input_oldpass){
  12. $action = "oldpasswrong";
  13. }
  14. else if(empty($newpass)){
  15. $action = "passempty";
  16. }
  17. else if($newpass!=$repeatpass){
  18. $action = "passnotsame";
  19. }
  20. else{
  21. $action = "modify";
  22. }
  23. ?>
  24. <html>
  25. <head>
  26. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  27. <title>SVN密码修改</title>
  28. </head>
  29. <body>
  30. <?php
  31. //action=view 显示普通的输入信息
  32. if ($action == "view"){
  33. ?>
  34. <style type="text/css">
  35. <!--
  36. table {
  37. border: 1px solid #CCCCCC;
  38. background-color: #f9f9f9;
  39. text-align: center;
  40. vertical-align: middle;
  41. font-size: 9pt;
  42. line-height: 15px;
  43. }
  44. th {
  45. font-weight: bold;
  46. line-height: 20px;
  47. border-top-width: 1px;
  48. border-right-width: 1px;
  49. border-bottom-width: 1px;
  50. border-left-width: 1px;
  51. border-bottom-style: solid;
  52. color: #333333;
  53. background-color: f6f6f6;
  54. }
  55. input{
  56. height: 18px;
  57. }
  58. .button {
  59. height: 20px;
  60. }
  61. -->
  62. </style>
  63. <br><br><br>
  64. <form method="post">
  65. <input type="hidden" name="action" value="modify"/>
  66. <table width="220" cellpadding="3" cellspacing="8" align="center">
  67. <tr>
  68. <th colspan=2>SVN密码修改</th>
  69. </tr>
  70. <tr>
  71. <td>用户名:</td>
  72. <td align="left"> <?=$username?></td>
  73. </tr>
  74. <tr>
  75. <td>原密码:</td>
  76. <td><input type=password size=12 name=oldpass></td>
  77. </tr>
  78. <tr>
  79. <td>用户密码:</td>
  80. <td><input type=password size=12 name=newpass></td>
  81. </tr>
  82. <tr>
  83. <td>确认密码:</td>
  84. <td><input type=password size=12 name=repeatpass></td>
  85. </tr>
  86. <tr>
  87. <td colspan=2>
  88. <input onclick="return loginIn(this.form)" class="button" type=submit value="修 改">
  89. <input name="reset" type=reset class="button" value="取 消">
  90. </td>
  91. </tr>
  92. </table>
  93. </form>
  94. <?
  95. }
  96. else if($action == "oldpasswrong"){
  97. $msg="原密码错误!";
  98. }
  99. else if($action == "passempty"){
  100. $msg="请输入新密码!";
  101. }
  102. else if($action == "passnotsame"){
  103. $msg="两次输入密码不一致,请重新输入!";
  104. }
  105. else{
  106. $passwdfile="/var/www/svn/project/conf/passwd";
  107. $command='"htpasswd" -b '.$passwdfile." ".$username." ".$newpass;
  108. system($command, $result);
  109. if($result==0){
  110. $msg="用户[".$username."]密码修改成功,请用新密码登陆.";
  111. }
  112. else{
  113. $msg="用户[".$username."]密码修改失败,请和管理员联系!";
  114. }
  115. }
  116. if (isset($msg)){
  117. ?>
  118. <script language="javaScript">
  119. <!--
  120. alert("<?=$msg?>");
  121. window.location.href="<?=$_SERVER["PHP_SELF"]?>"
  122. //-->
  123. </script>
  124. <?
  125. }
  126. ?>
  127. </body>
  128. </html>

可能出现问题

(1).php文件放置位置 ? /var/www/svn/svntools/svnpass.php

(2).访问路径?http://ip:port/svntools/svnpass.php

(3).apache端口冲突?修改/etc/httpd/conf/httpd.conf中的端口号

(4).php文件乱码问题?查看php文件格式是否为utf8

(5).修改passwd权限问题? chown root:root passwd chmod 777 * -R  chmod -R passwd 777 chmod 777 passwd -R

(6).
如查看apache日志中有如下错误[Wed Jun 13 09:34:34.462360 2018] [core:notice] [pid
22132] AH00094: Command line: '/usr/sbin/httpd -D FOREGROUND'
sudo: unable to open audit system: Permission denied
sudo: pam_open_session: System error
sudo: policy plugin failed session initialization

sudo: unable to open audit system: Permission denied?

解决方法1:setenforce 0 :用于关闭selinux防火墙,但重启后失效。

[root@localhost ~]# setenforce 0

[root@localhost ~]# /usr/sbin/sestatus 1、关闭firewall防火墙,保证apache能够访问正常。2、没有关闭selinux,时出现了如上错误。
解决方法2: 永久关闭修改selinux的配置文件,重启后生效。
打开 selinux 配置文件
[root@localhost ~]# vim /etc/selinux/config
修改 selinux 配置文件
将SELINUX=enforcing改为SELINUX=disabled,保存后退出
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=enforcing
# SELINUXTYPE= can take one of three two values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected.
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted
此时获取当前selinux防火墙的安全策略仍为Enforcing,配置文件并未生效。
[root@localhost ~]# getenforce
Enforcing
重启
[root@localhost ~]# reboot
验证
[root@localhost ~]# /usr/sbin/sestatus
SELinux status:                 disabled
[root@localhost ~]# getenforce

Disabled

(7)如果出现用户权限不足?
首先 查看你的apache用户或者nginx php-fpm用户
可以使用 ps -ef  | grep httpd 命令来查看  其他同理
经查我的apache用户为apache用户
然后 visudo   或者 vim /etc/sudoers 找到
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL这一行 在下边追加

    1. apache ALL=(root)  NOPASSWD:ALL

用户svn密码自定义的更多相关文章

  1. win10怎么修改svn的用户和密码

    win10怎么修改svn的用户和密码(一般为默认),其他的系统也差不多 方法/步骤 1.方法一: 1.双击我的电脑在c盘找到auth文件夹 C:\Users\系统帐户名\AppData\Roaming ...

  2. 添加linux中svn的用户和密码

    1:首先找到svn路径 find / -iname "svn" 一般找到svn路径之后就可以找到配置文件位置啦 svn/svnrepos/jgcp/conf 2:进入目录之后修改a ...

  3. 配置svn用户及密码

    配置账户及密码   格式: user=passwd 配置新的账户 [root@mysql conf]# vim passwd 创建两个账户 [root@mysql conf]# egrep -v &q ...

  4. 系统开发中使用拦截器校验是否登录并使用MD5对用户登录密码进行加密

    项目名称:客户管理系统 项目描述: 项目基于javaEE平台,B/S模式开发.使用Struts2.Hibernate/Spring进行项目框架搭建.使用Struts中的Action 控制器进行用户访问 ...

  5. 忘记SVN密码怎么办

    1:下载TSvnPwd.exe 2:使用wireshark抓包.例如: PROPFIND /svn/dev2/!svn/vcc/default HTTP/1.1Host: 192.168.156.1: ...

  6. 如何删除eclipse中已经保存的svn密码

    一.打开eclipse--->点击Window--->点击Perference,打开eclipse配置,输入svn,然后点击svn,找到下方svn接口,查看下svn是什么类型的接口,如果是 ...

  7. django用户认证系统——自定义认证后台8

    Django auth 应用默认支持用户名(username)进行登录.但是在实践中,网站可能还需要邮箱.手机号.身份证号等进行登录,这就需要我们自己写一个认证后台,用于验证用户输入的用户信息是否正确 ...

  8. svn密码 在服务端 到底是明文保存,还是密文保存

    svn密码 在服务端 到底是明文保存,还是密文保存 之前在ubuntu上搭建svn服务端,记得密码就是明文保存的, 但最近项目,我们老大说,他搭建的是加密后的,我就比较纳闷了, 经过偷偷的瞄一下,不就 ...

  9. Django项目:CRM(客户关系管理系统)--45--37PerfectCRM实现King_admin添加用户时密码加密

    #views # ————————02PerfectCRM创建ADMIN页面———————— from django.shortcuts import render # ————————04Perfe ...

随机推荐

  1. 【codeforces 520B】Two Buttons

    [题目链接]:http://codeforces.com/contest/520/problem/B [题意] 给你一个数n; 对它进行乘2操作,或者是-1操作; 然后问你到达m需要的步骤数; [题解 ...

  2. 【t065】最敏捷的机器人

    Time Limit: 1 second Memory Limit: 128 MB [问题描述] [背景] Wind设计了很多机器人.但是它们都认为自己是最强的,于是,一场比赛开始了~ [问题描述] ...

  3. Centos 6.5 配置hadoop2.7.1

    1 Centos 6.5 编译hadoop2.7.1 主机配置: sudo yum install gcc gcc-c++ sudo yum install ncurses-devel sudo yu ...

  4. python开启GPU加速

    看了好多教程都提到了使用 os.environ["CUDA_VISIBLE_DEVICES"] = "1" 或者export CUDA_VISIBLE_DEVI ...

  5. Flex AIR应用的启动闪屏(必须)

    说明: 一款移动应用,它必须具有启动屏幕,这点可以从我们常见的手机应用观察知道(如,你启动一个QQ,开始大约10秒钟会停留在一个界面上,之后才跳转到登陆或者是主界面). 在air移动应用中,如果不添加 ...

  6. Java 自带性能监控工具:监视和管理控制台 jconsole 的使用

    1. 前言想验证你对 jvm 配的一些调优参数(比如 Xms.Xmx 等)有没有起作用吗?想不想实时监控你自定义的线程池的在实际运行时的线程个数.有没有死锁?应用出现 java.lang.OutOfM ...

  7. 2018-8-10-如何入门-C++-AMP-教程

    title author date CreateTime categories 如何入门 C++ AMP 教程 lindexi 2018-08-10 19:16:51 +0800 2018-2-13 ...

  8. Notice: Use of undefined constant - assumed ' '

    昨天看手册的时候有两个范例,懒得写了,直接复制,测试一下,结果报Notice; 反复检查无果,最后, 手动敲了一遍,居然正常了,汗.... 总结:偷懒害人

  9. 12627 - Erratic Expansion——[递归]

    Piotr found a magical box in heaven. Its magic power is that if you place any red balloon inside it ...

  10. ReentrantReadWriteLock 可重入的读写锁

    可重入:就是同一个线程可以重复加锁,可以对同一个锁加多次,每次释放的时候会释放一次锁,直到该线程加锁次数为0,这个线程才释放锁. 读写锁: 也就是读锁可以共享,多个线程可以同时拥有读锁,但是写锁却只能 ...