Notice
Recent Posts
Recent Comments
Link
04-27 04:44
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Archives
Today
Total
관리 메뉴

<<개발일지>>

소스트리 에러 본문

git 다루기

소스트리 에러

개발하는지호 2024. 8. 15. 14:21

bitbucket 형상관리 툴을 이용해서 클론을 받고 클론 받은 폴더를 소스트리에 연결하려고 했는데 에러가 발생했다. ㅠㅠ

 

'git status 에러 128'

 

이는 현재 로그인 중인 윈도우 유저와 WSL 파일/폴더의 소유자가 달라서 발생하는 오류이다.

 

즉, 공유 ip 이기 때문에, 다른 사용자가 무결성을 깨트릴 수도 있기 때문이라는 말이다.

 

이를 해결 하기 위해서  

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

 

를 해줘서 이 directory는 안전하다(무결성으로 부터) 고 알림으로써 해결하려고 했다.

 

하지만,,

 

이상하게 해결이 안 되었다.

 

현재 나는 이 명령어를 원격 서버에서 입력하고 있었다.

 

 

==해결==

 

문제의 원인은 이 입력을 소유자가 동일한 원격 서버에서 입력하고 있었기 때문이다.

 

소스트리는 로컬에서 실행되는 것인데, 로컬 깃에서 이 원격의 서버에 있는 directory가 안전하다고 추가해줘야 한다.

 

즉, 

git config --global --add safe.directory '%(prefix)///192.168.**/ever/sourcetree/man-con'
 
이 명령어를 로컬에서 입력해줘야 하는 것이다.
 
 
그 결과, 무사히 해결할 수 있었고, 더이상 소스트리에서 git status 128 이라는 에러를 볼 수 없었다.
 
결론
 
이 문제의 핵심은 '무결성' 이다. 
 
로컬 git에서 소유권이 다른 directory를 형상관리 하기 위해서는 무결성에 위협이 되지 않아야 하지만, 소유자가 다를 경우 무결성 부분에서 문제가 생길 수 있기 때문이다.
 
그래서 이 directory는 무결성으로 부터 안전하다고 우리가 알려줘야 하는 것이고, 이를 위협이라고 생각하고 있는 서버에서 명령어를 입 력해주면 되는 것이다.
 
별 거는 아닐 수도 있는 문제이지만, 이렇게 깊게 들어가면 핵심을 바라볼 수 있고 시아가 넓어진다.

 
 
참고:
 
/// chat gpt /// 
 
ChatGPT

문제가 발생한  Git이 네트워크 드라이브나 공유 디렉토리에서 작업할 때, 파일 시스템의 소유권을 검사하는 과정에서 현재 사용자와 파일 소유자가 일치하지 않는 경우 보안 문제를 방지하기 위해 "dubious ownership" 오류를 발생시키기 때문입니다. 이 오류는 다른 사용자에 의해 관리되는 파일이 악의적으로 변경될 가능성을 차단하기 위한 보호 장치입니다.

원인 설명

  1. 파일 소유권 차이:
    • 저장소가 위치한 네트워크 드라이브 또는 공유 디렉토리의 소유자가 현재 로그인한 사용자와 다릅니다.
    • 예를 들어, 저장소의 소유자는 S-1-5-21-3089604273-1590399036-4165978311-1000인데, 현재 사용자는 S-1-5-21-800574137-3659855456-3200020956-1001입니다.
  2. Git의 보안 보호 장치:
    • Git은 파일 시스템의 소유권이 일치하지 않는 경우, 사용자가 악의적인 파일 변경으로부터 보호하기 위해 이 경고를 발생시킵니다.
    • 이는 특히 네트워크 드라이브나 공유 디렉토리에서 흔히 발생합니다.

해결 방법 설명

문제를 해결하기 위해 Git에 해당 디렉토리가 안전하다는 것을 알려주어야 합니다. 이를 위해 안전한 디렉토리 목록에 해당 디렉토리를 추가합니다.

git config --global --add safe.directory '%(prefix)///192.168.*/ever/sourcetree/man-con' 명령어를 실행하면, Git은 해당 디렉토리를 안전한 디렉토리 목록에 추가하고, 소유권이 다르더라도 경고를 무시하게 됩니다.

명령어 설명

sh
코드 복사
git config --global --add safe.directory '%(prefix)///192.168.**/ever/sourcetree/man-con'
  • git config --global --add safe.directory: 글로벌 설정에 안전한 디렉토리를 추가하는 명령어입니다.
  • '%(prefix)///192.168.1.221/everspin/sourcetree/management-console': 오류 메시지에 제공된 형식을 그대로 사용한 경로입니다. %(prefix)는 Git이 내부적으로 사용하는 접두사를 나타내며, 이는 Git이 올바르게 경로를 인식할 수 있도록 도와줍니다.

요약

  • 문제 발생 원인: 현재 사용자와 네트워크 드라이브 또는 공유 디렉토리의 소유자가 다를 때 발생하는 보안 보호 장치.
  • 해결 방법: Git 설정에 해당 디렉토리를 안전한 디렉토리로 추가하여 소유권 경고를 무시하도록 설정.
  • 사용된 명령어: git config --global --add safe.directory '%(prefix)///192.168.**/ever/sourcetree/man-con'

이해를 돕기 위해 문제의 원인과 해결 방법을 자세히 설명드렸습니다. 추가적인 질문이 있거나 다른 도움이 필요하시면 언제든지 알려주세요.

 

 

 

===

 

공유 네트워크 드라이브의 본질은 여러 사용자가 파일에 접근하고 수정할 수 있도록 하는 것입니다. Git은 이러한 환경에서 데이터의 무결성과 보안을 보장하기 위해 파일 소유권과 권한을 검사합니다. 이 검사에서 소유권 불일치를 발견하면 경고를 발생시켜 사용자가 신중하게 작업할 수 있도록 합니다.

요약하자면

  1. 공유 네트워크의 본질:
    • 여러 사용자가 접근할 수 있어 파일을 수정하거나 삭제할 수 있습니다.
    • 네트워크 드라이브의 파일 소유자와 로컬에서 작업하는 사용자가 다를 수 있습니다.
  2. Git의 경고 목적:
    • 데이터 무결성을 위협하는 상황(악의적인 변경, 의도하지 않은 변경 등)을 방지하기 위함입니다.
    • 경고를 통해 사용자가 네트워크 드라이브의 보안 위험을 인식하고, 필요한 조치를 취하도록 합니다.
  3. 안전한 디렉토리 설정:
    • 사용자가 네트워크 드라이브의 신뢰성을 보장할 수 있다고 판단하는 경우, Git 설정을 통해 해당 디렉토리를 안전한 디렉토리로 추가합니다.
    • 이를 통해 경고를 무시하고 작업을 계속할 수 있습니다.

Git 설정 방법

  1. 명령 프롬프트 또는 PowerShell에서 Git 설정:
  2. sh
    코드 복사
    git config --global --add safe.directory '//192.168.**/ever/sourcetree/man-con'
  3. Git Bash에서 명령어 실행:
  4. sh
    코드 복사
    git config --global --add safe.directory '//192.168.**/ever/sourcetree/man-con'
  5. .gitconfig 파일 수정:
    ini
    코드 복사
    [safe] directory = //192.168.**/ever/sourcetree/man-con
  6. 홈 디렉토리에 있는 .gitconfig 파일을 열어 다음 내용을 추가합니다:

결론

네트워크 드라이브는 여러 사용자가 접근할 수 있어 데이터 무결성과 보안에 위협이 될 수 있습니다. Git의 경고는 이러한 위험을 인식하도록 돕기 위한 것입니다. 경고를 무시하고 계속 작업하려면 해당 디렉토리를 안전한 디렉토리로 설정해야 합니다. 이는 사용자가 해당 디렉토리의 신뢰성을 보장할 수 있다고 판단할 때만 설정해야 합니다.