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

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
분명히 문제는 나무 위로 올라갑니다. 계속해서 레벨을 올리고 권한을 검사하면 그 중 하나에 o에 대한 x 권한이 없음을 알 수 있습니다.drwxr-x---
Zanna

답변:


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 ++로 편집하는 것이 훨씬 편안합니다. 또한 새로운 폴더를 동시에 만들어서 붙여 넣을 수없는 초보적인 노틸러스도 ... 또는 마우스 오른쪽 버튼으로 클릭-> 새 폴더.
user1797147
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.