git에는 6개의 8진수 파일 권한이 있습니다. 무슨 뜻이에요?

git에는 6개의 8진수 파일 권한이 있습니다. 무슨 뜻이에요?

명령 을 실행했는데 git commit다음과 같은 응답을 받았습니다.

7 files changed, 93 insertions(+), 15 deletions(-)
mode change 100644 => 100755 assets/internal/fonts/icomoon.svg
mode change 100644 => 100755 assets/internal/fonts/icomoon.ttf
mode change 100644 => 100755 assets/internal/fonts/icomoon.woff

나는 파일이 "644" 또는 "755"와 같은 3개의 8진수로 표현될 수 있는 사용자/그룹/기타 rwx 권한을 가질 수 있다는 것을 알고 있습니다. 그런데 왜 git은 여기서 6자리 숫자를 표시합니까?

다음 기사를 읽었지만 답변을 찾지 못했습니다.

답변1

표시된 값은 16비트 파일 모드입니다.Git에 의해 저장됨, 레이아웃에 따라POSIX 유형 및 패턴:

  32-bit mode, split into (high to low bits)

    4-bit object type
      valid values in binary are 1000 (regular file), 1010 (symbolic link)
      and 1110 (gitlink)

    3-bit unused

    9-bit unix permission. Only 0755 and 0644 are valid for regular files.
    Symbolic links and gitlinks have value 0 in this field.

파일에는 디렉터리에 대한 언급이 없으며 개체 유형 0100을 사용하여 표시됩니다. 에 대한 Gitlink서브모듈.

6비트 값의 각 비트는 8진수이며 3비트를 나타냅니다. 따라서 16비트에는 6자리가 필요하며 첫 번째 숫자는 1비트만 나타냅니다.

Type|---|Perm bits

1000 000 111101101
1 0   0   7  5  5

1000 000 110100100
1 0   0   6  4  4

Git은 임의의 패턴을 저장하지 않으며 일반적인 POSIX 유형 및 패턴(8진수, 기호 링크의 경우 12, 일반 파일의 경우 10, 디렉터리의 경우 04)을 사용하는 값의 하위 집합만 허용하며, Git은 Git 링크에 대해 16을 추가합니다. 패턴을 추가하려면 4개의 8진수를 사용하세요. 파일의 경우 100755 또는 100644(기술적으로는 100664도 가능함), 디렉터리의 경우 040000(권한은 무시됨), 심볼릭 링크의 경우 120000만 표시됩니다. set-user-ID, set-group-ID 및 고정 비트는 전혀 지원되지 않습니다(사용되지 않는 비트에 저장됨).

당신은 또한 볼 수 있습니다이 관련 답변.

답변2

전통적으로 Unix 파일 시스템은 유형을 저장하기 위해 16비트를 사용하고, 사용자/그룹/기타 권한을 위해 4비트(예: 일반 파일, 디렉터리, 문자 특수 장치...), 고정 비트, SUID 비트 및 SGID 비트를 사용합니다.

보이는 것은 8진수 형식이므로 가장 오른쪽 5자리는 0~7(3자리, 총 15자리를 나타냄)의 값을 가질 수 있고, 왼쪽 자리는 마지막 자리에 대해 0 또는 1을 가질 수 있습니다.

Linux 시스템 man -s 7 inode(예:인덱스 노드(7)) 파일 유형 및 모드 섹션에서 이에 대해 알려줄 것입니다.

관련 정보