我最近用 gitolite 设置了一个 Ubuntu 服务器,它基本运行良好。然而,在我下载并设置一个 web-gui (gitlist) 来共享我的存储库后出现了一个问题。
我确信问题在于每次我推送一些更新时,存储库中某些参考文件的文件权限都会发生变化,Apache 无法访问它们(因此,web-gui 将无法访问存储库)。
我安装的时候是按照以下步骤进行的:
- 创建一个 git 用户并为该用户设置存储库。
- 使用以下命令将
www-data
用户添加到 git-groupusermod -a -G git www-data
- 确保 git 是存储库的组:
sudo chgrp -R git repositories/
- 在文件夹上使用 chmod 为组中的所有用户授予访问权限:
sudo chmod ug+s repositories/
当我使用 git 进行推送时,2-3 个文件的文件权限就会发生更改(例如'/repository/[名称]/refs/head/master'文件)并将其设置为-rw-------
,只有 git 用户可以访问该文件。其他用户都无法在此处读取或写入。
我希望chmod 755
在执行 git push 之后这些文件能够保留给定的权限(例如),这样我就不需要在每次有人推送时更新权限。
答案1
由于这是一个问答网站,我经过大量的谷歌搜索后找到了答案并解决了这个问题。
基本问题可以追溯到设置的 umask,它在推送时屏蔽了所有文件 - 我必须更改它。为此,我做了以下操作:
打开我的存储库根目录中的 .gitolite.rc 文件并设置变量:
$REPO_UMASK = 0022
(将 Umask 设置为您想要的掩码)。此后,我的文件不会被剥夺组的读取权限。