나는 이것을 깨달을 때까지 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의 실제 생성 모드를 채택하고 일치하는지 확인하십시오.부정적인우마스크.
따라서 umask
0022인 경우 부정은 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 권한을 무시할 수 있습니다. 그러나 귀하의 문제는 그렇지 않을 수도 있습니다.