git가 모든 git 명령에 sudo를 요구하지 않도록하는 방법


11

/var/www웹앱 복제본을 저장할 디렉토리 를 만들었습니다 . 처음 GitHub에서 앱을 복제 할 때 sudo를 사용해야했고, git pull이를 수행 할 때마다 sudo가 필요했습니다. 이 때문에 몇 가지 문제가 발생합니다. 예를 들어, 내 ssh 키가 일치하지 않습니다. 따라서 내 작업을 수행 할 때 git pullssh 대신 HTTPS를 사용하고 앱을 가져오고 업데이트 할 때마다 사용자 이름과 비밀번호를 수동으로 입력해야합니다. git을 사용할 때마다 sudo를 사용할 필요가 없도록 이것을 어떻게 구성합니까?

답변:


13

몇 가지 일이 여기에 있습니다.

  • sudo git checkout ...경우 루트 사용자 및 루트 그룹이 모든 파일을 소유합니다. 표준 권한을 사용하면 해당 파일에 대한 후속 변경이 루트가되어야합니다.

  • /var/www/기본적으로 www-data그룹 이 소유합니다 . 기본적으로 사용자가 아닌 것입니다.

에서 쓸 수있는 가장 쉬운 방법은 /var/www/바로하는 것입니다 www가 데이터 그룹에 사용자를 추가합니다 . 물론 사용자가 소유 한 디렉토리를 변경할 수는 있지만 선점하지 않으면 불쾌한 영향을 줄 수 있습니다.

www-data 그룹에 사용자를 추가 한 후 다시 로그인해야합니다.

귀하의 경우에는 구체적으로 루트 소유 데이터의 현재 혼란을 해결해야합니다. 루트로 삭제하고 다시 체크 아웃 할 수 있지만 저장하지 않은 작업이있는 경우 모든 항목을 사용자에게 다시 가져 오는 것이 더 깨끗합니다. 다음 예제는 매우 게으 르며 우리가 이야기하는 것이 / var / www /의 유일한 것이라고 가정합니다.

sudo chown -R www-data: /var/www/

좋아, sudo git checkout다른 디렉토리에 넣은 다음 / var / www 디렉토리에 내 응용 프로그램을 배포 하는 것이 낫 습니까? 나는 어딘가에서 프로젝트를 var 디렉토리로 체크 아웃하는 것이 좋지 않다는 것을 읽었습니다. 한 사람이 프로젝트를 홈 디렉토리에 체크 아웃 할 것을 권장했습니다
Scott

2
그것은 것이 가장 좋은 루트로 자식을 실행 중지합니다. 그것을 목표로하십시오. 루트로 실행하도록 계획 한 모든 계획은 이미 실패했습니다. 웹 .git디렉토리 에 체크 아웃하는 것에 대한 당신의 말은 정확합니다. 사람들에게 디렉토리에 대한 액세스 권한을 부여하면 사람들이 액세스 하지 못하게하려는 것들에 대한 액세스 권한을 부여 할 수.git/ 있지만 전체 문제를 완화시키는 디렉토리에 대한 액세스를 막을 수 있습니다 .
Oli

호스팅되지 않은 것들 (.git 포함)이있는 웹 사이트의 보관 디렉토리가 있고 그 내부에 Apache에게 호스트에게 알리는 공개 / 디렉토리가있는 다른 허용 가능한 디렉토리 구조가 있습니다. 하나의 웹 사이트를 / var / www /에 유지하는 기풍은 매우 구식입니다.
Oli

권장되는 디렉토리 구조가 있습니까? 기본적으로 체크 아웃을 한 다음 .tgz에 묶어야합니다. 그런 다음 노드 애플리케이션으로 압축을 풀어야합니다. 그건 그렇고 유성 응용 프로그램입니다. 이 세 개의 개별 폴더 / 파일을 어디에 보관해야할지 혼란스러워합니다.
Scott

@ Scott 나는이 같은 문제에 부딪쳤다. repo의 후속 하위 명령 (필자의 경우)은 git을 호출하고 다른 repos를 복제하려고 시도합니다. 언급 한대로 SSH 키를 다시 정렬하는 솔루션은 sudo를 사용하지 않고 프로세스를 시작하는 것입니다. 이 Q & A와 스레드 토론의 많은 부분은 아마도 길을 따라 벽을 때리는 해결 방법입니다.
Jordan Stefanelli

0

흠, 폴더 소유자를 변경 하시겠습니까? www 폴더를 / home / username으로 옮겼습니다. / etc / apache2 / sites-enabled / 000-default에서 위치를 변경할 수 있습니다.


복제본을 저장하는 디렉토리와 관련이 있습니까?
Scott

예, 정확히 기본적 /var/www으로 쓸 수 없습니다.
Joyfulgrind

0

나는이 답변에 약간 늦었지만, repo를 https에서 ssh로 변경해야 할 때마다 암호를 입력하지 않도록한다는 것을 알았습니다.

Github.com 도움말 섹션에서 :

git remote set-url 명령은 기존 원격 저장소 URL을 변경합니다.

터미널을 엽니 다.

현재 작업 디렉토리를 로컬 프로젝트로 변경하십시오.

변경하려는 리모컨의 이름을 얻으려면 기존 리모컨을 나열하십시오.

git remote -v
origin  https://github.com/USERNAME/REPOSITORY.git (fetch)
origin  https://github.com/USERNAME/REPOSITORY.git (push)

git remote set-url 명령을 사용하여 원격 URL을 HTTPS에서 SSH로 변경하십시오.

git remote set-url origin git@github.com:USERNAME/REPOSITORY.git

원격 URL이 변경되었는지 확인하십시오.

git remote -v

# 새로운 원격 URL 확인

origin  git@github.com:USERNAME/REPOSITORY.git (fetch)
origin  git@github.com:USERNAME/REPOSITORY.git (push)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.