前言
今天组长要我给新员工添加svn 的权限,以及赋予他们权限访问指定的目录,于是就顺手写个教程吧,毕竟好记性不如烂笔头
一、xshell登陆服务器
用xshell登陆服务器,cd切换到服务器中svn的项目仓库目录中,然后切换到conf文件中,会看到3个文件,分别是
authz、passwd、svnserve.conf
linux操作熟练的同志们,可以直接在xshell里面操作,通过vi命令分别去修改里面的内容,我是知道命令,但是不太熟练,通过vi操作不怎么方便,于是我这里就偷懒,直接通过sheel里面的【新建文件传输】按钮进入了,然后找到这三个文件,下载下到本地,然后进行编辑操作。
二、编辑svnserve.conf文件,进行svn配置
首先编辑svnserve.conf主配置文件,主要是对以下几项修改
[general]
anon-access = none #取消匿名访问
auth-access = write #授权用户有可写权限
password-db = passwd #指定用户配置文件,后面会用到
authz-db = authz #指定权限配置文件,后面会用到
如果后面大家要用到组权限的话,大家看authz-db = authz 前面应该会有 # 号键,记得去掉,这样才能在下面分配组权限的时候,才能起作用。
三、编辑passwd文件,添加用户
建立svn用户以及密码:
[users] aaa=aaa123 bbb=bbb123 ccc=ccc123 ddd=ddd123
四、编辑authz,配置用户组和权限
配置组:
[groups] # harry_and_sally = harry,sally # harry_sally_and_joe = harry,sally,&joe # [/foo/bar] # harry = rw # &joe = r # * = # [repository:/baz/fuz] # @harry_and_sally = rw # * = r 总管理员 = admin 开发组 = qqq,www,eee,rrr 运维组 = ttt,yyy,uuu,iii 测试组 = aaa,bbb,ccc,ddd
配置各个组权限:
[/] #[/]表示是svn根目录,标签后的用户拥有根目录权限 @总管理员 = rw #分配给总管理员用户组根目录的读写权限 @开发组 = rw #分配给开发组用户组根目录的读写权限 *= #没有分配权限的用户没有读写权限 [/运维知识库] #根目录下面有一个[运维知识库]文件夹, @运维组 = rw #分配给运维组用户组根目录的读写权限 zzz = rq #分配读写权限给zzz用户,为单个用户分配权限 [/测试知识库] @测试组 = rw
拓展:这样的目录还是简单的,那假如目录是多级目录呢
helloword仓库:
abc项目
def项目
产品部
开发部
数据部
运维知识库
测试知识库
现在对于def项目中,我不想让产品部的人看到开发部和数据部的目录下面的数据怎么办?可以通过 *= 来设置,没有设置权限的人统统不能访问,* = 这一句的目的,就是割断权限继承性,使得管理员可以定制某个目录及其子目录的权限,从而完全避开其父目录权限设置的影响
五、替换原来的三个conf文件并且重启svn
最后就是将自己修改的svnserve.conf ,passwd,authz 三个目录替换原来的三个文件就可以了
然后用下面的命令重启一下svn
查看svn进程:ps -ef | grep svn
强制杀死进程:kill - 9 进程号
重启svn:svnserve -d -r /opt/svn
最后看看是不是成功了,可以在本地测试一下,看看对应的权限是不是已经有了,不是该组的用户应该不能访问没有赋予权限的目录的