사제 권한을 수정하는 방법?


601

Homebrew는 대부분의 설치가 끝날 때 권한을 거부하므로 아무것도 설치할 수 없기 때문에 지금 3 번 설치 제거했습니다.

예를 들어 현재 직면하고있는이 libjpeg 다운로드 시나리오를 게시하겠습니다.

libjpeg를 설치하고 얻으려고합니다.

$ brew install libjpeg
==> Downloading https://downloads.sf.net/project/machomebrew/Bottles/jpeg-8d.mountain_lion.bottle.1.tar.gz
Already downloaded: /Library/Caches/Homebrew/jpeg-8d.mountain_lion.bottle.1.tar.gz
==> Pouring jpeg-8d.mountain_lion.bottle.1.tar.gz
Warning: Could not link jpeg. Unlinking...
Error: The brew link step did not complete successfully
The formula built, but is not symlinked into /usr/local
You can try again using `brew link jpeg'
Error: Permission denied - /usr/local/opt/jpeg

'brew link jpeg'결과

Error: Permission denied - /usr/local/opt/jpeg

양조 의사가 읽는 내용은 다음과 같습니다.

$ brew doctor
Warning: "config" scripts exist outside your system or Homebrew directories.
./configure scripts often look for *-config scripts to determine if
software packages are installed, and what additional flags to use when
compiling and linking.

Having additional scripts in your path can confuse software installed via
Homebrew if the config script overrides a system or Homebrew provided
script of the same name. We found the following "config" scripts:

/Library/Frameworks/Python.framework/Versions/2.7/bin/python-config
/Library/Frameworks/Python.framework/Versions/2.7/bin/python2-config
/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7-config
Warning: You have unlinked kegs in your Cellar
Leaving kegs unlinked can lead to build-trouble and cause brews that depend on
those kegs to fail to run properly once built. Run brew link on these:

jpeg

이 권한 문제로 인해 brew를 사용하는 것이 불가능 해졌으며 어떤 제안이라도 정말 감사하겠습니다.

답변:


955

chown폴더 를 사용하여 문제를 해결할 수있었습니다 .

sudo chown -R "$USER":admin /usr/local

또한 (대부분) 동일한 작업을 수행해야합니다 /Library/Caches/Homebrew.

sudo chown -R "$USER":admin /Library/Caches/Homebrew

분명히 나는 sudo에 대한 폴더 권한을 변경하는 방식으로 이전에 사용했었다 /usr/local.

이 답변은 gitHub 사제 이슈 트래커에 의해 제공됩니다.


14
고마워 또한 sudo chown -R $USER:admin /Library/Caches/Homebrew권한 문제를 해결 하기 위해 실행 해야했습니다.
alexpls 2016 년

64
/ usr / local의 소유권을 특정 사용자로 변경하는 것은 해결책이 아닙니다. 단일 사용자 시스템을 사용하는 경우 끔찍한 해킹과 해결 방법 입니다. 그러나 당신은 또한 그냥 chown -R / $ USER : $ USER
fijiaaron

17
@fijiaaron 그렇다면 더 나은 해결책은 무엇입니까?
ju

47
chowning / usr / local : 완전히 제정신의 솔루션. 이것이 실제로 파티 라인이 아니길 바라고 있습니다.
John Clements

15
이 솔루션이 다중 사용자 시스템 (@fijiaaron, @JohnClements, @hmijail, @Alex)을 망칠 것이라고 불평하는 사람들에게 이것이 바로 그룹 권한이 반전 된 이유입니다. macOS에서 admin그룹은 모든 관리 사용자 ( sudo다른 무엇보다도 할 수있는 모든 macOS 사용자 계정 사용자 )이므로 (@AndreaDeGaetano에서 제안한대로) chown -R …:admin함께 실행 chmod -R g+w /usr/local하면 여기에 아무런 문제가없고 다른 사용자도 /usr/local/ 를 사용 brew합니다.
Slipp D. Thompson

479

그것은 할 수 없습니다로 맥 OS 높은 시에라의 사용자를위한 새로운 명령 chown/usr/local:

bash/zsh:

sudo chown -R $(whoami) $(brew --prefix)/*

fish:

sudo chown -R (whoami) (brew --prefix)/*

참조 : High Sierra에서 / usr / local을 숨길 수 없음


그래 @Jeffpowrs 나는 맥 OS 10.13.2에서 같은 문제가 발생하고있다
andrewwong97

4
나는 생선 껍질을 사용하고 다음을 사용해야했습니다. sudo chown -R (whoami) (brew --prefix)/*
Tarellel

2
관련 적으로. 내가하려는 일 sudo mkdir /usr/local/Frameworks에 대해이 답변에 표시된 chown 명령을 따라야했습니다.
Dan Burton

1
감사. 이것은 하루를 구했다.
Aashutosh Rathi

2
하나님, 당신을 축복하십시오!
Mendigo dos Bytes

285

내가 한 것처럼 여기 착륙하는 사람에게 첫 번째 옵션으로, 당신이 제안한 것을 따르십시오.

brew doctor

가장 안전한 길이며 무엇보다도 다음과 같이 제안했습니다.

sudo chown -R $(whoami) /usr/local

그 권한 문제를 해결했습니다.

OP는 단지 그랬지만 분명히 위의 제안을 얻지 못했습니다. 항상 시작하는 것이 좋으며 도움이되지 않는 경우 사소한 해결 방법 만 찾으십시오.



3
또한 이것이 모든 권한 문제를 해결하고 쉽게 내 노드 버전을 업그레이드 할 수 있음을 확인할 수 있습니다.
06/

2
양조 의사가 모든 문제를 찾을 수는 없습니다. 내가 가진 문제는 / usr / local / Frameworks가 존재하지 않아서 그것을 만들고 소유권을 설정하여 해결했습니다. brew 자체는 그것을 문제로 인식하지 못했습니다.
Joe W

2
내가 얻을 chown: /usr/local: Operation not permitted2019년 7월 5일의대로 작동하지 않습니다
tavalendo

1
의사와의 힌트는 여기에 가장 좋은 힌트 중 하나입니다. 언제든지 다른 문제를 수정하거나 수정하는 데 도움이되기 때문입니다!
ecth

82

OSX High Sierra를 사용하는 경우 /usr/local더 이상 chown'd'가 될 수 없습니다 . 당신이 사용할 수있는:

sudo chown -R $(whoami) $(brew --prefix)/*


감사. 저를 구했습니다!
Matthias

3
High Sierra는 권한을 변경할 수 없다고 주장했지만 $ (brew --prefix)가 / usr / local을 제공한다는 것을 알았습니다 ...하지만 brew는 내 인스턴스에서 "/ usr / local / Frameworks"에 대한 권한을 원했기 때문에 , 대신 "$ (brew --prefix) / Frameworks"을 사용할 수 있었고 그 후에 "brew link python @ 2"가 제대로 작동했습니다.
alpheus

여러 명의 사용자가있는 모든 Mac 사용자는 이것을 사용하십시오!
Erik Nguyen

OSX High Sierra에 감사드립니다. MAC OSX의 이전 버전 에서처럼 더 이상 / user / local을 숨길 수 없습니다. 이것은 나를 위해 일했다!
Jose Mhlanga

29

/usr/local/Frameworks폴더 가 없었 으므로이 문제가 해결되었습니다.

sudo mkdir -p /usr/local/Frameworks
sudo chown -R $(whoami) /usr/local/Frameworks

첫 번째 줄은 homebrew (brew)가 사용할 새 Frameworks 폴더를 만듭니다. 두 번째 줄은 해당 폴더에 현재 사용자 권한으로 충분합니다.

사용 된 명령은 다음과 같습니다.

mkdir- 디렉토리 만들기 [ -p 존재하는 경우 오류 없음, 필요에 따라 부모 디렉토리 만들기]

chown- 파일 소유자 및 그룹 변경 [ -R 은 파일 및 디렉토리에서 반복적으로 작동]

whoami- 유효 사용자 ID 인쇄

OSX High Sierra가 있습니다


27

이 문제가 발생했습니다. 효과적인 해결책은 다음과 같이 /usr/local 대신 현재 사용자의 소유권을 변경하는 것입니다 root.

  sudo chown -R $(whoami):admin /usr/local

그러나 실제로 이것은 올바른 방법이 아닙니다. 주로 컴퓨터가 서버 또는 다중 사용자 인 경우.

내 제안 은 위와 같이 소유권을 변경하고 Brew .. (update, install ... 등)로 구현하려는 모든 작업을 수행 한 다음 소유권을 루트로 다시 재설정하는 것입니다.

  sudo chown -R root:admin /usr/local

그러면 문제가 해결되고 소유권이 적절한 세트로 유지됩니다.


4
흠 .. 그리고 우리가 chown을 위해 "조작이 허용되지 않음"을받을 때?
Ewoks

@Ewoks는 MacOs에 있습니까?
Maher Abuthraa

1
예, Sierra High : S
Ewoks


15

최고 투표 답변의 명령이 작동하지 않습니다.

출력되었습니다 :

chown : / usr / {my_username} dmin : 잘못된 사용자 이름

이 명령은 제대로 작동합니다 (/ usr / local에 대한 그룹은 admin이미 사용됨).

sudo chown -R $USER /usr/local

5
인용구 추가sudo chown -R "$USER":admin /usr/local
orkoden

2
@skywinder 귀하의 답변이 저에게 효과적이었습니다. $ USER에 따옴표를 사용할 필요가 없습니다.
Anna S

sudo chown -R "$ USER": admin / usr / local 여기서 $ USER를 이름으로 바꿉니다.
lft93ryt

결과Error: Running Homebrew as root is extremely dangerous and no longer supported. As Homebrew does not drop privileges on installation you would be giving all build scripts full access to your system.
thesummersign

3
chown: /usr/local: Operation not permitted
Krishnadas PC

13

폴더 권한을 사용하고 싶지 않았으므로 다음을 수행했습니다.

brew doctor
brew upgrade
brew cleanup

그런 다음 다른 추출 공식을 계속 설치할 수있었습니다.


1
이것은 내 문제에 잘 작동했습니다. 이미 권한을 부여했습니다. \
Komsomol

12

blanket보다 약간 더 목표 화 된 접근 방식을 chown -R원한다면 fix-homebrew 스크립트가 유용 할 것입니다.

#!/bin/sh

[ -e `which brew` ] || {
    echo Homebrew doesn\'t appear to be installed.
    exit -1
}

BREW_ROOT="`dirname $(dirname $(which brew))`"
BREW_GROUP=admin
BREW_DIRS=".git bin sbin Library Cellar share etc lib opt CONTRIBUTING.md README.md SUPPORTERS.md"

echo "This script will recursively update the group on the following paths"
echo "to the '${BREW_GROUP}' group and make them group writable:"
echo ""

for dir in $BREW_DIRS ; do {
    [ -e "$BREW_ROOT/$dir" ] && echo "    $BREW_ROOT/$dir "
} ; done

echo ""
echo "It will also stash (and clean) any changes that are currently in the homebrew repo, so that you have a fresh blank-slate."
echo ""

read -p 'Press any key to continue or CTRL-C to abort.'

echo "You may be asked below for your login password."
echo ""

# Non-recursively update the root brew path.
echo Updating "$BREW_ROOT" . . .
sudo chgrp "$BREW_GROUP" "$BREW_ROOT"
sudo chmod g+w "$BREW_ROOT"

# Recursively update the other paths.
for dir in $BREW_DIRS ; do {
    [ -e "$BREW_ROOT/$dir" ] && (
        echo Recursively updating "$BREW_ROOT/$dir" . . .
        sudo chmod -R g+w "$BREW_ROOT/$dir"
        sudo chgrp -R "$BREW_GROUP" "$BREW_ROOT/$dir"
    )
} ; done

# Non-distructively move any git crud out of the way
echo Stashing changes in "$BREW_ROOT" . . .
cd $BREW_ROOT
git add .
git stash
git clean -d -f Library

echo Finished.

chmod사용자 에게 a 를 수행하는 대신 , admin그룹 (귀하가 속한 그룹)에게 /usr/local해당 homebrew가 사용 하는 특정 디렉토리에 대한 쓰기 권한을 부여 합니다. 또한 수행하기 전에 정확히 무엇을할지 알려줍니다.


1
일부 경로는 약간 변경된 것으로 보이므로 디렉토리를 chgrp하고 chmod해야 할 수도 있지만 사용자 접근 방식에 대한 모든 것을 chown보다 선호합니다!
ashirley

8

제 경우에는 / usr / local / Frameworks가 존재하지 않았으므로 다음과 같이했습니다.

sudo mkdir /usr/local/Frameworks
sudo chown -R $(whoami) /usr/local/Frameworks

그리고 모든 것이 예상대로 작동했습니다.


1
이것은 내 문제를 해결했으며 양조 의사가 문제로 감지하지 못했습니다.
Joe W

7

이것은 나에게 문제를 해결했다.

sudo chown -R "$USER":admin /Users/$USER/Library/Caches/Homebrew
sudo chown -R "$USER":admin /usr/local

2
이렇게하면이 문제가 해결되지만 성공적으로 연결 한 후에이 단계를 취소합니다. 보안상의 이유 때문입니다.
ora-600

7

다음 명령으로 문제를 해결했습니다.

sudo mkdir /usr/local/Cellar
sudo mkdir /usr/local/opt
sudo chown -R $(whoami) /usr/local/Cellar
sudo chown -R $(whoami) /usr/local/opt

1
감사! 에 도움이되는 유일한 것은 그게 전부 Mac OS 10.13.4내 경우에는 내가 작성했다 sudo mkdir /usr/local/Frameworkssudo chown -R $(whoami) /usr/local/Frameworks링크 파이썬 수 있도록!
A1m


5

이러한 모든 제안이 효과가있을 수 있습니다. 양조 의사의 최신 버전에서는 더 나은 제안이 이루어졌습니다.

먼저- /usr/local커맨드 라인에서 이것을 실행하여 이미 만들어 놓은 혼란을 수정하십시오 .

sudo chown -R root:wheel /usr/local

그런 다음이 사용자를위한 경로를 소유하십시오.

sudo chown -R $(whoami) /usr/local/lib /usr/local/sbin /usr/local/var /usr/local/Frameworks /usr/local/lib/pkgconfig /usr/local/share/locale

이 정보는 sudo brew update모두 실행 한 다음 발생할 수있는 모든 경고 및 오류를 읽으면 사용할 수 있습니다 .


/ usr / local의 모든 소유권을 root : wheel로 설정하는 것은 위험하고 불필요합니다. 관련 경로는 / usr / local / Cellar
ben26941

1
.. 이미 개발 관리자에게 권한을 부여하지 않은 경우 또는 sudo로 설치하여 brew가 이미 권한을 잃은 경우를 제외하고는 해당 권한을 만질 필요가 없습니다. 이 경우 자체적 으로이 수정을 권장합니다. sudo 혼란을 남기는 것보다 훨씬 덜 위험하다고 생각합니다.
Max Dercum

1
추출 권장 사항에 대한 링크를 제공 할 수 있습니까?
ben26941

1
가장 좋은 답변입니다. 다른 Mac에서 마이그레이션 한 후에 작동했습니다.
BuffMcBigHuge

4

나를 위해, 그것은 후에 일했습니다.

brew doctor

권한 변경 명령으로 인해 다른 오류가 발생했습니다

chown: /usr/local: Operation not permitted


3

github에는 / usr / local의 perms를 수정하고 'admin'그룹의 구성원 인 누구나 액세스 할 수 있도록 brew 디렉토리를 만드는 킬러 스크립트가 있습니다.

https://gist.github.com/jaibeee/9a4ea6aa9d428bc77925

/ usr / local / ___ 디렉토리를 $ USER로 chown하면 해당 시스템에서 homebrew의 다른 관리자를 분리하기 때문에 선택한 답변보다 더 나은 솔루션입니다.

내가 이것을 게시 할 당시의 스크립트 내장은 다음과 같습니다.

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

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

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

2

MacOS Mojave chown에서 / usr / local 폴더 ( sudo chown -R "$USER":admin /usr/local) 에 대한 권한이 없습니다 .

sudo chown -R "$USER":admin /usr/local/*그러나 로컬 폴더 내의 모든 권한을 변경하여 나를 위해 일했습니다 .

잘하면 이것은 같은 문제를 가진 다른 사람들을 도울 것입니다.


1

실제로는 매우 간단합니다.이 명령을 실행하십시오. brew doctor

그리고 예를 들어 내 경우와 같이 권한 문제를 해결하기 위해해야 ​​할 일을 알려줍니다.

이것이 문제였습니다.

Warning: The following directories are not writable by your user:
/usr/local/share/man/man5
/usr/local/share/man/man7

그리고 이것이 해결책이었습니다.

You should change the ownership of these directories to your user.
  sudo chown -R $(whoami) /usr/local/share/man/man5 /usr/local/share/man/man7

1
cd /usr/local && sudo chown -R $(whoami) bin etc include lib sbin share var opt Cellar Frameworks

1

내 경우에는 SaltStack을 제거하고 다시 설치하는 데 문제가 있습니다.

실행 후 :

ls -lah /usr/local/Cellar/salt/

그룹 소유자가 "직원"인 것을 알았습니다. (BTW, macOS Mojave 버전 10.14.3을 실행하고 있습니다.) 직원 그룹은 직장 구성과 관련이있을 수 있지만 실제로는 모릅니다. 어쨌든, 나는 더 이상 아무것도 깨지 않도록 그룹을 보존했습니다.

나는 다음을 달렸다.

sudo chown -R "$USER":staff /usr/local/Cellar/salt/

그 후, 루트가 아닌이 명령으로 성공적으로 제거 할 수있었습니다.

brew uninstall --force salt

0

최신 Homebrew가없는 경우 : Homebrew를 루트로 실행하여 Homebrew 실행 파일의 소유권을 root로 변경해야만 가능합니다. 어느 시점에서 그들은이 기능을 제거했습니다.

그리고 그들이 루트로 실행해서는 안된다는 경고를 많이 줄 것입니다. 그러나 c'mon, 그렇지 않으면 제대로 작동하지 않습니다.


0

이 페이지의 모든 것을 시도했지만이 솔루션을 사용했습니다.

brew uninstall --force brew-cask; brew untap $tap_name; brew update; brew cleanup; brew cask cleanup;

내 상황은 OP와 비슷했지만 문제는 특히 brew cask로 sudo를 실행 한 다음 암호가 잘못되어 발생했습니다. 그 후 설치를 방해하는 권한이 붙어있었습니다.


0

폴더 실행에 대한 BREW 권한 오류를 해결하려면

brew prune

이렇게하면 문제가 해결되며 디렉토리를 숨길 필요가 없습니다.


1
이것은 더 이상 작동하지 않습니다, 당신은 지금해야합니다brew cleanup --prune-prefix
Sliq

0

나는 Catalina에 있는데이 오류가 발생했습니다.

touch: /usr/local/Homebrew/.git/FETCH_HEAD: Permission denied
touch: /usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask/.git/FETCH_HEAD: Permission denied
fatal: Unable to create '/usr/local/Homebrew/.git/index.lock': Permission denied
fatal: Unable to create '/usr/local/Homebrew/.git/index.lock': Permission denied

나는 Homebrew디렉토리 를 chown 만하면된다

sudo chown -R "$USER":admin /usr/local/Homebrew

0

이 두 명령을 사용하여 문제를 저장했습니다.

sudo chown -R $(whoami) /usr/local

sudo chown -R $(whoami) /usr/local/etc/bash_completion.d /usr/local/lib/python3.7/site-packages /usr/local/share/aclocal /usr/local/share/locale /usr/local/share/man/man7 /usr/local/share/man/man8 /usr/local/share/zsh /usr/local/share/zsh/site-functions /usr/local/var/homebrew/locks

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.