반응형
상황
Ubuntu에서 정상적으로 동작하던 ci script가 CentOS 환경에서는 permission denied 가 발생했다.
원인
Ubuntu에서는 디렉터리 읽기 권한이 있어 해당 디렉터리에 접근이 가능했지만, CentOS에서는 권한이 없어 접근이 거부된 것이다.
확인 과정은 아래와 같다.
우선 .gitlab-ci.yml 파일에 echo $(whoami) 명령어를 통해 해당 스크립트를 실행하는 주체가 누구인지 파악했다.
- gitlab-runner 라는 유저로 runner가 실행되는걸 확인할 수 있다.
gitlab-runner 유저의 정보를 확인해보자.
- gitlab-runner는 자기자신 외의 다른 그룹에는 속해있지 않다.
Ubuntu 환경에서는 cd가 문제없었기 때문에 각 경로의 권한 확인을 진행했다.
- 소유자 뿐만 아니라 그룹, 사용자에 대해 읽기 권한이 열려있다.
CentOS 환경에서의 권한을 확인해보자.
- Ubuntu와 달리 mining 유저 외에는 home 디렉터리에 읽기/쓰기/실행 권한이 없는걸 확인했다.
해결방법
1. gitlab-runner 유저를 mining 그룹에 추가해준다.
sudo usermod -G mining gitlab-runner
id gitlab-runner
>>> uid=987(gitlab-runner) gid=980(gitlab-runner) groups=980(gitlab-runner),1000(mining)
- group이 추가된걸 확인
2. mining의 홈 디렉터리를 그룹에 대해 읽기/실행 권한을 부여한다.
sudo chmod 775 /home/mining
3. 정상적으로 ci가 동작함을 확인
Reference
반응형