Windows 11을 재설치한 후 SourceTree나 Git에서 기존 저장소를 열려고 하면 다음과 같은 오류가 발생한다.
fatal: detected dubious ownership in repository at 'D:/Github/my-project'
'D:/Github/my-project' is owned by:
'S-1-5-21-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxx'
but the current user is:
'S-1-5-21-yyyyyyyyyy-yyyyyyyyyy-yyyyyyyyyy-yyyy'
To add an exception for this directory, call:
git config --global --add safe.directory D:/Github/my-project
저장소마다 git config --global --add safe.directory 명령어를 실행해야 하는 번거로운 상황이 된다.
Windows를 재설치하면 동일한 사용자 이름을 사용하더라도 새로운 SID(Security Identifier)가 부여된다. 기존 D드라이브에 있던 파일들은 이전 Windows의 SID를 소유자로 기록하고 있기 때문에, Git은 현재 사용자와 파일 소유자가 다르다고 판단하여 보안 경고를 발생시킨다.
D드라이브의 Git 저장소 폴더 소유권을 현재 사용자로 변경하면 된다.
PowerShell을 관리자 권한으로 실행한 후 다음 명령어를 입력한다.
takeown /F "D:\Github" /R /D Y
icacls "D:\Github" /grant "$($env:USERNAME):(OI)(CI)F" /T
| 명령어 | 설명 |
|---|---|
takeown /F "D:\Github" /R /D Y | 해당 폴더와 하위 항목의 소유권을 현재 사용자로 변경 |
icacls ... /grant "$($env:USERNAME):(OI)(CI)F" /T | 현재 사용자에게 모든 권한(Full Control) 부여 |
/R, /T: 하위 폴더 및 파일에 재귀적으로 적용/D Y: 확인 프롬프트에 자동으로 Yes 응답(OI)(CI)F: 하위 폴더와 파일에 상속되는 전체 권한이후 SourceTree나 Git CLI에서 D:\Github 하위의 모든 저장소를 오류 없이 사용할 수 있다. 새로 클론하는 저장소도 현재 사용자 소유로 생성되므로 추가 설정이 필요 없다.