web-dev-qa-db-ja.com

Linuxグループと権限-すでに権限を持っているフォルダにアクセスできないのはなぜですか?

今日、非常に奇妙な問題が発生しました... link に従ってGitLabをLinuxサーバーにインストールしました。Gitoliteセクションには、フォルダーのアクセス許可と所有権を設定する2行があります。

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$ 

これらの出力に基づいて、フォルダ「リポジトリ」は同じグループユーザーがアクセスできるようになっていると思います。この場合、グループ「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
4
Lingfeng Xiong

この問題は解決されました!そのフォルダー(リポジトリ)をNFS経由でマウントしましたが、NFSサーバーにはgitユーザーとgitlabユーザーの両方が存在しません。私はそれらを追加し、それらに適切なグループを設定しました、そしてすべてがうまくいきます!私はこれについていくつかのテストを行いました-サーバーとクライアントの両方が適切なユーザー/グループに設定されている場合にのみ、アクセス許可は正しく機能します。

0
Lingfeng Xiong

/ home/gitには700の権限があるようです。グループ(g + x)の実行権限を/ home/gitに追加すると、次のアクセス権を取得できます。

# chmod g+x /home/git
0
dchirikov