[unix] 새로 만든 파일에 파일 권한이 어떻게 적용됩니까?

다음 권한이 설정된 디렉토리가 있습니다.

drwxr-s---. user group folder

바탕 화면에서이 폴더에 액세스하고 마우스 오른쪽 단추를 클릭하여 새 파일 호출을 만듭니다 foo.txt. 그런 다음 터미널을 사용하여 명령을 사용하여 다른 파일을 만들었습니다 $ touch bar.txt.

이 파일에 대한 권한을 확인하면 다음이 있습니다.

-rw-r--r--. user group foo.txt
-rw-rw-r--. user group bar.txt

나는 기대했다 -rw-r-----. user group. 그룹에 대한 추가 쓰기 권한과 다른 사람에 대한 읽기 권한은 어떻게 나타 났습니까?



답변

세트

여기에는 두 가지 힘이 있습니다. 첫 번째는 폴더에서 활성화 된 setgid 비트입니다 folder.

drwxr-s---. user group folder

이것이이 s줄의 시작 부분에있는 문자 팩입니다. 그들은 다음과 같이 그룹화됩니다.

d - directory
rwx - read/write/execute bits for user
r-s - read/execute/setuid bits for group
--- - nothing for other users

이는 r-s이 폴더 안에 생성 된 파일이나 디렉토리가 그룹을 자동으로 그룹으로 설정한다는 의미입니다 group.

즉, 파일을 원인입니다 foo.txtbar.txt과 같이 만들 수 :

-rw-r--r--. user group foo.txt
-rw-rw-r--. user group bar.txt

권한 및 umask

보고있는 권한은 또 다른 문제입니다. 이 설정은의 설정에 의해 관리됩니다 umask. umask다음 명령으로 설정 한 내용을 확인할 수 있습니다 umask.

$ umask
0002

참고 : 이 비트는 “모드”비트라고도합니다.

마스크이므로 활성화 된 권한과 관련된 비트를 비활성화합니다. 이 예제에서 내가 원하는 유일한 비트는 other에 대한 쓰기 권한입니다.

0 - skipping for this conversation
0 - value of user bits
0 - value of group bits
2 - value of other bits

이 명령에서 “비트”는 10 진수 형식입니다. 따라서 2는 쓰기 비트 인 이진 형식의 010과 같습니다. 4 (100)는 읽기 비활성화를 원한다는 의미입니다. 7 (111)은 모든 읽기 / 쓰기 / 실행을 비활성화하려는 것을 의미합니다. 여기에서 빌드하십시오.

$ umask 007

다른 사용자의 읽기 / 쓰기 / 실행 비트를 비활성화합니다.

그렇다면 파일은 어떻습니까?

그럼이 umask새 파일이 생성 될 때 설정을 얻을 것이다 권한을 제어합니다. 따라서 다음과 같은 umask세트 가 있다면

$ umask 007

새 파일을 만지기 시작하면 다음과 같이 생성됩니다.

$ touch newfile1.txt newfile2.txt
$ ls -l |grep newfile
-rw-rw----   1 saml saml        0 Nov  3 22:34 newfile1.txt
-rw-rw----   1 saml saml        0 Nov  3 22:34 newfile2.txt

다른 것으로 바꾸면 다음과 같이 말합니다.

$ umask 037
$ ls -l |grep newfile
-rw-rw----   1 saml saml        0 Nov  3 22:36 newfile1.txt
-rw-rw----   1 saml saml        0 Nov  3 22:36 newfile2.txt
-rw-r-----   1 saml saml        0 Nov  3 22:35 newfile3.txt
-rw-r-----   1 saml saml        0 Nov  3 22:35 newfile4.txt

우리가 이미 만든 파일에는 영향을 미치지 않습니다. 여길 봐:

$ umask
0037
$ touch newfile1.txt newfile2.txt
$ ls -l | grep newfile
-rw-rw----   1 saml saml        0 Nov  3 22:37 newfile1.txt
-rw-rw----   1 saml saml        0 Nov  3 22:37 newfile2.txt
-rw-r-----   1 saml saml        0 Nov  3 22:35 newfile3.txt
-rw-r-----   1 saml saml        0 Nov  3 22:35 newfile4.txt

그렇다면 파일 브라우저는 어떻게됩니까?

umask내가 “소프트”설정이라고했던 것입니다. 결코 절대적인 것은 아니며 여러 가지 방법으로 유닉스에서 상당히 쉽게 우회 될 수 있습니다. 많은 도구가 작업의 일부로 권한을 지정할 수있는 스위치를 사용합니다.

가지고 mkdir예를 들면 :

$ umask
0037

$ mkdir -m 777 somedir1
$

$ ls -ld somedir1
drwxrwxrwx 2 saml saml 4096 Nov  3 22:44 somedir1

-m스위치를 사용하면 을 무시할 수 있습니다 umask. 이 touch명령에는이 기능이 없으므로 창의력을 발휘해야합니다. 이 U & L Q & A 제목 : 명령 행에 설정된 권한으로 파일을 작성할 수 있습니까? 그러한 방법에 대해서만.

다른 방법들? 그냥 무시하십시오 umask. 파일 브라우저는 아마도이 작업을 수행하거나 umask구성 된 권한을 사용하여 파일을 완전히 무시하고 내려 놓을 가능성이 큽니다 .


답변