여기서는 멈추세요
- 명령 출력의 서버·서비스·경로가 예상 대상과 다르면 변경 단계로 넘어가지 않습니다.
- 현재 접속 세션, 백업 또는 콘솔 복구 경로를 확보하지 못했다면 상태 변경 명령을 실행하지 않습니다.
PERMISSIONS
SAFE OPERATING BOUNDARY
변경 전 설정과 출력값을 기록하고, 예상과 다른 결과가 나오면 추가 변경을 멈춘 뒤 승인된 운영 복구 절차로 되돌립니다.
BEFORE YOU START
CHECK THE BRANCH
대상 파일의 읽기 권한이 있어도 경로 중 한 디렉터리에 실행(x) 권한이 없으면 접근할 수 없습니다.
getfacl의 effective 표시와 mask를 확인합니다. chmod만 반복하면 의도한 ACL 정책을 훼손할 수 있습니다.
일반 권한이 맞아도 AppArmor 정책이 접근을 차단할 수 있습니다. 보안 기능을 끄지 말고 profile·operation·name을 해석합니다.
FOLLOW THE FLOW
파일 하나만 보지 않고 루트부터 각 디렉터리의 통과 권한을 봅니다.
namei -l /path/to/filestat -c '%A %a %U:%G %n' /path/to/file상위 디렉터리에 실행(x) 권한이 없으면 파일 권한이 맞아도 접근할 수 없습니다.
막히는 경로 구성요소를 기록합니다.
SERVICE_USER를 서비스가 사용하는 계정으로 바꿉니다.
id SERVICE_USERsystemctl show SERVICE_NAME -p User -p Group -p SupplementaryGroups터미널 사용자와 서비스 사용자를 혼동하지 않습니다.
필요한 읽기·쓰기·실행 권한을 최소 단위로 정합니다.
일반 mode bit 외 ACL이 적용됐는지 봅니다.
getfacl /path/to/filegetfacl /path/tomask나 default ACL이 예상 권한을 제한하는지 확인합니다.
ACL을 쓴 환경에서는 chmod만으로 해결하지 않습니다.
권한 오류가 발생한 정확한 경로를 로그에서 확인합니다.
journalctl -u SERVICE_NAME -n 100 --no-pagergetenforce 2>/dev/null || trueSELinux Enforcing이면 mode bit가 맞아도 컨텍스트 때문에 거부될 수 있습니다.
보안 기능을 끄지 말고 정책과 경로를 확인합니다.
777 전체 허용을 사용하지 않습니다. USER·GROUP·경로·권한값을 실제 요구사항으로 바꿉니다.
sudo chown USER:GROUP /path/to/filesudo chmod 640 /path/to/filesudo -u SERVICE_USER test -r /path/to/file && echo '읽기 가능'필요 작업만 성공하고 다른 사용자에게 불필요한 권한이 열리지 않아야 합니다.
변경 이유와 원래 권한을 운영 기록에 남깁니다.
PRIMARY REFERENCES
배포판과 버전에 따라 옵션·로그 위치가 다를 수 있습니다. 실행 전 서버의 --help와 로컬 매뉴얼을 함께 확인하세요.