mim*_*ock 1 linux git file-permissions
我有一个临时站点,它是 git 存储库的工作目录。如何设置 git 让开发人员在不更改修改文件组的情况下拉出分支或发布?
一个例子。假设我有两个开发人员,robin 和 david。他们都在 git-users 组中,所以最初他们都可以在 site.php 上拥有写权限。
-rw-rw-r-- 1 robin git-users 46068 Nov 16 12:12 site.php
drwxrwxr-x 8 robin git-users 4096 Nov 16 14:11 .git
Run Code Online (Sandbox Code Playgroud)
在 robin-server1$ git pull origin master 之后:
-rw-rw-r-- 1 robin robin 46068 Nov 16 12:35 site.php
drwxrwxr-x 8 robin git-users 4096 Nov 16 14:11 .git
Run Code Online (Sandbox Code Playgroud)
而且david对site.php没有写权限,因为组从'git-users'变成了'robin'。从现在开始,当 david 尝试拉取到此存储库时,他将获得权限被拒绝。
小智 5
这最好通过设置所有目录的权限来解决。如果您设置了组的“粘性”位,则当组成员修改它们时,目录中的所有文件都将保持该目录的组。因此,要在临时站点上快速设置它,请执行以下操作:
chmod g+ws [directory]
find [directory] -type d -exec chmod g+ws {} \;
find [directory] -type f -exec chmod g+w {} \;
Run Code Online (Sandbox Code Playgroud)
第一个命令为站点顶级目录中的组设置写入位和粘滞位。第二个然后找到顶级文件夹的所有子目录并执行相同的操作。第三个然后确保该组具有对所有文件的写访问权限。
当您最初创建 git 存储库时,您可以使用以下--shared
选项让它自动执行上述操作:
git create --shared [directory]
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1992 次 |
最近记录: |