개발자 도구 · Chmod 계산기
Windows, macOS, FAT 및 네트워크 공유의 chmod: 모드 비트가 중지되는 위치
· 배경
chmod 유닉스 액세스 제어
모드 비트는 Unix 아이디어이며 다른 파일 시스템에서는 이를 가짜로 만들거나 삭제합니다. 이 게시물에서는 NTFS, FAT, macOS, SMB 또는 NFS 마운트에 대한 권한에 어떤 일이 발생하는지와 git이 어떻게 반응하는지 다룹니다.
Git은 모든 파일을 수정된 것으로 표시합니다. 유일한 변경 사항은 다른 파일 시스템에서 복제한 후 100644 모드에서 100755 모드입니다.
100644에서 100755로의 Git 변경은 한 가지 일반적인 차이점을 드러냅니다. 644에는 실행이 부족한 반면 755에는 세 클래스 모두에 대해 실행이 포함됩니다. 후행 값을 디코딩하면 rw-r--r-- 및 rwxr-xr-x가 생성됩니다. 계산기는 Git이 변경 사항을 보고한 이유, 변경 사항을 생성한 플랫폼 또는 파일 시스템 및 저장소 설정이 관찰에 영향을 미쳤는지 설명할 수 없습니다.
정책을 변경하기 전에 변환기를 중립 디코더로 사용하십시오. 644 및 755을 입력하고 각 실행 상자를 비교한 후 기호 출력을 확인합니다. 선택적 경로는 표시된 명령 텍스트에만 영향을 미칩니다. 디스크에서는 아무것도 읽히지 않습니다. Git 파서나 메타데이터 액세스가 없으면 페이지는 모드 의미를 설정하지만 프로젝트 의도나 권한 권한은 설정하지 않습니다.
Git의 모드 변경은 여기에서 디코딩될 수 있지만 플랫폼에 귀속되지는 않습니다.
Windows ACL 동작에는 여기에 없는 소스가 필요합니다. 계산기는 소유자 클래스 1개, 그룹 클래스 1개, 기타 모든 사람 및 특수 비트 3개를 모델링합니다. 이는 Windows 액세스 항목, 상속, ID 또는 구문을 나타내지 않습니다. 개요에는 WSL 메타데이터가 언급되어 있지만 제공된 저장소 자료에는 아무 것도 기록되어 있지 않으므로 자세한 플랫폼 주장은 사용 가능한 증거를 초과합니다.
기호 표기법은 스토리지가 다른 모델을 사용하는 경우에도 여전히 유용한 산술입니다. 파서는 선택적으로 인식된 유형 표시와 함께 9개의 권한 문자를 허용하고 각 위치의 유효성을 검사한 다음 이를 하나의 정수로 변환합니다. Windows 또는 WSL이 해당 값을 지속, 합성 또는 무시하는지 여부는 알 수 없습니다. 표시된 명령을 적용하기 전에 해당 플랫폼 설명서를 참조하십시오.
Windows ACL 및 WSL 메타데이터 동작에는 플랫폼 소스가 필요합니다.
FAT 계열 마운트 마스크는 이 구현 외부에 있습니다. 패널에는 umask, fmask, dmask, mount-option 또는 filesystem 필드가 없습니다. 보고된 모드를 소유자, 그룹 및 기타 비트로 분할할 수 있지만 구성에서 해당 모드를 파생하거나 FAT 또는 exFAT가 이를 생성한 방법을 증명할 수 없습니다. 더 광범위한 행동 주장에는 외부 플랫폼 소스가 필요합니다.
증거가 뒷받침하는 방향을 따르십시오. 신뢰할 수 있는 시스템 관찰에서 효과적인 모드를 얻은 다음 이를 입력하고 표시된 읽기, 쓰기 및 실행 플래그를 검사합니다. 4자리 요약에는 제공된 특수 비트도 표시됩니다. 해당 산술을 마운트 진단으로 바꾸지 마십시오. 정수는 출처를 기록하지 않으며 페이지는 저장소를 쿼리하지 않습니다.
FAT 계열 마운트 마스크는 구현 외부에 있습니다.
추가 macOS 메타데이터는 이 경로로 구문 분석되지 않습니다. 기호 입력에는 선택적으로 인식된 파일 유형 문자가 앞에 올 수 있는 9개의 권한 위치가 필요합니다. 후행 표시기를 허용하지 않고, ACL 항목이나 플래그를 읽지 않으며, 경로 메타데이터를 쿼리하지 않습니다. 기본 rwx 모드는 별도로 디코딩할 수 있지만 모든 추가 macOS 신호는 이러한 소스 외부에 남아 있습니다.
깨끗한 755이 주어지면 계산기는 rwxr-xr-x를 렌더링하고 선택한 대상에 대해 설명합니다. 디렉토리 실행은 명명된 항목을 입력하고 도달하는 것을 의미합니다. 파일 실행은 프로그램을 실행하는 것을 의미합니다. 구현을 기반으로 한 이러한 구별은 플랫폼 속성에서 유지됩니다. 추가 macOS 액세스 규칙, 표기법 또는 모드 비트와의 상호 작용에는 이 저장소 자료에서 사용할 수 없는 특정 증거가 필요합니다.
추가 macOS 메타데이터는 이 경로로 구문 분석되지 않습니다.
SMB 및 NFS ID 매핑 또는 모드 합성은 구현 외부에 있습니다. 변환기는 서버에 연결하지 않고, 탑재 구성을 읽지 않으며, UID를 확인하지 않으며, 소유자나 그룹을 식별할 수 없습니다. 해당 클래스는 정수에서 파생된 추상 슬롯입니다. 네트워크 마운트에 의해 보고된 모드는 디코딩 가능한 상태로 유지되지만 여기서는 자세한 네트워크 파일 시스템 동작이 지원되지 않습니다.
이 경계는 카테고리 오류를 방지합니다. 775 모드는 소유자와 그룹에 rwx가 있고 다른 그룹에는 r-x가 있음을 의미합니다. 원격 소유권, 그룹 멤버십, ID 매핑 또는 서버가 디스플레이를 합성했는지 여부는 공개되지 않습니다. 여기에 제시된 비트를 확인한 다음 승인을 결정하기 전에 실제 환경에서 내보내기, 클라이언트, 서버 및 신원 증거를 수집하십시오.
SMB 및 NFS ID 또는 모드 합성이 구현 외부에 있습니다.
Git이 모드 변경을 보고하면 정책을 수정하기 전에 값을 디코딩합니다. 100644 및 100755의 경우 644 및 755을 사용합니다. rw-r--r--는 rwxr-xr-x가 됩니다. 소유자, 그룹 및 기타 각각의 숫자는 1 가중치를 획득하므로 실행됩니다. 이는 Git, 플랫폼 또는 파일 시스템에 원인을 할당하지 않고 의미적 차이를 설정합니다.
이러한 소스에 포함되지 않은 프로젝트 증거로부터 의도를 파악합니다. 계산기는 core.fileMode를 읽거나, .gitattributes를 구문 분석하거나, 인덱스를 검사하거나, 실행 가능 상태가 신뢰할 수 있는지 여부를 결정할 수 없습니다. 해당 경로 기반 명령은 실행되지 않은 상태로 유지됩니다. 확인된 rwx 차이를 저장소 검토에 적용한 다음 의도된 진실 소스를 식별한 후에만 정책을 변경하십시오.
작업 예: 저장소 정책을 변경하기 전에 Git이 보고하는 모드를 디코딩합니다.
Windows 권한 명령은 별도의 모델에 속합니다. 이 도구는 8진수 값 또는 u=rw,g=r,o=r과 같은 chmod 형식을 내보냅니다. Windows 구문을 구문 분석하지도 않고 세 개의 Unix 클래스를 Windows ACL에 매핑하지도 않습니다. 그럴듯해 보이는 번역은 모두 발명일 것입니다. 왜냐하면 12개의 기존 비트는 다른 인증 시스템이 나타내는 모든 ID 및 액세스 항목을 보존할 수 없기 때문입니다.
객체 스토리지 인증은 동일하게 별개입니다. 계산기는 기존 모드만 허용하며 서비스에 연결하거나 버킷 정책을 읽거나 객체 ID를 처리하지 않습니다. 실제 Unix 스타일 8진수 또는 기호 값을 디코딩해야 할 때 사용하세요. 객체 스토리지 및 기타 모델의 경우 chmod 표기법을 사용하기보다는 기본 정책 데이터 및 문서를 검사하세요.
Windows 구문과 개체 저장소는 별도의 모델로 유지됩니다.
chmod를 사용하기 전에 어떤 레이어가 권한 진실을 소유하고 있는지 확인하세요. Git, 마운트 또는 다른 플랫폼에서 제공하는 모드는 소유자, 그룹, 기타 및 특수 비트로 변환될 수 있습니다. 유효성 검사는 잘못된 숫자와 기호 위치를 포착하는 반면 s, S, t 및 T는 특수 상태를 유지합니다. 전환은 그 기원이나 권위가 아니라 가치를 설명합니다.
최종 검토는 산술과 환경을 분리해야 합니다. 모드를 확인하고, 정확히 다른 클래스와 비트를 기록하고, 대상을 파일 또는 디렉터리로 식별합니다. 그런 다음 기본 소스를 사용하여 플랫폼, 파일 시스템, 저장소 설정, ID, ACL 및 정책을 검사합니다. 페이지의 좁은 역할은 가치가 있습니다. 즉, 크로스 플랫폼 적용을 진단하는 척하지 않고 신뢰할 수 있는 Unix 모드 해석입니다.