사제 권한 및 업데이트를 양조해야하는 여러 사용자


79

Lion에서 Homebrew 를 사용하여 패키지 설치를 관리하고 있습니다 (실제로는 Lion 서버이지만 중요하지는 않습니다) .

Homebrew는 한 명의 사용자로 설치되었습니다. 이제 다른 사용자가 패키지를 추가하고 Homebrew가 만족스럽지 않습니다.

$ brew update
fatal: Unable to create '/usr/local/.git/index.lock': Permission denied
Error: Failure while executing: git checkout -q master

이것이 나쁜 것으로 간주됩니까? /usr/local/설치 에 사용하는 것의 장점 중 하나는 필요하지 않다는 것 sudo입니다. 그러나 우리는 분명히합니다.

Homebrew를 수정해야하는 모든 사용자는 관리자 그룹의 구성원입니다 . 그래서 나는 chmod -R g+w /usr/local/이것이 무언가를 망치거나 보안 문제를 일으킬 것을 두려워 할 수 있습니까?!?

조언?

$ ls -al /usr/local/.git/
total 432
drwxr-xr-x  14 ladmin  admin     476 Feb 24 11:48 .
drwxrwxr-x  14 root    admin     476 Feb  9 15:27 ..
-rw-r--r--   1 ladmin  admin      94 Feb 24 11:48 FETCH_HEAD
-rw-r--r--   1 ladmin  admin      23 Feb 24 11:48 HEAD
-rw-r--r--   1 ladmin  admin      41 Feb  9 15:28 ORIG_HEAD
drwxr-xr-x   2 ladmin  admin      68 Feb  9 15:27 branches
-rw-r--r--   1 ladmin  admin     218 Feb  9 15:27 config
-rw-r--r--   1 ladmin  admin      73 Feb  9 15:27 description
drwxr-xr-x  12 ladmin  admin     408 Feb  9 15:27 hooks
-rw-r--r--   1 ladmin  admin  200272 Feb 24 11:48 index
drwxr-xr-x   3 ladmin  admin     102 Feb  9 15:27 info
drwxr-xr-x   4 ladmin  admin     136 Feb  9 15:27 logs
drwxr-xr-x   4 ladmin  admin     136 Feb  9 15:27 objects
drwxr-xr-x   5 ladmin  admin     170 Feb  9 15:27 refs

답변:


100

이것이 나쁜 것으로 간주됩니까? 설치에 / usr / local /을 사용하는 이점 중 하나는 sudo가 필요 없다는 것입니다. 그러나 우리는 분명히합니다.

기본적으로 Homebrew는에 대한 단일 사용자 액세스를 위해 자체적으로 설정됩니다 /usr/local. 따라서 둘 이상의 사람이 관리 할 수 ​​있도록 디렉토리 트리에 대한 권한을 열어야합니다.

사람들은 홈 브루를 관리하기 위해 여기에서 sudo를 실행할 필요가 없습니다. 일부 권한 만 변경하면됩니다. 이미 가지고 있기 때문에 :

Homebrew를 수정해야하는 모든 사용자는 관리자 그룹의 구성원입니다.

두 가지 작업을 더 수행해야합니다.

  1. 아래의 모든 것이 /usr/local그룹 에 속 하는지 확인하십시오 admin. 과
  2. 그룹의 모든 사람이 admin아래의 내용에 쓸 수 있는지 확인하십시오 /usr/local.

이 경우 변경 사항은 다음과 같습니다.

chgrp -R admin /usr/local
chmod -R g+w /usr/local
chgrp -R admin /Library/Caches/Homebrew
chmod -R g+w /Library/Caches/Homebrew

그리고 admin그룹의 모든 사용자 는 머신에서 홈 브루 설치를 관리 할 수 ​​있어야합니다. 관리 그룹에 사용자를 추가해야하는 경우 다음과 같이 수행 할 수 있습니다.

 dseditgroup -o edit -a <username> -t user admin

해당 사용자는 권한을 부여 받기 위해 다시 로그인해야합니다.

머신에서 건강을 유지하려면 자체 Homebrew 포크작성 하고 로컬 homebrew git 저장소가 로컬 포크를 가리 키도록 할 수 있습니다. 이를 통해 사용자 환경에 맞게 Homebrew를 사용자 정의하고 사람들이 brew명령 으로 설치할 수있는 패키지 버전을 제어 할 수 있습니다. 여러 사람이 설치를 수행하면 버전 문제 또는 종속성 문제가 발생할 수 있습니다.


1
동일한 문제가 있으며 제안 된대로 그룹 소유권 및 그룹 권한을 변경했습니다. brew doctor여전히 /usr/local/include여기에 파일에 쓸 수 있는지 수동으로 확인할 수 있지만 (예 :을 사용하여 echo "hello" > /usr/local/include/testfile) 쓰기 가능하지 않다고 불평합니다 . 관리자 그룹의 회원입니다. 디버깅에 대한 아이디어가 있습니까?
mgd

2
이 솔루션은 저에게 효과적이지만 Homebrew의 로컬 캐시는 다루지 않습니다. 나는 또한 달리기를 제안한다 :chmod -R g+w /Library/Caches/Homebrew
Drew Dara-Abrams


2
Homebrew가 이제 캐시를 현재 사용자의 디렉토리로 전환 한 것 같습니다. brew 업데이트를 수행 할 때 ==> / Library / Caches / Homebrew를 /Users/bluechain.admin/Library/Caches/Homebrew로 마이그레이션 중 ... 이것을 올바르게 해석하면 더 이상 Homebrew에 대해 쓰기 가능한 전역 캐시 디렉토리를 걱정할 필요가 없습니다.
Endareth

이 문제가있는 High Sierra 사용자 sudo chown -R $(whoami) $(brew --prefix)/*의 경우 위의 명령 대신 이것을 사용해야합니다 . 여기
Jeff Kranenburg

7

관리자 그룹 또는 다른 사용자 그룹을 통해 둘 이상의 사용자에 대해 홈 브루 권한을 활성화 할 수 있습니다. 이를 구성하기위한 약간 확장 된 레시피는 다음과 같습니다.

그룹은 로컬 홈 브루어 설치 디렉토리를 관리해야합니다. 따라서 / usr / local관리자 그룹 (또는 선호하는 그룹)에 할당 하고 그룹 쓰기 권한을 활성화하십시오.

chgrp -R admin /usr/local
chmod -R g+w /usr/local

이 그룹은 / Library / Caches / Homebrew 에서 homebrew의 로컬 수식 및 소스 파일 캐시에 대한 권한도 필요합니다 .

chgrp -R admin /Library/Caches/Homebrew
chmod -R g+w /Library/Caches/Homebrew

여러 계정에서 homebrew를 사용하는 동안 유사한 권한 문제가 발생하면 문제가되는 경로를 기록하고 동일한 방법을 시도해보십시오.

레이프 Hanack은 블로그에있다 유사한 솔루션 그가 만들고 전용 사용자 그룹 구성, 양조 목적으로합니다.

--2015-08-20 업데이트

최근에이 답변을 다시 사용하여 홈 브루 액세스 권한이있는 게스트 계정을 설정했습니다. 두 번째 관리자 계정에서 Cask를 사용하려면 다음 명령도 실행해야했습니다.

chgrp -R admin /opt/homebrew-cask
chmod -R g+w /opt/homebrew-cask

4

나는 단지 받아 들여진 대답에 대해 언급하려고했지만 (아직 평판이 없다.)

Caskroom.io 사용자로서 다음을 추가하는 것이 좋습니다.

sudo chown -R admin /opt/homebrew-cask
sudo chmod -R g+w /opt/homebrew-cask
sudo chmod -R g+w  /Library/Caches/Homebrew/

homebrew에 매우 유용한 확장 인 cask가 모든 파일을 /opt/homebrew-cask


1
하여 /opt나는 당신이 의미하는 것 같아요 /usr/local? 으로 /opt최근의 OS X에 존재하지 않는 것은 설치, 심지어 사제 후 설치합니다.
forquare

2016 년 6 월, Homebrew-Cask (brew 확장 프로그램)는 Caskroom 폴더의 기본 위치를 /usr/local(또는보다 정확하게 $(brew --prefix))로 이동 /opt/homebrew-cask하여이 답변이 무의미 하지만 작성된 시점에는 유효했습니다.
zen

1

경로에 권한을 부여해야합니다. 이것을 커맨드 라인에서 실행하면 괜찮을 것입니다. 그것은 나를 위해 일했다 :

sudo chown -R $ USER / usr / local


0

그룹 권한을 설정 한 것에 대해 투표하고 싶습니다. 보안 문제를 일으키지 않아야하는 것 같습니다.

  • sudo를 사용하지 마십시오.

tl; dr Sudo는 위험하므로 sudo없이 TextMate.app를 설치했습니다.

Homebrew는 sudo를 사용하지 않고 작동하도록 설계되었습니다. 사용하기로 결정할 수 있지만 사용하지 않는 것이 좋습니다. sudo를 사용하고 버그가 발생하면 원인 일 수 있습니다. sudo를 사용하지 않고 Homebrew를 처음부터 다시 설치 한 후 재현 할 수 없다면 버그 보고서를 제출하지 마십시오.


그래서 당신의 조언은 sudo chmod -R g+w /usr/local/?
Meltemi

예, 그러나 다음 중 하나를 사용하여 두 번째 의견을 요청할 수 있습니다. IRC (irc : //irc.freenode.net/#machomebrew); 메일 링리스트 (homebrew@librelist.com); 트위터 ( twitter.com/machomebrew )
iolsmit
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.