내 Linux 시스템이 새 파일을 처리하는 방법을 이해할 수 없습니다.
저는 Amazon Linux AMI(RHEL 기반 배포판)를 가지고 있고 실행할 때 새로운 것을 생성할 때마다 다른 사용자가 액세스할 수 없는 정보를 얻 umask
습니다 .0002
write
하지만 홈 디렉토리로 가서 다음을 입력합니다.
$ mkdir myDir
$ touch myDir/myFile
$ ls -l | grep myDir
나는 얻다
drwxrwxr-x 2 myself myself 4096 May 11 22:37 myDir
폴더의 경우:
$ ls -l myDir
-rw-rw-r-- 1 myself myself 0 May 11 22:37 myFile
권한이 단지 보호보다 더 제한적이기 umask
때문에 내 것보다 더 많은 일이 벌어지고 있는 것 같습니다 .myFile
write
더 깊이 파고들어 보면 다음과 같습니다.
$ sudo touch /var/run/myPidFile.pid
$ ls -l /var/run/ | grep myPidFile.pid
-rw-r--r-- 1 root root 0 May 11 22:42 myPidFile.pid
그래서 myPidFile.pid
더 제한적인 기본 권한을 얻고 내 홈 폴더 /var/run
로 들어갔습니다 .myFile
우리는 비난할 수 있지만 아래에서 실행 root
umask
하면 실제로 내 사용자보다 더 제한적 이지만 실행 비트 권한이 설정되지 않은 방법에 대한 설명은 여전히 없습니다.umask
root
0022
0002
umask
그렇다면 Linux에서 폴더의 기본 권한을 어떻게 알 수 있습니까?
답변1
umask는 대부분의 퍼즐입니다. 루트에는 다른 umask가 있습니다. 이것은 매우 일반적입니다.
당신이 놓친 퍼즐 조각은 umask입니다.마스크. 애플리케이션이 파일을 생성할 때 일부 권한을 할당합니다. umask는 일부 권한 비트를 제거하는 이러한 권한에 대한 필터입니다. 파일에는 애플리케이션에 포함된 권한 비트만 있습니다. 예를 들어, 실행할 수 없는 파일(예: touch
)을 생성하려는 애플리케이션은 umask 002를 사용하여 권한 비트 666(8진수)을 전달합니다. 그러면 권한 664가 생성됩니다. 이는 rw-rw-r--입니다. 쓰기-기타 비트가 제거되었습니다. 디렉터리를 생성할 때 애플리케이션(예: mkdir
)은 일반적으로 실행을 허용하므로 권한이 777로 지정됩니다. umask 002는 디렉터리 권한이 775, 즉 rwxrwxr-x가 됩니다.
다음을 통해 애플리케이션에서 사용하는 권한을 볼 수 있습니다.시스템 호출을 살펴보세요.. 예를 들어:
$ strace -e open,mkdir touch foo
… skipping opening of dynamically linked libraries etc. …
open("foo", O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK, 0666) = 3
+++ exited with 0 +++
$ strace -e open,mkdir mkdir goo
… skipping opening of dynamically linked libraries etc. …
mkdir("goo", 0777) = 0
+++ exited with 0 +++
답변2
디렉토리를 변경하거나 목록을 가져오려면 디렉토리에 실행 권한이 필요하므로 디렉토리가 생성되면 자동으로 +x 비트가 설정됩니다.
그러나 파일이 컴파일된 바이너리(c/c++/etc) 또는 해석 가능한 스크립트(sh/bash/php/perl/etc)이고 파일을 실행 가능하게 만들지 않은 경우 실행 비트만 설정하면 됩니다. 보안 이유 기본값.