use*_*147 25 permissions chmod
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
Run Code Online (Sandbox Code Playgroud)
这是 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
Run Code Online (Sandbox Code Playgroud)
我以前从未见过这个。即使使用 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
Run Code Online (Sandbox Code Playgroud)
编辑更多
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
Run Code Online (Sandbox Code Playgroud)
嗯……这是什么?
Zan*_*nna 33
发生这种情况是因为树中有一个更高的目录,您没有执行权限。如果父目录对某个用户没有执行权限,则该用户无法统计任何子目录,而不管这些子目录的权限如何。
例子:
$ 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
Run Code Online (Sandbox Code Playgroud)
即使我是目录 'brownies' 的所有者并且所有用户都有权读取和输入它,但如果其父目录没有执行权限,我将无法访问它。
使用组来管理权限比给目录 777 权限更好。你确定你需要这样做吗?
如何以更安全的方式解决问题:
让我们假设在/var/opt/gitlab目录上你有这样的东西:
drwxr-x--- 5 git git 4096 aug 14 17:30 gitlab
Run Code Online (Sandbox Code Playgroud)
将您自己和所有其他需要权限的用户添加到 git 组,例如:
sudo usermod -a -G john git
Run Code Online (Sandbox Code Playgroud)
用户必须注销并重新登录才能生效。顺便说一句,即使子目录需要写权限,您也不需要将其添加到父目录中,因此您根本不必使用chmod。您可能希望更改子目录权限以防止任何人对其进行写入:
chmod 775 /var/opt/gitlab/git??-data/repositories/GL??/www.git/custom_hooks
Run Code Online (Sandbox Code Playgroud)
或者
chmod o-w /var/opt/gitlab/git??-data/repositories/GL??/www.git/custom_hooks
Run Code Online (Sandbox Code Playgroud)