777文件夹中的权限被拒绝


17
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

嗯...这是什么?


1
您正在访问的目录的权限ls未显示?
Zanna

是custom_hooks并具有drwxrwxrwx 2根根,请参见上文
user1797147 '16

1
ls: cannot access '/var/opt/gitlab/git-data/repositories/GL/www.git': Permission denied因此,向我们展示当您ls -ld /var/opt/gitlab/git-data/repositories/GL/www.git
Zanna

1
你能按照我的要求做吗?如果您没有对父目录的执行权限,则此目录上的777将无济于事
Zanna

2
显然,您的问题出在树上。继续检查权限,您会发现其中一个没有对x的许可,例如drwxr-x---
Zanna

Answers:


21

发生这种情况是因为树中有一个更高的目录,您没有执行权限。如果父目录没有某些用户的执行权限,则该用户无法声明任何子目录,无论这些子目录具有什么权限。

例:

$ 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

1
再次感谢,不,我只是在测试一些脚本。与基本的Gedit相比,在Windows上使用N ++进行编辑要舒适得多。也是最基本的Nautilus,它无法剪切内容,然后在同一时间制作新文件夹,然后粘贴...或右键单击->“新建文件夹”。
user1797147 '16
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.