Chinaunix首页 | 论坛 | 博客
  • 博客访问: 25619
  • 博文数量: 3
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 50
  • 用 户 组: 普通用户
  • 注册时间: 2014-09-18 15:33
文章分类

全部博文(3)

文章存档

2016年(2)

2015年(1)

我的朋友

分类: 系统运维

2016-01-11 13:39:56

    svn是很多企业和个人用的版本控制软件,非常方便。通用的权限控制在auth文件中,但是缺点是权限较大,w的权限一旦赋予,相应用户都可以有删除svn文件的权限,但是如果不赋予w权限,又没办法commit,非常纠结。本文就是通过一个钩子脚本,实现用户有新增修改文件之后commit,但是又不可以删除的权限细化控制,只有制定的某些用户可以做删除动作。

    1、关于svn的安装配置,网上一搜一大堆,这里面我就不做赘述

    2、关于钩子脚本,网上也有介绍,也可以搜索到,我这里也不做说明,各位看官可以自行搜索了解,如果您对钩子脚本的实现原理也了解了,请直接pass,看第3条。

    3、现在我默认你已经对钩子脚本的作用已经有所了解了,直接上操作步骤了

        3.1、在你的svn项目目录下的hooks目录下新建脚本pre-commit,代码如下


#2016-1-11 删除权限控制 by Archer

REPOS="$1"

TXN="$2"

SVNLOOK=/opt/CollabNet_Subversion/bin/svnlook   #此处根据你的系统变量而定,你可以通过which svnlook来确定


# Make sure that the log message contains some text.

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=test1,test2  #这里是拥有删除权限的用户,逗号隔开

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 "You Don't have the pemmision of delete!Please contact your administrator!" >&2

                echo "你没有权限删除,请联系管理员删除!" >&2

                exit 1

        fi

fi

# All checks passed, so allow the commit.

exit 0


 3.2、给钩子脚本执行权限   chmod 755 pre-commit,不需要重启





阅读(5882) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~