배포 속도를 높이려고 배포 스크립트를 고쳐, 앱 계정으로 파일을 올리던 방식을 sudo로 한 번에 복사하는 방식으로 바꿨습니다. 첫 배포 직후 앱이 시작하자마자 종료되고, 로그에는 설정 파일을 읽을 수 없다는 오류가 남습니다. 파일 내용은 이전 배포와 똑같습니다. 보안팀은 SELinux가 막는 것 아니냐고 묻고, 개발자는 설정 파일 경로가 바뀐 것 같다고 합니다. 앱이 뜨지 않아 로드밸런서가 이 서버를 빼 버렸고, 남은 서버 두 대가 트래픽을 모두 받고 있습니다. 같은 스크립트로 다른 서버 두 대에도 곧 배포할 예정입니다.
배포 스크립트를 바꾼 뒤 앱이 설정 파일을 permission denied로 못 읽음
배포 속도를 높이려고 배포 스크립트를 고쳐, 앱 계정으로 파일을 올리던 방식을 sudo로 한 번에 복사하는 방식으로 바꿨습니다.
시나리오
단서
FATAL open /srv/app/config/app.yml: permission denied
$ ls -l /srv/app/config/ -rw------- 1 root root 2143 Sep 27 14:05 app.yml -rw------- 1 root root 418 Sep 27 14:05 logging.yml $ systemctl show -p User app User=app
- sudo -u app rsync -a build/config/ /srv/app/config/ + sudo cp -r build/config/* /srv/app/config/ $ sudo sh -c umask 0077
과제 원인을 좁히고, 서비스를 되살리는 순서(검증 포함)와 재발 방지책을 적어 보세요.
구독하면 이어서 볼 수 있어요
이 문제의 전체 시나리오와 점검 체크리스트, 복구 순서, 모범 풀이는 Pro 구독에서 열립니다.
먼저 볼 것
- 파일 권한(소유자·그룹·모드)과 실행 계정을 함께 보기
- 누가 어떤 umask로 파일을 만들었는지
점검 체크리스트
- ls -l 로 소유자와 모드
- systemctl show -p User 로 서비스 실행 계정
- sudo -u app cat <파일> 로 실행 계정 입장에서 읽어 보기
- ls -Z 와 ausearch 로 SELinux 거부가 있는지(있는지 없는지만)
복구와 재발 방지
같이 보면 좋은 질문
현장에서 본 비슷한 케이스
0/10