개발자 도구 · Chmod 계산기
nginx 수정 403 금지됨: 중요한 파일 및 디렉터리 권한
· 그것이 중요한 이유
chmod 유닉스 액세스 제어
nginx의 403는 구성 문제가 아닌 파일 시스템 문제인 경우가 많습니다. 이 게시물에서는 nginx가 실행되는 사용자와 경로의 모든 디렉터리에 필요한 비트를 확인하는 방법을 보여줍니다.
403 — 파일은 /home/deploy에서 왔으며 nginx는 모든 URL에 대해 금지되어 있다고 말합니다.
nginx 403에는 모드 비트가 포함될 수 있지만 이 경로는 원인을 식별할 수 없습니다. 계산기에는 nginx 통합, 로그, 구성 파서, 프로세스 조회 또는 경로 워커가 없습니다. 이는 디렉토리 클래스가 실행되었는지, 일반 파일 클래스가 읽었는지 여부와 같은 더 좁은 질문에 답하여 다른 곳에서 수집된 증거를 해석하는 데 도움을 줍니다.
기본값을 가정하는 대신 각 경로 구성 요소에서 관찰된 정확한 모드로 시작합니다. 각 모드를 입력하고 대상 유형을 선택합니다. 기호 텍스트, 확인란 및 구문은 클래스 권한을 노출하고 변환을 확인하지만 nginx가 액세스를 시도했는지, 어떤 ID를 사용했는지 또는 파일 시스템 권한이 응답을 생성했는지 여부를 보여줄 수 없습니다.
403에는 모드 비트가 포함될 수 있지만 이 경로는 원인을 식별할 수 없습니다.
계산기는 nginx 작업자 ID를 검색할 수 없습니다. 소유자, 그룹 및 기타 클래스를 모델링하지만 사용자 이름, 프로세스 또는 멤버십은 없습니다. 따라서 rwxr-xr-x와 같은 모드는 작업자가 객체를 소유하는지, 해당 그룹에 속하는지, 다른 그룹에 속하는지에 대해 아무 말도 하지 않습니다. 외부 검사를 통해 해당 분류를 확립해야 합니다.
ID 검색은 관련 비트에 대한 주장보다 선행되어야 합니다. 증거가 적용 가능한 클래스를 설정하면 매트릭스에 4로 읽음, 2로 쓰기, 1로 실행이 표시됩니다. 그 전에는 그룹 편집이나 기타 편집은 추측일 뿐입니다. 경로는 프로세스 상태를 읽지 않습니다. 서버 아키텍처를 추론하는 대신 제공된 모드를 변환합니다.
계산기가 nginx 작업자 신원을 발견하지 못합니다.
각 디렉토리 구성 요소를 별도의 제공된 모드로 검사합니다. 디렉터리의 경우 실행은 항목 및 이름 기반 액세스를 허용하고, 읽기는 나열을 허용하고, 쓰기는 항목 생성, 이름 바꾸기 및 삭제를 허용합니다. 대상별 설명은 검토자가 경로 자체를 검사하지 않고도 외부에 설정된 클래스가 특정 구성 요소에서 실행되었는지 여부를 판단하는 데 도움이 됩니다.
브라우저는 루트에서 웹 루트로 이동하지 않습니다. 차단 구성 요소를 찾거나 존재 여부를 확인하거나 ACL을 검사할 수 없습니다. 관찰된 모든 디렉토리 모드를 별도로 제공한 다음 최종 객체를 일반 파일로 확인합니다. 여기서 읽기는 목록이 아닌 내용과 관련이 있습니다. 이는 파일 시스템 검사를 대체하는 대신 수집된 증거를 해석합니다.
파일에는 r이 필요합니다. 정적 파일에 644이 충분한 이유와 파일의 755이 수정 사항이 아닌 이유
정적 파일의 경우 644는 rw-r--r--을 렌더링합니다. 소유자는 읽기 및 쓰기를 수신하고 그룹 및 기타는 읽기를 수신합니다. 아무도 실행을 받지 못합니다. 이 변환은 파일 읽기와 실행이 별도의 비트임을 보여줍니다. 서버 정책이 없기 때문에 페이지에는 특정 서버를 실행해야 하는지 여부를 결정할 근거가 없습니다.
파일 및 디렉터리 설명을 구별되게 유지하세요. 디렉토리 실행은 항목 및 이름 기반 연결 가능성을 의미하고, 일반 파일 실행은 프로그램 실행을 의미합니다. 따라서 동일한 확인란에는 대상별 산문이 있습니다. 644을 755과 비교하면 비트가 명확해지지만 403을 진단하거나 구성, ID, ACL 및 정책 컨텍스트 없이 범용 모드를 규정할 수는 없습니다.
작업 예: /home/deploy/site/index.html 추적 — 경로의 namei -l 및 차단기를 표시하는 ls -l 라인
지원되는 예는 경로 증거가 다른 곳에서 수집된 후에 시작됩니다. 디렉터리 구성 요소가 755이고 최종 파일이 644이라고 가정합니다. 계산기는 디렉토리를 rwxr-xr-x로 렌더링하여 그룹 및 기타 실행을 항목 및 연결 가능성으로 설명합니다. 파일을 rw-r--r--로 렌더링하여 그룹 및 기타 읽기를 콘텐츠 액세스로 설명합니다.
구성 요소가 750인 경우 다른 트리플은 ---이고 그룹은 r-x로 유지됩니다. 그 차이가 중요할 수 있지만 nginx가 다른 것을 사용한다는 것을 증명하지는 않습니다. 경로는 namei 또는 ls를 실행할 수 없으므로 외부 증거는 경로와 모드를 제공해야 합니다. 그런 다음 모든 표현을 동기화하여 검토 중에 기록 오류를 줄입니다.
작업 예: 경로의 각 구성 요소에 대해 제공된 모드를 검사합니다.
소유권 결정은 모드 변환 외부에도 유지됩니다. 패널은 소유자나 그룹을 읽지 않으며 chown 또는 chgrp 작업을 제공하지 않습니다. 배포, 서비스 또는 공유 그룹 소유권 중에서 선택할 수 없으며 이동하는 콘텐츠를 평가할 수도 없습니다. 이러한 결정에는 소스에 없는 시스템 및 워크로드 증거가 필요합니다. 생성된 모드는 해당 컨텍스트를 대체할 수 없습니다.
소유권이 다른 곳에서 해결되면 모드가 액세스를 어떻게 분할하는지 비교하세요. 750 모드는 전체 소유자 권한, 그룹 읽기 및 실행 권한을 부여하며 다른 권한은 부여하지 않습니다. 755은 다른 읽기 및 실행을 추가합니다. 이는 근로자의 계급을 아는 것을 조건으로 합니다. inert 명령 미리보기는 소유권을 변경하지도 않고 서버 액세스를 확인하지도 않습니다.
소유권 선택은 모드 변환 외부에 유지됩니다.
구성, 인덱스 선택, 필수 액세스 제어 및 업스트림 동작은 여기에서 진단되지 않습니다. nginx 구성을 로드하거나, URI 또는 인덱스를 확인하거나, 로그를 읽거나, 업스트림에 연결하거나, SELinux 또는 AppArmor를 관찰하는 소스는 없습니다. 따라서 제공된 모드를 올바르게 변환하면 nginx가 403을 반환한 이유를 확인할 수 없습니다. 서버 증거는 해당 질문에 답해야 합니다.
모드가 의심스러운 경우 이러한 구별을 유지하십시오. 패널에는 디렉토리 클래스에 실행이 부족하거나 파일 클래스에 읽기가 부족한 것으로 표시될 수 있지만 관련성은 ID 및 경로 증거에 따라 달라집니다. 또한 허용 비트는 다른 원인을 배제할 수 없습니다. 모드에서 허용되는 사항을 정확하게 설명한 다음 서버별 진단으로 돌아갑니다.
구성, 인덱스, MAC 및 업스트림 원인은 진단되지 않습니다.
경로 액세스는 모든 구성요소에 따라 달라질 수 있지만 계산기는 한 번에 하나의 제공된 값을 봅니다. 그 강점은 정확한 디코딩입니다. 8진수, 기호 텍스트 및 체크박스는 동기화된 상태를 유지하며 디렉토리 산문은 나열, 수정 및 입력을 구별합니다. 구성 요소나 액세스를 시도하는 프로세스를 발견하는 척하지 않고 검토를 단순화합니다.
서버 ID를 설정하고 이 경로 외부의 경로 모드를 수집합니다. 외부에서 검증된 클래스에 초점을 맞춰 모든 디렉터리를 디렉터리로, 최종 개체를 일반 파일로 디코딩합니다. 구성, ACL 및 필수 정책을 별도로 조사합니다. 계산기는 산술 연산을 검증하지만 403의 원인을 식별하거나 수정 사항을 확인할 수 없습니다.