/ usr / local /에 대한 내 권한이 맞습니까?


88

포트 요구 사항에 대해 HomeBrew 를 사용하고 있습니다 (MacPorts보다“깨끗합니다”).

나는 sudoing 없이 설치할 수 있지만 (위대한 것) man 연결 단계는 그것을 필요로하는 것 같습니다 ( /usr/local/share/man/man3소유 root). 가이드 내가 찾은 재귀 I을 제시 수행하여
chown /usr/local

sudo chown -R `whoami` /usr/local

안전한가요? 아니면 Bad Idea ™입니까?

또한 : 내 권한이 맞습니까?

$ pwd
/usr/local/share/man
$ ls -lah
total 32
drwxrwxr-x    8 root  staff   272B  4 Set 11:02 .
drwxrwxr-x    9 root  staff   306B 10 Set 11:27 ..
drwxr-xr-x    3 root  wheel   102B  4 Ago  2009 de
drwxrwxr-x  163 root  staff   5,4K 10 Set 11:27 man1
drwxr-xr-x   11 root  wheel   374B 10 Set 11:27 man3
drwxr-xr-x    7 ago   staff   238B 10 Set 11:39 man5
drwxr-xr-x   11 ago   staff   374B 10 Set 11:39 man7
-rw-r--r--    1 root  staff    13K  4 Set 11:02 whatis

5
이것이 Homebrew가 사용되는 방식입니다. 어떤 사람들은 의견이 맞지 않을 수도 있지만 수석 개발자는 그런 식으로 일한다고 말합니다.
— Mike McQuaid

1
당신의 chown에 대한 약간 더 나은 대안 : sudo chown -R :admin /usr/local. 이 방법으로 컴퓨터의 모든 관리자에게 동일하게 작동합니다. sudo find /usr/local -perm -200 -exec chmod g+w '{}' \+그룹이 사용자와 동일한 쓰기 액세스 권한을 갖도록 실행해야 할 수도 있습니다 .
— 슬립 D. 톰슨

12
"홈브류를 사용하고, macports보다 깨끗하게 느껴집니다. 아,이 정의 된 권한 엉망을보세요. Stack Overflow를 확인하겠습니다. 아, 여기 Unix 모범 사례와 OS 업데이트 시도에 대한 빠른 해킹이 있습니다. 완벽하게! " 몇 달 후 : "이 맬웨어는 어떻게 설치 되었습니까?"
— hmijail

이 접근 방식의 문제점은 Homebrew를 설치하는 사용자 계정 만 사용할 수 있다는 것입니다. 직장 프로젝트를 집 프로젝트와 분리하는 데 사용하는 여러 계정이있는 Mac이 있습니다 (예 :). 잘못된 계정으로 로그인하면 BREW 설치를 사용할 수 없습니다. 루트를 사용하는 위험을 피하기 위해이 경로를 사용했지만 이것이 최선의 방법이라고 확신하지는 않습니다.
— Auspice

@MikeMcQuaid 나는 / usr / 지방에 기본 권한을 복원했다, 흥미 브루 마침내이에 오류를 인정하고 새로운 버전의 두 주 전에 출시했습니다 것을 발견
— oemb1905

답변:


37

일반적으로 사용 권한을 최대한 엄격하게 유지하는 것이 좋습니다. 유지 /usr/local소유 root로 실행 프로세스 만 수단 root/ sudo(또는 애플 인증 대화 상자를 통해 관리 사용자 요청)이이 영역에 쓸 수 있습니다. 따라서 프로세스 다운로드는 파일을 손상시키기 전에 암호를 요구해야합니다.

그러나 당신이 말했듯이, 그것은 새로운 프로그램을 추가하는 것을 어렵게 만듭니다.

나는 sudo당신이 그것들을 실행하는 것보다 덜 자주 설치하기 때문에 running으로 괜찮지 만 빌드 프로세스가 아무것도 변경하지 않는다는 것을 믿어야합니다.

sudo를 피하려면 Homebrew를 설치 ~/usr/local하고 경로, manpath 등을 변경하여 그 아래에 디렉토리를 포함시킵니다.

더 나은 방법은 다른 사용자를 작성 homebrew하고 해당 사용자가 소유 한 디렉토리를 작성하는 것입니다. 그런 다음를 사용하여 설치하십시오 sudo -U homebrew. 다른 사용자는 다른 파일을 실행하지 않고 root 다른 프로그램이 homebrew에 영향을 줄 수 없기 때문에 다른 파일을 덮어 쓸 수 없다는 이점이 있습니다. (저는 "다중 사용자 환경"에있는 경우 Homebrew FAQ 에서이 새로운 사용자를 제안합니다. macOS를 포함한 모든 Unix 시스템은 다중 사용자 환경이라고합니다.)

그러나 Homebrew Wiki는 레시피가 모든 사례를 찾아서 /usr/local선택한 디렉토리로 바꾸지는 않는다고 말합니다 /usr/local.


1
권한을 엄격하게 유지 $PATH하고 $MANPATH사용자 디렉토리를 변경 및 포함 하기 위해 +1 설치된 프로그램에 시스템 전체 설치가 필요하지 않은 경우 훨씬 더 나은 대안입니다.
— zneak

3
"가능한 한 엄격한 권한 유지"에 대한 +1 및 수락 된 답변 이렇게하면 brew doctor(아래 제안) 난 단지 공유 남자 디렉토리 ... 나를 위해 충분히 안전을 chown하지에있는 나에게 말했다.
— Agos

1
최소한 관리자 권한으로 항상 실행하기에 충분하지 않은 보안을 원하는 사람들에게는 타협 솔루션은 그룹 소유권과 권한을 변경하여 관리자 만 / usr / local에 쓸 수 있도록하는 것입니다. kenorb의 답변을 참조하십시오.
— hmijail

2
@ 마크 나는 그것이 흥미 브루 마침내이와 새 버전에서 오류를, / usr / 지방에 대한 기본 사용 권한을 복원 한 두 주 전에 발표 인정한 것을 발견
— oemb1905

48

나는 Homebrew도 사용하고 있으며 완전히 안전하다는 것을 확인할 수 있습니다. 공식 Homebrew FAQ 에서 설치 페이지 인용 :

호의를 베풀고 고르세요 /usr/local


  1. /usr/local/bin이미 더 쉽습니다PATH .


  2. 종속성이 / usr 또는 / usr / local에 없으면 톤 빌드 스크립트 가 더 쉬워집니다 . 우리는 Homebrew 공식에 대해이 문제를 해결하지만 (항상 테스트하지는 않지만) 많은 RubyGems 및 Python 설정 스크립트가 제어 할 수없는 것입니다.

  3. Apple이 POSIX를 준수하고 우리를 위해이 디렉토리를 떠난 것이 안전
    합니다. 즉 /usr/local, 기본적으로 디렉토리가 없으므로 기존 도구를 엉망으로 만들 걱정이 없습니다.

양조장에 의존하는 보석을 설치하려면 번거 로움을 저장하고 설치하십시오 /usr/local!

gem이 비표준 디렉토리에서 헤더와 dylib를 찾도록 지시하는 것은 쉬운 일이 아닙니다. 를 선택 /usr/local하면 모든 것이“그냥 작동합니다!”

난 그냥 추가 할 것입니다 루트는 아주 나쁜 생각으로 일을 일을 그렇게 chown보내고 /usr/local뿐만 아니라하는 것은 (그것이 OSX의 시스템 디렉토리 아니다) 나에게 합리적인 것처럼 보이지만 제정신 .

귀하의 권한이 올바르지 않습니다 (아직). 나열된 명령을 실행하면 괜찮을 것입니다.

다른 문제가 있다면 기억해 두십시오 brew doctor.


의견은 긴 토론을위한 것이 아닙니다. 이 대화는 채팅 으로 이동 되었습니다 .
— bmike

7
대화가 사라졌습니다. 동정입니다. 따라서 역사가 반복 될 위험이 있으므로 여기에 의견을 남길 것입니다. 이것이 완료되었다고해서 이것이 안전하다는 의미는 아닙니다.
— hmijail

4
차트의 요점은 이것이 Homebrew가 이것이 왜 틀린지에 대한 이유가 있다고 제안하는 것이지만
— user151019

1
brew doctor단순히 굉장합니다.
— Utku

5
@Carmine의 Paolino I가 흥미 브루 마침내이와 새 버전에서 오류가 한 두 주 전에 발표 인정한 것을 발견은, / usr / 지방에 기본 권한을 복원 한
— oemb1905

9

Homebrew를 사용하는 경우 특정 그룹 ( admin또는 staff)에 쓰기 권한을 부여하여 해당 그룹에 속한 사용자간에 파일을 공유 할 수 있습니다.

예를 들면 다음과 같습니다.

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

그런 다음 brew명령에 액세스해야하는 사용자 를 해당 그룹에 지정하십시오 (을 통해 그룹을 확인하십시오 id -Gn).

그런 다음로 작업 brew할 때는로 실행하지 마십시오 sudo.

여전히 일부 권한 문제가 brew doctor있는 경우 문제 해결을 위해 실행 하십시오.


실제로 완료되지 않더라도 실제로 더 나은 행동을하는 솔루션을 제공하는 +1 예를 들어 : BSD 레벨에서 관리자 그룹에 사용자를 추가 하시겠습니까? OS X의 관리 사용자 개념이 엉망이되지 않습니까?
— hmijail

기록을 위해이 지침을 따랐지만 CLI의 그룹에 사람을 추가하는 대신 기존 OS X GUI로 만든 관리자를 사용했습니다. 그것은 작동합니다 : 양조 명령을 실행하려면 먼저해야 su myAdminUser하며 모든 것이 의도 한대로 작동합니다. 그러나 물론이 솔루션은 어쨌든 이미 관리자 사용자를 이미 실행중인 사람들에게는 보안을 제공하지 않습니다.
— hmijail

이것은 아마도 가장 좋은 방법 일 것입니다. @kenorb에 동의합니다
— pixel 67

7

그만한 가치가 있기 때문에 /usr/localOS X에서는 "시스템"폴더로 간주되지 않으며 새로운 Snow Leopard 설치에서는 해당 폴더가 비어 있습니다.

해당 폴더의 루트 소유 항목은 sudo make install다른 소프트웨어 의 결과 .pkg이거나을 (를) 덤프하려는 파일을 두 번 클릭 한 후 비밀번호를 제공 한 결과입니다 /usr/local.

/usr/local1 년 넘게 2 대의 기계를 소유 하고 있습니다.

한 가지 문제는 Homebrew를 사용하지 않고 MySQL을 설치하고 파일을 숨기면 더 이상 데이터베이스를 볼 수 없을 것입니다 (따라서 MySQL이 실행중인 모든 사용자에게 다시 가져 와야합니다 .)


5
이 시스템에 영향 않도록 GCC 및 기타 개발 도구가 자동으로 / usr / 지방에서 중요시
— user151019

11
문제는 그것이 "시스템"폴더라는 것이 아닙니다. "시스템 전체"폴더입니다. 아무 것도 없어도 /usr/local/bin여전히 기본값 $PATH이며, 거기에 넣은 것은 다른 사용자도 사용할 수 있으며 신뢰할 수 있어야합니다 . 전체 /usr/local/디렉토리에 /usr/local/share/man현재 OP의 설정 과 동일한 권한이있는 경우 누구나 스크립트를 사용하여 바이너리를 변경하고 변경할 수 있습니다 rm -rf ~.
— zneak

1
너무 위험하다 : 조만간 MySQL을 설치할 것이다.
— Agos

2
@Agos : HomeBrew를 사용하여 MySQL을 항상 설치할 수 있습니다.이 경우 아무런 문제가 없습니다 :)
— Carmine Paolino

1
@Agos 전혀 위험하지 않습니다. 주의 사항은 Homebrew 전에 MySQL을 설치 한 경우에만 적용됩니다. 나중에 수행하면 사용 권한에 문제 /usr/local가 없습니다. (그러나 어쨌든 Postgres를 사용할 것입니다. :))
— Marnen Laibow-Koser

6

Homebrew 1.0.0에서와 같이 :

Homebrew는 더 이상 / usr / local의 소유권을 가질 필요가 없습니다. 원하는 경우 sudo chown root : wheel / usr / local을 사용하여 / usr / local을 기본 소유권으로 되돌릴 수 있습니다.


1
현재를 사용하여 Brew를 업데이트 brew update하고 있는데 여전히 소유권이 필요합니다 /usr/local. 나중에 권한을 복원 해 보겠습니다.
— Joshua Pinter

이것은 정말 좋은 정보입니다! Homebrew (<1.0)에서 지정한대로 perms를 설정했으며 업데이트 후 다시 설정하는 방법에 대한 지침을 제공했습니다.
— mortona42

0

나는 사용자가 갖는 것이 확인 생각 쓰기 권한 에 /usr/local결국, 즉 사용하지 않는 것을 의미 - sudo모든 빌드 스크립트를합니다. 나는 일반 사용자 소유 라는 아이디어가 마음에 들지 않습니다 /usr/local. root (또는 이와 유사한) own을 선호 /usr/local하지만 사용자 (또는 최소한 권한있는 그룹)가 쓸 수 있도록 권한을 변경하십시오. 그것은 개념적으로 올바른 접근법처럼 보입니다.


7
여기서 문제는 /usr/local/bin대부분의 사용자에게 $ PATH 앞에있을 수 있다는 것입니다. 디렉토리를 세계 쓰기 가능으로 설정하면 많은 보안 허점이 생깁니다.
— nohillside

@patrix 따라서 경로를 변경하십시오. :) 모호한 명령 경로로 인해 보안 허점이있는 스크립트가있는 경우 권한이 아닌 스크립트를 비난합니다. 스크립트에서 호출 된 명령은 일반적으로 정확히 이런 이유로 정규화되어야합니다. 어쨌든 더 나은 해결책은 없습니다. 관리자 계정에 안전하지 않은 umask를 제공하거나로 모든 빌드 스크립트를 실행 sudo하거나 일부 사용자에게에 대한 쓰기 권한을 부여하십시오 /usr/local. 더 나은 방법을 모른다면 세 번째를 가장 덜 위험하다고 생각합니다.
— Marnen Laibow-Koser 2016 년

흠. 이것에 대해 좀 더 생각하면 Homebrew가 RVM이 기본적으로하는 일을하도록하는 것이 더 좋습니다. 모든 것을 설치하십시오 ~/brew. 그러나 문제는 꽤 독립적 인 Ruby와 달리 많은 * nix 유틸리티들이 서로를 찾을 것으로 예상한다는 것입니다 /usr/local.
— Marnen Laibow-Koser

3
나는 내 /usr/local세계가 쓸 수 없다고 언급 하지 않았다. 오히려 homebrew쓰기 권한 이있는 신뢰할 수있는 그룹 (관리자가 아닌)이 있습니다 ( 0: group:homebrew allow add_file,delete,add_subdirectory,delete_child,file_inherit,directory_inherit완전히 록 과 같은 확장 된 권한 ). 이것은 내가 알아낼 수 있었던 최선의 타협 sudo입니다. 빌드 스크립트는 없지만 일부는 제어 할 수 /usr/local있습니다.
— Marnen Laibow-Koser 2016 년

@ MarnenLaibow-Koser 나는이 방법의보다 깊이있는 설명 (쓰기 권한을 가진 사용자의 신뢰할 수있는 그룹을 만들어보고 싶어요 /usr/local). SO 및 기타 사이트에서 많은 트롤링을 수행하면서 논쟁이 다시 나타납니다 : Homebrew를 사용자의 홈 폴더로 이동 대 유지 /usr/local, 소유자 및 / 또는 그룹 변경 /usr/local여부 등 ... 어떤 것이 있는지 말하기가 어렵습니다. 보편적으로 수용 가능한 솔루션. 이것에 대한 블로그 게시물이나 기사가 있습니까?
— Gabriel L.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.