Haru Utils

PERMISSIONS

Permission denied 원인을 찾을 때

대상 파일뿐 아니라 상위 디렉터리, 서비스 사용자, ACL과 실행 컨텍스트를 확인한 뒤 최소 권한만 수정합니다.
Permission deniedchmodchownnamei파일 권한
환경GNU/Linux 파일 권한 · ACL
분류웹·보안
검토일2026-08-27
진행5단계 · 조회 우선

SAFE OPERATING BOUNDARY

중단·복구 기준부터 확인하세요

STOP CONDITIONS

여기서는 멈추세요

  • 명령 출력의 서버·서비스·경로가 예상 대상과 다르면 변경 단계로 넘어가지 않습니다.
  • 현재 접속 세션, 백업 또는 콘솔 복구 경로를 확보하지 못했다면 상태 변경 명령을 실행하지 않습니다.
ROLLBACK

복구 기준

변경 전 설정과 출력값을 기록하고, 예상과 다른 결과가 나오면 추가 변경을 멈춘 뒤 승인된 운영 복구 절차로 되돌립니다.

ESCALATION PACK

담당자에게 전달할 자료

  • 장애 발생 시각·정상화 시각과 원문 오류 메시지
  • 민감정보를 제거한 조회 명령 출력과 변경 전후 차이
  • 조치 후 동일 조건으로 수행한 재검증 결과
공식 문서와 읽기 전용 진단 명령을 우선 검토했습니다. 실제 서버에서는 설치된 버전의 --help와 man을 함께 확인하세요.

BEFORE YOU START

이런 증상에서 시작합니다

  • 파일 읽기·쓰기 실패
  • 서비스 기동 실패
  • 정적 파일 403

CHECK THE BRANCH

놓치기 쉬운 원인 분기

01

상위 디렉터리 통과 권한

대상 파일의 읽기 권한이 있어도 경로 중 한 디렉터리에 실행(x) 권한이 없으면 접근할 수 없습니다.

02

ACL mask가 제한하는 경우

getfacl의 effective 표시와 mask를 확인합니다. chmod만 반복하면 의도한 ACL 정책을 훼손할 수 있습니다.

03

AppArmor DENIED가 있는 경우

일반 권한이 맞아도 AppArmor 정책이 접근을 차단할 수 있습니다. 보안 기능을 끄지 말고 profile·operation·name을 해석합니다.

FOLLOW THE FLOW

순서대로 확인하기

1
조회시스템을 변경하지 않는 확인 단계

전체 경로 권한 확인

파일 하나만 보지 않고 루트부터 각 디렉터리의 통과 권한을 봅니다.

경로 구성요소 권한
namei -l /path/to/file
대상 파일 상세
stat -c '%A %a %U:%G %n' /path/to/file
결과 읽기

상위 디렉터리에 실행(x) 권한이 없으면 파일 권한이 맞아도 접근할 수 없습니다.

다음 판단

막히는 경로 구성요소를 기록합니다.

2
조회시스템을 변경하지 않는 확인 단계

실제 실행 사용자 확인

SERVICE_USER를 서비스가 사용하는 계정으로 바꿉니다.

사용자 그룹
id SERVICE_USER
systemd 실행 사용자
systemctl show SERVICE_NAME -p User -p Group -p SupplementaryGroups
결과 읽기

터미널 사용자와 서비스 사용자를 혼동하지 않습니다.

다음 판단

필요한 읽기·쓰기·실행 권한을 최소 단위로 정합니다.

3
조회시스템을 변경하지 않는 확인 단계

ACL과 특수 권한 확인

일반 mode bit 외 ACL이 적용됐는지 봅니다.

ACL 확인
getfacl /path/to/file
상위 디렉터리 ACL
getfacl /path/to
결과 읽기

mask나 default ACL이 예상 권한을 제한하는지 확인합니다.

다음 판단

ACL을 쓴 환경에서는 chmod만으로 해결하지 않습니다.

4
조회시스템을 변경하지 않는 확인 단계

애플리케이션 로그와 보안 컨텍스트 확인

권한 오류가 발생한 정확한 경로를 로그에서 확인합니다.

서비스 최근 로그
journalctl -u SERVICE_NAME -n 100 --no-pager
SELinux 상태가 있는 환경
getenforce 2>/dev/null || true
결과 읽기

SELinux Enforcing이면 mode bit가 맞아도 컨텍스트 때문에 거부될 수 있습니다.

다음 판단

보안 기능을 끄지 말고 정책과 경로를 확인합니다.

5
변경데이터·서비스 상태가 달라질 수 있는 단계

최소 범위로 수정하고 서비스 사용자로 검증

777 전체 허용을 사용하지 않습니다. USER·GROUP·경로·권한값을 실제 요구사항으로 바꿉니다.

변경 단계입니다. 실행 전 대상 이름과 경로, 서비스 중단 영향, 복구 방법을 다시 확인하세요.
소유권 변경 예시
sudo chown USER:GROUP /path/to/file
파일 권한 변경 예시
sudo chmod 640 /path/to/file
서비스 사용자로 읽기 시험
sudo -u SERVICE_USER test -r /path/to/file && echo '읽기 가능'
결과 읽기

필요 작업만 성공하고 다른 사용자에게 불필요한 권한이 열리지 않아야 합니다.

다음 판단

변경 이유와 원래 권한을 운영 기록에 남깁니다.

PRIMARY REFERENCES

공식 문서

배포판과 버전에 따라 옵션·로그 위치가 다를 수 있습니다. 실행 전 서버의 --help와 로컬 매뉴얼을 함께 확인하세요.

도구 빠른 검색

최근 사용한 도구를 다시 열거나, 이름과 기능으로 검색하세요.

검색어와 도구의 입력·결과는 저장하지 않습니다.

↑↓ 이동 · Enter 열기 · Esc 닫기