Linux에서 umask를 실행할 때 0022의 첫 번째 숫자는 무엇을 의미합니까? [복사]

Linux에서 umask를 실행할 때 0022의 첫 번째 숫자는 무엇을 의미합니까? [복사]

0022와 022 사이에는 참조 차이가 없는 것으로 알고 있습니다.협회. 권한이 0066인 파일 1.c가 있습니다. 그런데 파일 1.c의 모드를 1066으로 변경한 후 ls -l을 사용하여 파일의 권한을 확인하면 권한에 영향을 줍니다. 첫 번째 숫자가 변경될 때마다 다른 권한 비트가 변경됩니다. 실제로 무엇을 의미합니까?

[vm4 ~]# ls -l 1.c
----rw-rw- 1 root root 10 Dec 23 22:48 1.c
[vm4 ~]# chmod 1066 1.c
[vm4 ~]# ls -l 1.c
----rw-rwT 1 root root 10 Dec 23 22:48 1.c
[vm4 ~]# chmod 2066 1.c
[vm4 ~]# ls -l 1.c
----rwSrw- 1 root root 10 Dec 23 22:48 1.c
[vm4 ~]# chmod 5066 1.c
[vm4 ~]# ls -l 1.c
---Srw-rwT 1 root root 10 Dec 23 22:48 1.c

답변1

네, 0022와 022에는 차이가 있습니다. umask는 아니지만 chmod에는 차이가 있습니다.

각 사용자, 그룹 및 다른 사람의 권한은 세 글자로 설명됩니다.
이는 일반적으로 rwxrwxrwx(또는 -필요한 경우) ls출력에 포함됩니다.

$ touch 1.c
$ ls 1.c
-rw-r--r-- 1 user user 0 Feb 13 09:01 1.c

각 설정된 비트는 문자로 표시되고, 설정되지 않은 비트는 문자로 표시됩니다 -.

따라서
rwx는 8진수 7에 대한 이진수인 111을 나타냅니다.
rw-는 8진수 6에 대한 이진수인 110을 나타냅니다.
r--는 8진수 4에 대한 이진수인 100을 나타냅니다.

그러나 기본 rwx 외에도 설정할 추가 권한을 나타내는 다른 문자가 있습니다. 이러한 권한은 4개의 8진수로 작성된 3자리 숫자이기도 하며 다음과 같이 표현됩니다.

파일의 경우:

0644  ==>  rw-r--r--
1644  ==>  rw-r--r-T           # sticky bit (ignored in linux)

0644  ==>  rw-r--r--
2644  ==>  rw-r-Sr--           # Group ID does not match. 
0655  ==>  rw-r-xr-x
2644  ==>  rw-r-sr-x           # Run with group ID: SGID

0644  ==>  rw-r--r--
2644  ==>  rwSr--r--           # User  ID does not match. 
0755  ==>  rwxr-xr-x
2744  ==>  rwsr-xr-x           # Run with User ID: SUID

전체 권한(7):

$ chmod 7777 1.c; ls -l 1.c
-rwsrwsrwt 1 user user 0 Feb 13 09:01 1.c

디렉토리의 경우:

SGID means that new files inside this dir will inherit group owner.
SUID Mostly ignored in Linux and Unix. BSD varies.
Sticky Protect files inside from being modified by a different user.

링크:
-끈끈한 비트
Linux: Linux 커널은 파일의 고정 비트를 무시합니다.
디렉터리에 고정 비트가 설정되면 루트, 디렉터리 소유자 또는 파일 소유자만 해당 디렉터리의 파일을 연결 해제하거나 이름을 바꿀 수 있습니다.
-UID 설정 및 GID 설정
-사용자 ID를 디렉터리화하고 설정하고 그룹 ID 비트를 설정합니다. -시스템 관리 설명서: 보안 서비스

답변2

추가 비트는 set-user-ID비트, set-group-ID비트 및 끈적한 비트입니다. 자세한 내용은 을 참조하세요 man 2 chmod. 해당 x 비트가 설정되지 않았기 때문에 이 비트의 S는 set-user-ID대문자 S로 표시됩니다.

관련 정보