기술 · 실용 가이드
Git dubious ownership 오류? 사용자·경로 소유자·신뢰 범위를 먼저 증명하세요
safe.directory=*를 쓰기 전에 실제 Git, OS 계정, 저장소 실경로 소유자와 보호된 설정을 감사합니다.

dubious ownership 거부는 단순 권한 오류가 아니라 보안 경계입니다. 어떤 Git이 어떤 사용자로 어떤 실경로를 거부했는지 먼저 증명해야 합니다.
예상 밖 소유자, 실행 주체, 공유 저장소, 설정 범위를 분리해 가장 작은 수정안을 고릅니다.
실패 맥락 고정
소유권이나 설정을 바꾸기 전에 전체 오류, 명령, 거부 경로와 실행 환경을 보존합니다.
chmod, 재귀 chown, 재클론, safe.directory=*부터 시작하지 말고 분기 판단 증거를 남깁니다.
실제 Git과 사용자 증명
실패 환경에서 Git 경로와 버전, whoami, id, HOME, 서비스 계정, SUDO_UID를 기록합니다.
GUI, WSL, CI, 터미널은 서로 다른 Git, 사용자와 설정을 사용할 수 있습니다.
실경로와 소유자 확인
오류의 경로를 realpath, stat, ls -ld 또는 Get-Acl로 확인하고 부모 디렉터리도 살핍니다.
개인 클론의 잘못된 소유권, 공유 서비스, UID 매핑 마운트, NAS와 WSL을 구분합니다.
신뢰 설정 출처 감사
같은 환경에서 safe.directory의 origin과 scope를 표시하고 global/system 설정을 확인합니다.
로컬 저장소는 스스로 신뢰를 선언할 수 없습니다. 경로 표기, HOME, 클라이언트/서버 차이도 봅니다.
가장 좁은 수정 선택
개인 클론의 소유자가 잘못되었으면 바로잡고, 의도한 공유 저장소만 정확한 절대 경로로 예외 처리합니다.
safe.directory=*는 진단이 아니라 전체 비활성화입니다. 광범위한 chmod나 chown으로 대체하지 않습니다.
환경 경계 명시
GUI, WSL, 컨테이너, CI, sudo, SSH의 Git, 사용자, HOME과 마운트 소유자를 비교합니다.
클라이언트 설정은 서버 측 실패를 고칠 수 없습니다. 명확한 소유자 또는 정확한 예외로 끝냅니다.
검증과 롤백 기록
원래 환경에서 원래 명령과 읽기 전용 검사를 반복하고 설정 출처와 범위를 다시 봅니다.
소유자 또는 예외값, 설정 파일, 이유와 제거 명령을 기록해 다른 위치의 보호를 유지합니다.
