web-dev-qa-db-ja.com

777フォルダーで許可が拒否されました

john@ubuntu01:~$ Sudo ls -l /var/opt/gitlab/git-data/repositories/GL/www.git
total 25068
drwxr-xr-x  2 git  git      4096 aug 14 19:58 branches
-rw-r--r--  1 git  git        66 aug 14 19:58 config
drwxrwxrwx  2 root root     4096 aug 15 14:56 custom_hooks
-rw-r--r--  1 git  git        73 aug 14 19:58 description
-rw-r--r--  1 git  git        23 aug 14 19:58 HEAD
lrwxrwxrwx  1 git  git        47 aug 14 19:58 hooks -> /opt/gitlab/embedded/service/gitlab-Shell/hooks
drwxr-xr-x  2 git  git      4096 aug 14 19:58 hooks.old.1471193907
-rw-r--r--  1 git  git      1329 aug 15 14:48 index
drwxr-xr-x  2 git  git      4096 aug 15 13:58 info
drwxr-xr-x 71 git  git      4096 aug 15 14:55 objects
-rw-r--r--  1 git  git        98 aug 15 13:58 packed-refs
-rw-r--r--  1 git  git  25618530 aug 15 14:03 post-receive.log
drwxr-xr-x  5 git  git      4096 aug 14 20:31 refs
john@ubuntu01:~$ ls -l /var/opt/gitlab/git-data/repositories/GL/www.git
ls: cannot access '/var/opt/gitlab/git-data/repositories/GL/www.git': Permission denied

ここにACLがあります

john@ubuntu01:~$ Sudo lsattr /var/opt/gitlab/git-data/repositories/GL/www.git/custom_hooks
-------------e-- /var/opt/gitlab/git-data/repositories/GL/www.git/custom_hooks/post-receive

これを見たことがありません。 777でもLSに許可がありませんか?開発をより便利にするために、このフォルダーを共有する必要があります。どうすれば解決できますか?ありがとうございました。

編集済み:(リクエストはこちら)

john@ubuntu01:~$ Sudo ls -ld /var/opt/gitlab/git-data/repositories/GL/www.git
drwxrwxrwx 8 git git 4096 aug 15 14:48 /var/opt/gitlab/git-data/repositories/GL/www.git
john@ubuntu01:~$ Sudo ls -ld /var/opt/gitlab/git-data/repositories/GL/www.git/custom_hooks
drwxrwxrwx 2 root root 4096 aug 15 14:56 /var/opt/gitlab/git-data/repositories/GL/www.git/custom_hooks

さらに編集

Sudo ls -ld /var/opt/gitlab/git-‌​data/repositories/GL/‌​www.git
ls: cannot access '/var/opt/gitlab/git-‌​data/repositories/GL/‌​www.git': No such file or directory

うーん...これは何ですか?

11
user1797147

これは、実行権限のないツリーの上位にディレクトリがあるために発生します。親ディレクトリに一部のユーザーの実行権限がない場合、そのユーザーは、それらのサブディレクトリの権限に関係なく、サブディレクトリを統計できません。

例:

$ ls -l cake
drwxr-xr-x 2 zanna zanna 4096 Jul 12 11:43 brownies
$ chmod 666 cake
$ ls -l cake/brownies
ls: cannot access 'cake/brownies': Permission Denied

私はディレクトリ「brownies」の所有者であり、すべてのユーザーが読み取りと入力の許可を持っていますが、その親ディレクトリに実行許可がない場合はアクセスできません。

許可を管理するには、ディレクトリ777に許可を与えるよりも グループを使用 の方が適切です。本当にそうする必要がありますか?

より安全な方法で問題を修正する方法:

/var/opt/gitlabディレクトリに次のようなものがあると仮定しましょう。

drwxr-x--- 5 git git 4096 aug 14 17:30 gitlab

自分とgitグループへのアクセス許可が必要な他のすべてのユーザーを追加します。次に例を示します。

Sudo usermod -a -G john git

これを有効にするには、ユーザーはログアウトして再度ログインする必要があります。サブディレクトリに書き込み権限が必要な場合でも、親ディレクトリに追加する必要はありません。そのため、chmodを使用する必要はまったくありません。サブディレクトリのアクセス許可を変更して、誰も書き込みできないようにすることができます。

chmod 775 /var/opt/gitlab/git‌​-data/repositories/GL‌​/www.git/custom_hooks

または

chmod o-w /var/opt/gitlab/git‌​-data/repositories/GL‌​/www.git/custom_hooks
17
Zanna