zoukankan      html  css  js  c++  java
  • CentOS7.5下搭建的SVN实现删除权限控制和必须进行注释的提示操作

    需求:上传到SVN服务器的项目文件如果被普通用户误删了,虽然能恢复,但是如果删除的文件比较多,注释的内容简单,恢复的时候需要一个个的保存到本地,然后再上传到服务器上,会很麻烦,可能还会出现提交代码版本冲突的问题,那么,怎么才能禁止普通用户删除SVN服务器的项目文件呢?

    一、找到需要加权限的版本库中hooks目录下的pre-commit.tmpl文件,备份并将其重命名为pre-commit脚本文件。

    cd /var/www/svn/Network_Group/hooks     # 这是我要修改的版本库位置

    cp pre-commit.tmpl pre-commit.tmpl-backup    # 备份

    mv pre-commit.tmpl pre-commit     # 重命名

    二、修改pre-commit文件内容

    vim pre-commit,文件内容默认如下:

    注释掉73-78行的内容,增加80-91的内容,下面的脚本复制粘贴就可以

    if [ -z `$SVNLOOK log -t "$TXN" "$REPOS" |grep "[a-zA-Z0-9]"` ];then
            echo "请输入注释!" >&2
            exit 1
    fi
    USER=`$SVNLOOK author -t $TXN $REPOS`
    ADMINLIST=admin,zhangsan  # 这里是拥有删除权限的用户,逗号隔开
    if [ "`echo $ADMINLIST|grep -w $USER|wc -l`" -eq 0 ];then
            if [ `$SVNLOOK changed -t $TXN $REPOS |grep "^D "|wc -l` -gt 0 ];then
                    echo "你没有权限删除,请联系管理员删除!" >&2
                    exit 1
            fi
    fi

    ADMINLIST=admin,zhangsan  表示只有admin和zhangsan这两个用户有删除文件的权限,如果还有其他人,只需用逗号隔开,当然,这些用户名需要在conf下的passwd文件中进行配置

     

    三、给 pre-commit 脚本文件执行权限   chmod 755 pre-commit,不需要重启SVN

     

    四、测试

    1、没有输入注释时,提示:

    2、删除时若没有权限,提示:

    脚本说明:

    #!/bin/sh

    REPOS="$1"   # 库位置
    TXN="$2"   # 版本

    # Make sure that the log message contains some text.
    SVNLOOK=/usr/bin/svnlook   # svnlook的位置

    if [ -z `$SVNLOOK log -t "$TXN" "$REPOS" |grep "[a-zA-Z0-9]"` ];then   # 如果commit的用户没有输入注释
    echo "请输入注释!" >&2   # 提示错误
    exit 1   # 错误退出
    fi
    USER=`$SVNLOOK author -t $TXN $REPOS`
    ADMINLIST=GuoJiHe,melonlink   # 这里是拥有删除权限的用户,逗号隔开
    if [ "`echo $ADMINLIST|grep -w $USER|wc -l`" -eq 0 ];then   # 如果commit的用户没在ADMINLIST里面
    if [ `$SVNLOOK changed -t $TXN $REPOS |grep "^D "|wc -l` -gt 0 ];then   # 如果开头包含D(D代表删除)
    echo "你没有权限删除,请联系管理员删除!" >&2   # 提示错误
    exit 1 # 错误退出
    fi
    fi

     

    本文参考自其他博客:

    (1)https://blog.csdn.net/helijie92902/article/details/54534156

    (2)http://blog.chinaunix.net/uid-29893597-id-5594571.html

    (3)https://blog.51cto.com/laoguang/1139645

  • 相关阅读:
    【Unity】自定义编辑器窗口——拓展编辑器功能
    【Unity】AssetBundle的使用——打包/解包
    【Unity】使用Resources类管理资源
    【Unity】使用AssetDatabase编辑器资源管理
    【Unity】协程Coroutine及Yield常见用法
    【Unity】制作简易定时器(Timer)
    python3使用csv模块读写csv文件
    Python3使用csv模块csv.writer().writerow()保存csv文件,产生空行的问题
    MongoDB服务无法启动,发生服务特定错误:100
    ValueError: update only works with $ operators
  • 原文地址:https://www.cnblogs.com/opsprobe/p/11433869.html
Copyright © 2011-2022 走看看