Jost Do It.

그냥 IT해.

서버 및 환경/Git

[gitlab] detected dubious ownership in repository at {경로} 문제 (git config --global 옵션으로 해결 안될 때)

그냥하Jo. 2024. 5. 12. 22:04
반응형

상황

gitlab runner 업그레이드 이후 ci/cd 과정에서 아래와 같은 에러가 발생했다.

 

 

커맨드와 스택오버플로우의 조언대로 아래 두 명령어를 사용해봤으나 동일한 에러가 계속 발생했다.

git config --global --add safe.directory /home/mining/dockerfiles/clickhouse
git config --global --add safe.directory '*'

 

 

소유권 에러 발생 원인

우선 해당 에러는 git을 업데이트하면서 보안정책이 변경돼 발생한다.

기존 git은 아래 두가지의 취약점이 존재했다.

1. Window에서 git 사용 시 dll 확장자 파일이 git uninstall을 강제실행할 수 있는 문제

2. 프로젝트들 경로 상위에 .git 폴더 생성 시 하위 프로젝트 사용자들의 config 설정값 모두가 노출되는 문제

두 취약점을 해결하기 위해 git은 repo 소유자와 명령 실행자가 일치할 때만 주요 명령을 실행할 수 있게 변경했고, 다른 경우에도 실행하려면 safe.directory 옵션을 추가해야한다.

 

git config --global 옵션이 작용하지 않는 이유

ci/cd는 gitlab-runner라는 사용자로 실행된다.

한편 git config --global --add safe.directory '*' 명령은 mining 계정에서 적용하였는데, --global 명령은 해당 사용자(mining)의 git config에만 설정을 적용하기 때문에 gitlab-runner 사용자의 config 에는 적용되지 않아 해당 에러가 계속 발생하게 된다.

 

해결 방법

아래와 같이 --system 옵션을 통해 모든 사용자의 git config에 적용할 수 있다.

git config --system --add safe.directory '*'

 

 

적용 결과는 다음과 같이 확인할 수 있다.

 

Reference

반응형