我关注了关联今天在我的 Linux 服务器上安装 GitLab,在 Gitolite 部分,有两行用于设置文件夹的权限和所有权:
sudo chmod -R ug+rwXs,o-rwx /home/git/repositories/
sudo chown -R git:git /home/git/repositories/
在这些行之前,它创建了一个用户并将其添加到特定组:
sudo adduser --disabled-login --gecos 'GitLab' gitlab
sudo usermod -a -G git gitlab
我按照以下步骤检查了用户和权限:
gitlab@vm-leader:/home/git$ id
uid=1001(gitlab) gid=1001(gitlab) groups=1001(gitlab),105(git)
gitlab@vm-leader:/home/git$ ls -al
total 56
drwxr-xr-x 8 git git 4096 Jan 4 16:55 .
drwxr-xr-x 7 root root 4096 Jan 4 11:50 ..
-rw------- 1 git git 87 Jan 4 17:02 .bash_history
drwxr-xr-x 2 git git 4096 Jan 4 14:04 bin
drwx------ 2 git git 4096 Jan 4 14:04 .cache
-r--r--r-- 1 root root 398 Jan 4 14:04 gitlab.pub
drwxr-xr-x 5 git git 4096 Jan 4 14:01 gitolite
drwxr-x--- 6 git git 4096 Jan 4 14:04 .gitolite
-rw-r--r-- 1 git git 5064 Jan 4 14:04 .gitolite.rc
-rw-r--r-- 1 git git 37 Jan 4 14:04 .profile
-rw-r--r-- 1 git git 12 Jan 5 19:43 projects.list
drwsrws--- 6 git git 4096 Jan 5 17:29 repositories
drwx------ 2 git git 4096 Jan 5 19:43 .ssh
gitlab@vm-leader:/home/git$
根据这些输出,我相信文件夹“repositories”允许同一组用户访问,在本例中,组“git”有权访问此文件夹。此外,用户“gitlab”属于组“git”。因此,“gitlab”用户应该能够访问该文件夹。但是,我得到了这个:
gitlab@vm-leader:/home/git$ cd repositories/
bash: cd: repositories/: Permission denied
gitlab@vm-leader:/home/git$
为什么会发生这种情况以及如何解决?
附加信息:
bear@vm-leader:/home/git$ ls -ld /home/git
drwxr-xr-x 8 git git 4096 Jan 4 16:55 /home/git
答案1
看起来,/home/git 有 700 权限。为 /home/git 添加组 (g+x) 的执行权限允许您访问:
# chmod g+x /home/git
答案2
这个问题已经解决了!我通过 NFS 挂载了那个文件夹(存储库),在 NFS 服务器中,git 和 gitlab 用户都不存在。我添加了它们并为他们设置了适当的组,一切正常!我对此进行了一些测试——只有当服务器和客户端都设置了适当的用户/组时,权限才能正常工作。