새로 생성된 파일에 파일 권한이 어떻게 적용되나요?

새로 생성된 파일에 파일 권한이 어떻게 적용되나요?

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

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. 그룹에 대한 추가 쓰기 권한과 다른 사람에 대한 읽기 권한은 어떻게 제공됩니까?

답변1

부팅 설정

여기에는 두 가지 힘이 작용하고 있습니다. 첫 번째는 폴더에서 활성화된 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 으로 설정됩니다 group.

이것이 파일이 다음과 같이 생성되는 원인입니다 foo.txt.bar.txt

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

권한 및 마스크

당신이 보는 권한은 또 다른 이야기입니다. 이는 귀하의 설정에 의해 제어됩니다 umask. umask다음 명령을 사용하여 설정을 볼 수 있습니다 umask.

$ umask
0002

노트:이러한 비트를 "모드" 비트라고도 합니다.

이는 마스크이므로 활성화된 권한과 관련된 모든 비트를 비활성화합니다. 이 예에서 내가 끄고 싶은 유일한 것은 다른 사람의 쓰기 액세스입니다.

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제가 "소프트" 설정이라고 부르는 것입니다. 절대적인 것은 아니며 Unix에서는 다양한 방법으로 상당히 쉽게 우회할 수 있습니다. 많은 도구에는 작업의 일부로 권한을 지정할 수 있는 스위치가 있습니다.

예를 들어 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파일을 배치하기 위해 구성한 모든 권한을 사용합니다.

관련 정보