需求:上传到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 "请输入注释!" >&
exit
fi
USER=`$SVNLOOK author -t $TXN $REPOS`
ADMINLIST=admin,zhangsan # 这里是拥有删除权限的用户,逗号隔开
if [ "`echo $ADMINLIST|grep -w $USER|wc -l`" -eq ];then
if [ `$SVNLOOK changed -t $TXN $REPOS |grep "^D "|wc -l` -gt ];then
echo "你没有权限删除,请联系管理员删除!" >&
exit
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

CentOS7.5下搭建的SVN实现删除权限控制和必须进行注释的提示操作的更多相关文章

  1. CentOS7.5 下搭建SFTP

    CentOS7.5 下搭建SFTP Linux 创建用户组 groupadd sftp 创建用户test useradd -G sftp -s /sbin/nologin test -s 禁止用户ss ...

  2. Windows下搭建本地SVN服务器【转】

    转自:http://www.linuxidc.com/Linux/2015-01/111563.htm 本文介绍Windows下搭建本地SVN服务器的方法,网上资料比较少也比较旧,大都介绍的是旧版本S ...

  3. CentOS 7下搭建配置SVN服务器

    CentOS 7下搭建配置SVN服务器 1. 安装 CentOS通过yum安装subversion. $ sudo yum install subversion subversion安装在/bin目录 ...

  4. 【SVN】CentOS7.0下搭建SVN服务器

    SVN服务器搭建 最近接手了天赋吉运的SVN项目管理,那么学会搭建SVN服务器就成为了必须的技能.这篇文章就来讲一讲在CentOS7.0下如何搭建SVN服务器 1,下载安装SVN版本 yum inst ...

  5. Linux(Centos7)下搭建SVN服务器

    操作系统: CentOS 7.6 64位 第一步:通过yum命令安装svnserve,命令如下: 检测svn是否安装: rpm -qa subversion #检查现有版本,如果输入命令后没有提示的话 ...

  6. centos7系统下搭建docker本地镜像仓库

    ## 准备工作 用到的工具, Xshell5, Xftp5, docker.io/registry:latest镜像 关于docker的安装和设置加速, 请参考这篇博文centos7系统下 docke ...

  7. SVN设置删除权限

    svn是很多企业和个人用的版本控制软件,非常方便.通用的权限控制在auth文件中,但是缺点是权限较大,w的权限一旦赋予,相应用户都可以有删除svn文件的权限,但是如果不赋予w权限,又没办法commit ...

  8. centos 7搭建svn+apache及权限控制

    SVN服务器运行模式: 模式1:svn服务器单独运行 监听: 3690端口 访问: svn://IP 模式2: svn 服务器+ apache : 80 端口 访问: http://IP 1. #安装 ...

  9. Yii2搭建后台并实现rbac权限控制完整实例教程

    .安装yii2 未安装的请参考yii2史上最简单式安装教程,没有之一 已安装的请继续看下一步操作 2.配置数据库 2.1 配置数据库 修改common/config/main-local.php 实际 ...

随机推荐

  1. IBM X3650 M4 M5 设置服务器用UEFI模式启动支持磁盘GPT分区

    1 系统启动 2 按 F1 3 进入BIOS 4 进入 System Configuration 5 找到 Boot Manager 6 找到Boot Modes 7 进入Boot Modes, 找到 ...

  2. Python unittest(PyUnit)单元测试框架

    PyUnit(unittest) 是 Python 自带的单元测试框架,用于编写和运行可重复的测试.PyUnit 是 xUnit 体系的一个成员,xUnit 是众多测试框架的总称,PyUnit 主要用 ...

  3. python-mysql事务

    MySQL 事务 MySQL 事务主要用于处理操作量大,复杂度高的数据.简单的理解就是:完成一件事情的多个mysql语句的集合就是一个事务了,可能有人会想,我的mysql本来就是一句一句语句执行的啊, ...

  4. 【linux】查看端口占用情况

    netstat -nlp | grep "端口号"

  5. openshift 使用curl命令访问apiserver

    openshift版本:openshift v3.6.173.0.5 使用oc(同kubectl)命令访问apiserver资源的时候,会使用到/root/.kube/config文件中使用的配置. ...

  6. Java基础知识点总结(二)

    “https://www.runoob.com/java” 1.Java运算符优先级 2.内置数据类型的包装类 抽象类Number是所有包装类(Integer.Long.Byte.Double.Flo ...

  7. OpenLayers加载谷歌地球离线瓦片地图

    本文使用OpenLayers最新版本V5.3.0演示:如何使用OpenLayer加载谷歌地球离线瓦片地图.OpenLayers 5.3.0下载地址为:https://github.com/openla ...

  8. js中常见的字符串方法(3)

    match() match()方法只接受一个参数,要么是一个正则表达式,要么是一个 RegExp 对象. 调用这个方法本质上与调用RegExp的exec()方法相同, var text = " ...

  9. python算法介绍:希尔排序

    python作为一种新的语言,在很多功能自然要比Java要好一些,也容易让人接受,而且不管您是成年人还是少儿都可以学习这个语言,今天就为大家来分享一个python算法教程之希尔排序,现在我们就来看看吧 ...

  10. Vue框架(一)——Vue导读、Vue实例(挂载点el、数据data、过滤器filters)、Vue指令(文本指令v-text、事件指令v-on、属性指令v-bind、表单指令v-model)

    Vue导读 1.Vue框架 vue是可以独立完成前后端分离式web项目的js框架 三大主流框架之一:Angular.React.Vue vue:结合其他框架优点.轻量级.中文API.数据驱动.双向绑定 ...