개발자 도구 · Chmod 계산기
chmod가 8진수를 사용하는 이유: base-8 약어와 그 출처
· 배경
chmod 유닉스 액세스 제어
8진수는 한 자리에 정확히 3비트가 있다는 것을 알 때까지 임의적으로 보입니다. 이 게시물에서는 기본 8과 rwx 사이의 적합성, 8진수를 자연스럽게 만든 DEC 시대 습관 및 선행 0 규칙에 대해 설명합니다.
755이면서 493이 아닌 이유 — 10진수의 동일한 모드는 누구에게도 아무 의미가 없으며 8진수가 승리한 이유가 있습니다.
10진수 값 493 및 8진수 755은 동일한 정수를 나타낼 수 있지만 755는 권한 그룹화를 직접 노출합니다. 표시된 각 숫자는 하나의 클래스에 해당하며 각 클래스에는 정확히 세 개의 이진 선택 항목이 포함됩니다. 계산기는 산술적 적합성에 따라 작동합니다. rwx 모드에서 8진수를 읽을 수 있는 이유를 보여주는 역사적인 이야기는 필요하지 않습니다.
755을 입력하면 출력은 rwxr-xr-x가 됩니다. 소유자는 7, 그룹 5 및 기타 5을(를) 받습니다. 동일한 정수를 그룹화되지 않은 십진수 레이블로 변환하면 해당 클래스 경계가 숨겨집니다. 이는 모든 외부 명령이나 플랫폼이 이를 채택한 이유를 주장하지 않고 구현된 모델 내에서 표기법의 유용성을 설명합니다.
자릿수당 3비트 - 기본 8이 바이너리를 r, w 및 x와 정확히 일치하는 트리플로 그룹화하는 방법
8진수는 0부터 7까지의 값을 가지며, 정확히 3개의 독립 비트 가중치 4, 2 및 1에서 사용할 수 있는 합계입니다. 조합은 깔끔하게 매핑됩니다. 0은 ---, 1는 --x, 2는 -w-, 3은 -wx, 4은 r--, 5는 r-x, 6는 rw-, 7은 rwx입니다.
따라서 세 개의 일반 숫자는 소유자, 그룹 및 기타와 일치합니다. 640의 경우 이진 삼중은 110, 100 및 000이며 rw-r----을 생성합니다. 체크박스 매트릭스를 사용하면 이진 표기법 없이도 동일한 그룹을 볼 수 있습니다. 하나의 권한을 변경하면 해당 클래스 전체 및 관련 기호 위치만 변경됩니다.
하드웨어 습관 — 초기 Unix가 실행된 DEC 시스템은 8진수로 문서화되었으므로 프로그래머는 이미 그것에 대해 생각했습니다.
리포지토리 소스는 8진수 표기법에 대한 하드웨어 계보를 설정하지 않습니다. 여기에는 이전 프로세서 또는 개발 환경에 대한 문서가 아닌 JavaScript 비트 마스크, 파서 규칙, 테스트 및 사용자 인터페이스 컨트롤이 포함되어 있습니다. 특정 기계 문화가 채택을 야기했다는 주장에는 이 기사에 허용된 파일 이상의 역사적 증거가 필요합니다.
소스 기반 설명은 대신 산술입니다. 3비트에는 8가지 조합이 가능하므로 하나의 8진수는 클래스 경계를 넘지 않고 하나의 rwx 트리플을 캡처합니다. 그 관계는 모든 계산기 결과에서 입증될 수 있습니다. 더 광범위한 역사적 설명이 결국 1차 출처에서 제공되는지 여부는 여전히 유효합니다.
하드웨어 기록이 저장소 소스에 의해 설정되지 않았습니다.
파서는 1~4개의 8진수를 허용하고 선택적 0o 접두사를 제거합니다. 결과적으로 644, 0644 및 0o644는 모두 동일한 값으로 확인됩니다. 숫자 8 및 9은 둘 다 기본 8에 속하지 않으며 잘못된 형식의 텍스트가 유효한 모드로 추측되지 않기 때문에 구체적인 설명과 함께 거부됩니다.
선행 유효 숫자는 다른 일반 클래스가 아닌 특수 비트를 전달합니다. 4, 2 및 1 가중치는 setuid, setgid 및 고정을 나타내며 후행 숫자는 소유자, 그룹 및 기타를 유지합니다. 포맷터는 특수 비트가 설정되지 않은 경우 3자리를 표시하고 4자리 출력이 명시적으로 요청되지 않는 한 필요한 경우 4자리를 표시합니다.
이 구문 분석기에서 허용되는 선행 형식 및 특수 비트 숫자
0644을 3배로 변환하면 6, 4 및 4이 제공됩니다. 바이너리에서는 110, 100 및 100이므로 기호 결과는 rw-r--r--입니다. 소유자는 읽고 쓰기만 하고, 그룹과 기타는 읽기만 합니다. 모든 뷰는 동일한 정수에서 파생되므로 직접적인 일관성 검사가 가능합니다.
프로세스를 되돌려도 동일한 결과에 도달합니다. rw-r--r--로 시작하여 소유자에 대해 4 및 2을 추가하고, 그룹에 대해 4를, 기타에 대해 4을 가져옵니다. 숫자는 644입니다. 파서가 허용하는 선택적 선행 0은 특수 비트를 추가하지 않습니다. 숫자 값은 변경되지 않습니다.
16진수가 결코 자리를 차지하지 못한 이유 - 2개의 16진수는 3개의 클래스로 깔끔하게 분할되지 않습니다.
16진수는 정수를 인코딩할 수 있지만 4비트 숫자 경계가 3비트 권한 클래스와 일치하지 않습니다. 이는 산술적 비교이지 사람들이 역사적으로 어떤 표기법을 선호했는지에 대한 증거는 아닙니다. 계산기는 16진수 입력을 허용하지 않으며 출력은 8진수, 기호 위치 및 명명된 부울 컨트롤을 중심으로 설계되었습니다.
예를 들어 일반 권한은 9비트를 차지하며 자연스럽게 3개의 8진수 그룹으로 표시됩니다. 동일한 비트를 4비트 청크로 그룹화하면 rwx 클래스가 숫자 경계를 넘어 분할됩니다. 이는 이 표시 목적에 대해 16진수를 덜 투명하게 만들지 만 해당 관찰만으로는 채택, 표준 또는 명령줄 기록에 대한 주장이 나오지 않습니다.
16진수 비교는 산술적이며 역사적 채택의 증거가 아닙니다.
다른 언어나 시스템 인터페이스의 명명된 상수는 이 JavaScript 구현 외부에 있습니다. 저장소는 ownerRead, groupWrite, otherExecute, setuid, setgid 및 Sticky와 같은 자체 설명 속성을 사용합니다. 이러한 이름을 사용하면 특정 외부 헤더나 API와 동등하다고 주장하지 않고도 내부 비트 산술을 읽을 수 있습니다.
제공된 모드의 숫자 값, 해당 클래스 부울, 기호 렌더링, 설명 및 생성된 명령 텍스트 등 도구가 확인할 수 있는 범위 내에서 유지하세요. 브라우저 페이지는 대상 플랫폼을 검사하거나 기본 상수를 컴파일하지 않습니다. 결과를 다른 프로그래밍 인터페이스로 변환하는 사람은 해당 인터페이스의 권위 있는 문서를 별도로 참조해야 합니다.
명명된 C 상수는 이 JavaScript 구현 외부에 있습니다.
8진수는 각 권한 클래스가 3비트 수량이고 각 기본 8자리 숫자가 정확히 3비트를 전달하기 때문에 이 계산기에 적합합니다. 해당 내용은 눈에 보이고, 되돌릴 수 있으며, 테스트하기 쉽습니다. 특수 비트는 동일한 4, 2 및 1 패턴을 가진 네 번째 숫자를 사용하는 반면 기호 s, S, t 및 T는 실행 위치 세부 정보를 유지합니다.
주문보다는 복습 보조 수단으로 표기법을 사용하십시오. 값을 소유자, 그룹, 기타 및 특수 접두사로 나눕니다. 편지와 상자를 확인하십시오. 그런 다음 실제 소유권과 작업량 증거를 바탕으로 적합성을 결정합니다. 산술은 하드웨어 이력, 표준 또는 보편적 정책에 대한 지원되지 않는 주장 없이 그룹화를 완전히 설명합니다.