1 首先确认SVN代码库的文件夹,如/home/svn/DebugLog
里面会有以下几个文件夹:conf hooks
conf 里包含文件:
a authz :定义DebugLog的账号对应权限 (没有用到)
b passwd :定义DebugLog的账号密码 (没有用到)
c svnserve.conf :定义账号和权限的存放位置,文件内容如下:
anon-access =read
anon-access=write
password-db=/home/svn/passwd #密码库的文件位置 (如果用DebugLog/conf文件夹下面的passwd文件,那么直接password-db= passwd)
authz-db = /home/svn/authz #权限库的文件位置
readlm = /home/svn/DebugLog
hooks 文件夹目录下:
默认有一个pre-commit.tmpl 文件,表示没有启用该文件,如果需要使用需要重命名该文件:
操作指令:copy pre-commit.tmpl pre-commit
如果需要添加删除权限报错,可以在该文件下做如下修改
fi
USER=`$SVNLOOK author -t $TXN $REPOS` #注意不是单引号,位置在Tab键上面
ADMINLIST=test1,test2 #设置可以删除文件的SVN成员,多个用逗号隔开
if [ "`echo $ADMINLIST|grep -w $USER|wc -l`" -eq 0 ];then #如果查询到的用户不在ADMINLIST里 则 0 == 0 会进行第二个if判断; -eq 是==的意思
if [ `$SVNLOOK changed -t $TXN $REPOS |grep "^D "|wc -l` -gt 0 ] # 查询到操作指令是D开头的 则 1 > 0 ,条件成立 进入报错exit 1 所以删除不会成功;-gt 是>的意思
then # 注意:第二个if 的then 要放下来 不然if判断有问题
echo "你没有权限删除,请联系管理员删除!" >&2
exit 1 # 退出1 报错
fi
fi
exit 0
修改文件的执行权限
chmod 755 pre-commit
SVN 在【projectA】项目下子目录单独的权限设置
1 在passwd 文件下 新增新的账号和密码
[users]
clientTest = ps123
2 在authz 文件中设置权限
正常是这样的
[projectA:/]
client1=rw
client2=rw
增加子目录(子项目)subProject目录权限,subProject为客户端上传文件夹
[projectA:/subProject]
client1=rw
client2=rw
clientTest=rw
增加后,clientTest账号对projectA 目录没权限,但对/projectA/subProject 的目录有权限