권한 쿼리

권한 쿼리

나는 이것을 깨달을 때까지 Linux에서 권한이 어떻게 작동하는지 이해했다고 생각했습니다.

하위 폴더가 있는데,이상한다음 권한을 가진 파일이 포함되어 있습니다:

ls -aRl /mnt/oddball
/mnt/oddball:
total 120
drwx------ 2 bendipa bendipa  4096 Aug 27 00:16 .
drwxr-xr-x 6 root    root     4096 Jul  1 15:51 ..
-rw-rw-r-- 1 bendipa bendipa    12 Aug 27 00:16 Adoc.txt
-rwx------ 1 bendipa bendipa 12655 Aug 26 18:16 .IntBnkDet.doc.pgp
-rwx------ 1 bendipa bendipa 14550 Aug 26 19:04 .PersonalDetail.odt.pgp
-rwx------ 1 bendipa bendipa 76357 Aug 15 15:43 .StatePensionGateway.doc.pgp

문제는 내가 새 파일을 만들 때마다/mnt/이상하다권한이 파일과 동일하다고 가정합니다.Adoc.txt, 이 경우 파일이 상위 폴더에서 권한을 얻을 것이라고 가정합니다.이상한나열된 출력 행 권한 중 첫 번째 권한으로 나타납니다. 상위 폴더를 기록했습니다.이상한,/mnt루트가 소유하고 다른 권한을 표시합니다.이상한, 하지만 이를 원하지 않음이상한문서.

물론 새 파일에 대한 권한을 변경하는 것은 쉽습니다./mnt 이상해터미널에서 파일을 생성할 때마다 이 작업을 수행해야 하는 것은 다소 지루합니다. 아니면 Linux에서 이것이 필요합니까?

답변1

권한은 상위 폴더에서 상속되지 않습니다.

일반 파일 시스템에서는 rw-rw-rw-모드 0666()을 사용하여 새 파일을 생성하지만수정됨값을 전달합니다 umask(역방향).

예를 들면 다음과 같습니다.

$ umask 0
$ touch foo
$ ls -l foo
-rw-rw-rw- 1 sweh sweh 0 Aug 26 21:14 foo

$ umask 022
$ touch bar
$ ls -l bar
-rw-r--r-- 1 sweh sweh 0 Aug 26 21:14 bar

$ umask 0222
$ echo hello > baz
$ ls -l baz       
-r--r--r-- 1 sweh sweh 6 Aug 26 21:15 baz

umask이 값이 새 파일을 만드는 데 사용되는 권한을 결정한다는 것을 알 수 있습니다 .

이 숫자를 설명해 보겠습니다.

r=4
w=2
x=1

각 파일에는 "소유자", "그룹" 및 "전세계" 권한이 있습니다. 8진수로 숫자를 보면 분해할 수 있습니다.

예를 들어 라이센스 0123은 다음을 의미합니다.

owner = 1 ==> --x
group = 2 ==> -w-
world = 3 ==> -wx

우리는 그것을 볼 수 있습니다:

$ chmod 0123 foo 
$ ls -l foo
---x-w--wx 1 sweh sweh 0 Aug 26 21:27 foo

umask은 처리할 비트를 결정합니다.유지하다. 따라서 0666의 실제 생성 모드를 채택하고 일치하는지 확인하십시오.부정적인우마스크.

따라서 umask0022인 경우 부정은 0755 및 0644이며 , 이는 앞서 본 권한이 0666 AND 0755됩니다 .rw-r--r--

그러나 몇 가지 합병증이 있습니다.

첫째로얻다이 파일의 경우 전체 디렉터리 경로에 대한 권한이 필요합니다. 따라서 귀하의 예에서는 Adoc.txt전역 읽기 권한이 있어도 디렉터리가 해당 파일에 도달하는 것을 방지하기 때문에 다른 사람은 파일을 볼 수 없습니다.

그래서효과적인권한은 파일에 대한 권한뿐만 아니라 전체 디렉터리 트리에 대한 권한에 따라 달라집니다.

예를 들어:

$ sudo ls -al X
total 8
drwx------ 2 root root 4096 Aug 26 21:19 .
drwxr-xr-x 3 root root 4096 Aug 26 21:18 ..
-rw-r--r-- 1 root root    6 Aug 26 21:19 y

권한에는 y모든 사람이 읽을 수 있다고 나와 있지만 시도해 보면...

$ cat X/y
cat: X/y: Permission denied

그 이유는목차허가가 나를 멈췄습니다.

x디렉터리에 있는 파일을 읽으려면 디렉터리에 대한 권한이 필요합니다 .

$ sudo chmod a+x X

$ ls -ld X
drwx--x--x 2 root root 4096 Aug 26 21:19 X/

$ cat X/y
hello

또 다른 문제는 기본이 아닌 파일 시스템(예: NTFS 또는 SMB)을 사용하는 경우입니다. 마운트 플래그는 원래 파일 시스템이 Unix 권한을 이해하지 못하기 때문에 Unix 권한을 무시할 수 있습니다. 그러나 귀하의 문제는 그렇지 않을 수도 있습니다.

관련 정보