操作系统:Ubuntu服务器10.04 LTS
我在权限方面遇到了一个奇怪的问题,并且似乎无法找出导致该问题的原因。
设置如下:
Git 存储库文件夹(以及其中的文件)由 root 拥有,我们用于项目的组具有 rws 权限,例如:
ll /path/to/project
drwxrwsr-x 7 root project 4096 2013-03-14 19:19 project
我们的 jenkins 用户是我们为项目创建的所有组的成员,包括示例中的组。 jenkins 应用程序由 jenkins 用户启动,以确保它具有对项目文件夹的完全访问权限。
如果我删除这些 git 文件夹上“其他”的读取和执行权限,我们的构建就会失败,并指出:
fatal: '/path/to/project' does not appear to be a git repository
ps:没有 SELinux 运行
答案1
我猜这是您对存储库中子目录的权限。
# Set the same ownerships for every file and directory within the repository
sudo chown -R root:project /path/to/project
# Remove permissions for others on all files
sudo chmod o-rwx $(find /path/to/project -not -type d)
如果您希望组成员写回更改:
# Set permissions for all subdirectories
sudo chmod 2770 $(find /path/to/project -type d)
如果您希望群组成员具有只读访问权限:
# Remove write permissions for group members for every file
sudo chmod g-w $(find /path/to/project -not -type d)
# Set permissions for all subdirectories
sudo chmod 2750 $(find /path/to/project -type d)
现在,只要 jenkins 用户是项目组的成员,他就应该能够毫无问题地克隆 git 存储库。
然而,如果您的系统启用了 SELinux,事情可能会变得有点棘手。
快乐编码:)