내가 소유 한 파일에 대한 '권한이 거부 되었습니까?


13

내 사용자 bob은 자신이 이론적으로 소유 한 파일에 액세스 할 수 없습니다. Fedora Core 8을 실행하고 있습니다. 다음과 같이 말하는 것이 더 쉽습니다.

> ls -al .
total 32
drwxrwxr-x 7 bob bob 4096 May 18 14:33 .
drwxrwxr-x 4 bob bob 4096 May 12 15:44 ..
drwxr-xr-x 2 bob bob 4096 June 1 14:22 log

> cd ./log
-bash: cd: log/: Permission denied

> ls -al ./log
ls: cannot access log/..: Permission denied
ls: cannot access log/the.log: Permission denied
ls: cannot access log/.: Permission denied
total 0
d????????? ? ? ? ?            ? .
d????????? ? ? ? ?            ? ..
-????????? ? ? ? ?            ? the.log

> sudo ls -al ./log
drw-rw-r-- 3 bob bob      4096 Jun  2 04:11 .
drwxrwxr-x 7 bob bob      4096 May 18 14:33 ..
-rw-rw-r-- 1 bob bob         0 Jun  1 04:12 the.log

ls -al매우 이상한로 우수하다. 볼 권한이없는 파일이 표시되지만 권한은 표시되지 않습니까?

문제는 무엇을 일으키는가? 수리하려면 어떻게해야합니까?

답변:


18
> sudo ls -al ./log
...
drw-rw-r-- 3 bob bob      4096 Jun  2 04:11 .

Bob이 ./log에 대한 실행 권한을 가지고있는 것처럼 보이지 않으므로이를 사용할 수 없습니다 cd.

그러나

> ls -al .
...
drwxr-xr-x 2 bob bob 4096 June 1 14:22 log

그가 보여줍니다. 그러나 동일한 파일 (다른 권한, 다른 모드 시간)을 가리키는 것처럼 보이지 않습니다.

시도 sudo ls -ail ./logls -ail아이 노드가 동일한 지 알아보기.


10

파일 시스템 손상이나 selinux보다 더 간단합니다. 보시다시피 로그 디렉토리에 대한 x (실행 가능) 권한이 없습니다. 실제로 디렉토리 x의 경우 누군가가 해당 디렉토리로 변경할 수 있음을 의미합니다. 해당 파마를 수정하기 위해 "chmod + x log"를 수행하면 액세스 할 수 있습니다.


> 실제로 디렉토리 x의 경우 누군가가 해당 디렉토리 Wow로 변경할 수 있음을 의미합니다. 나는 그것을 잊고있다; 감사.
yPhil

6

파일 시스템이 손상되었거나 드라이브가 고장난 경우와 같은 것을 보았습니다. 일반적으로 수정 은 파일 시스템에 대해 fsck 를 실행 하고 발견 된 오류를 수정하도록하는 것입니다.


약 1 시간 전에 파일 서버 중 하나에서이 작업을 수행했습니다. +1
Thomas Denton

2

또한 SE / Linux 설정을 확인하십시오. 파일에 대한 권한은 파일에 액세스 할 수 있는지 여부와 관련이없는 경우가 있습니다.


1
@David Mackintosh에 동의합니다. SELinux가 사용 가능하고 파일 / 디렉토리가 다른 사람에 의해 작성되고 소유권을 bob으로 변경 한 경우 이런 일이 발생할 수 있습니다. 파일의 컨텍스트는 원래 작성자에게 유지되므로 컨텍스트가 Bob 사용자로 변경 될 때까지 액세스 할 수 없습니다.
Viky

2

파일은 변경 불가능하거나 확장 된 속성 만 추가 할 수 있습니다. 나는 전에 이런 일이 있었고 루트조차도 파일을 삭제할 수는 없었습니다.

확장 속성은 "lsattr"을 통한 뷰일 수 있으며 "chattr"을 통해 변경 될 수 있습니다.


1
> sudo ls -al ./log
drw-rw-r-- 3 bob bob 4096 6 월 2 일 04:11.

왜 "."인지 확실하지 않습니다. ./log/의 항목에 실행 권한이 없습니다. 권한은 ./log의 권한과 동일해야합니다.

chmod 755 ./log 및 chmod 755 ./log/를 사용해보십시오. 두 명령 중 하나가 액세스를 수정하는지 확인하십시오.

그 외에는 파일 시스템에서 동기화되지 않은 것처럼 보이기 때문에 파일 시스템에서 fsck를 실행하는 것이 좋습니다.


1

디렉토리의 소유권을 다른 사람으로 변경 한 다음 Bob에게 다시 시도 했습니까? Zoredache의 조언이 더 나아졌습니다-그냥 fsck하십시오!


2
이 유형의 문제는 항상 디렉토리 권한입니다.
doublejosh

1

더 간결한 답변 IMO.

디렉토리에 cd에 필요한 실행 권한이 없습니다 .

고치다:

$ sudo chmod +x ./log

재귀 적으로 :

$ sudo chmod -R +x ./log

+ x 는 실행 가능 속성을 추가하고 있습니다. -x 를 수행하여 항상 속성을 제거 할 수 있습니다

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.