내부에는 시스템에 대한 메모가 담긴 폴더가 있습니다.
나는 user1로 로그인했습니다
cd masternotes
다음을 생산합니다:
bash: cd: mastersnotes: permission denied
whoami
다음을 생산합니다:user1
ls -l
다음을 생산합니다:
drw-rw-rw-. 2 user1 user1 4096 Mar 26 20:47 masternotes
ls -l
디렉토리 내부에서는 다음을 생성합니다.
-rw-rw-rw-. 7 user1 user1 345 Oct 7 2006 crontab
-rw-rw-rw-. 7 user1 user1 348 Oct 7 2006 crontab~
-rw-rw-rw-. 7 user1 user1 3702 Oct 7 2006 grep_usage.txt
-rw-rw-rw-. 7 user1 user1 91868 Oct 7 2006 lvm-layout-10-14-03.tif
-rw-rw-rw-. 7 user1 user1 30 Oct 7 2006 mysql
-rw-rw-rw-. 7 user1 user1 35764 Oct 7 2006 notes
chmod -R 666 masternotes
폴더를 실행해봤습니다 .
chown
나는 루트로 실행 하고 chgrp
루트로 갔다가 다시 user1로 돌아갔습니다.
루트는 내려와 폴더에 들어가서 파일을 열 수 있습니다.
user1은 할 수 없습니다.
여기서 무슨 일이 일어나고 있는지에 대한 단서가 있습니까?
답변1
이것은권한문제가 아니라 소유권 문제입니다.
실행 권한( 에 약어 로 x
표시됨 )은 귀하가 표시한 권한에 눈에 띄게 없습니다.-
rw-
실행 권한은 일반 파일과 디렉터리에 대해 매우 다르게 작동합니다. 디렉토리의 경우 실행 권한은 다음 기능을 제공합니다.디렉토리를 입력하세요(즉, cd
파일 관리자에서 열거나 파일 관리자에서 열 수 있음) 또한 디렉터리에 있는 파일에 액세스하려고 시도하는 기능도 제공합니다(성공할지 여부는 액세스되는 파일의 권한을 포함하여 다른 권한에 따라 달라지기도 함).
root
일반적인 방식으로 실제로 권한에 묶여 있지 않기 때문에 디렉터리에 들어갈 수 있습니다. 여러 가지 방법으로 실행되는 명령과 응용 프로그램은 root
사용자의 희망 사항을 따르기 위해 권한을 존중하려고 합니다. 그러나 root
모든 파일이나 디렉터리에서 모든 작업(OS가 수행할 수 있는 작업)을 수행할 수 있는 권한이 있습니다. root
셸 에서 cd
실행 권한이 없는 디렉터리에 대한 ing은 성공합니다.
해결책문제는 다음을 실행하는 것입니다.
chmod u+x masternotes
그러면 ( ) 에게 디렉터리에 대한 ( ) 실행 권한( ) +
의 소유자가 부여됩니다.masternotes
u
x
그런 다음 일반 사용자로서 디렉터리에 들어가서 거기에 있는 파일에 액세스하려고 시도할 수 있습니다.
그룹 소유자의 구성원도 이 작업을 수행할 수 있도록 하려면 대신 다음을 실행할 수 있습니다.
chmod ug+x masternotes
그러나 아마도 귀하는 폴더를 소유한 사용자별 그룹의 유일한 구성원일 것입니다.
chmod
여기 명령 은~ 아니다다음 과 같이 실행해야 합니다 root
. 의도적으로~ 아니다두 명령 중 하나에 포함됩니다 sudo
. 너소유하다폴더에 대한 권한을 직접 변경할 수 있으므로 직접 root
변경할 필요는 없습니다.
만약 당신이 관심이 있다면실행 권한을 숫자로 설정, 추가하는 각 숫자에 대해 다음을 기억하세요(0부터 시작):
- 읽기용 4개.
- 쓰기용 2개.
- 실행의 경우 1입니다.
예를 들어, 모든 사람이 읽고 실행할 수 있도록 하려는 경우some-file
하지만 소유자만 쓸 수 있으려면 다음을 사용합니다.
chmod 755 some-file
나는 추천한다커뮤니티 문서의 FilePermissions, 실행 가능 비트와 폴더에 대한 특별한 의미를 포함하여 Ubuntu의 파일 권한에 대한 자세한 내용을 읽어보세요.