/ usr / local의 소유권이 my-username에서 root로 변경되는 원인을 파악하는 방법


13

homebrew특정 웹 개발 앱의 패키지 관리자로 사용 합니다. brew최신 상태를 유지하기 위해 update brew이틀마다 실행하고 실행 brew doctor합니다. 보통 이것은 괜찮으며 brew양조 할 준비가되었음을 알려줍니다.

그러나 때때로 다음과 같은 오류가 발생합니다.

경고 : / usr / local / etc는 쓰기 가능하지 않습니다.

Homebrew에서 관리하지 않는 소프트웨어를 "sudo make install"소프트웨어로 설치하면 이런 일이 발생할 수 있습니다. 공식이이 디렉토리에 파일을 쓰려고하면 링크 단계 중에 설치가 실패합니다.

아마도 chown/ usr / local / etc

경고 : / usr / local 디렉토리는 쓸 수 없습니다. Homebrew를 설치할 때이 디렉토리를 쓸 수 있었더라도 다른 소프트웨어가이 디렉토리에 대한 권한을 변경할 수 있습니다. Airfoil의 "InstantOn"구성 요소의 일부 버전이이를 수행하는 것으로 알려져 있습니다.

/ usr / local의 소유권과 권한을 다시 사용자 계정으로 변경해야합니다.

권한을 다시 내 사용자 이름으로 재설정하는 것은 쉽습니다. 나중에 brew괜찮은 것 같습니다.

그러나이 문제가 발생하는 원인은 무엇입니까?

권한이 변경되는 원인을 보여주는 로그가 있습니까?


3
로그는 없지만 rood가 소유 한 / usr / local을 갖는 것이 유닉스 표준이므로 그에 대한 빌드는 기대할 것입니다. 해결책은 디렉토리를 패키지 관리자 (Homebrew)와 표준 Unix 컴파일과 함께 사용하지 않는 것입니다. 다른 디렉토리를 사용하십시오
user151019

3
패키지 관리자가 사용하는 것과 동일한 위치에 소프트웨어를 추가하는 것은 좋지 않습니다 /usr/local. 에 대한 소유권과 권한이 변경되고 있습니다. 그러나 주장한다면 직접 설치하는 패키지를 make install사용하지 않고도 할 수 sudo있습니다.
fd0

1
OS X를 업그레이드하면 일반적으로 / usr / local 소유권 및 권한이 재설정됩니다.
mspasov

1
@Others 아 아 질문보다는 Homebrew에서 인용문을 읽었습니다
user151019

1
기본 설치로 구성된 Mac에 수동으로 또는 다른 패키지 관리자를 통해 무엇을 설치 /usr/local했습니까?
dan

답변:


13

나는이 똑같은 문제를 겪었고 Sophos 자동 업데이트가 책임이 있음이 밝혀졌습니다. 나는 이것을 실행하여 이것을 알아 냈습니다.sudo fs_usage | grep "usr/local"

시간이 걸렸지 만 결국 Sophos의 "Installation"데몬이 / usr / local의 권한으로 엉망이되는 것을 보았습니다.

여전히이 동작에 대한 적절한 해결 방법을 찾으려고 노력하고 있습니다.

편집 : Sophos 가이 문제를 해결했다고 생각합니다.이 답변의 의견에있는 링크를 참조하십시오. 적어도 나를 위해 고정 된 것 같습니다!


4
여기에 토론이 있습니다 : community.sophos.com/products/free-antivirus-tools-for-desktops/… 이것은 2015 년 11 월에 수정되어야합니다
JoeZuntz

@JoeZuntz 좋은 발견! 그들은 실제로 수정을 추진하고 있습니다.
기타

이 정보에 대한 @others 감사합니다. 나는 10.11.1로 업그레이드 한 후 모든 것을 고칠 수 있었고 홈 브루를 다시 작동 시켰지만, 브루 업그레이드를 할 때마다 권한이 다시 변경되었습니다. / usr / local에서 어떤 소프트웨어가 지속적으로 perms를 변경했는지 버그가있었습니다.
Tim X

@TimX 그래, 좀 짜증나 ... 다행히도 Sophos는 다음 주 11 월 20 일에 패치를하는 것처럼 보인다.
기타

4

Filewave가 범인이라고 밝혀졌습니다. Filewave는 학교에서 소프트웨어 업데이트를 푸시하기 위해 사용하는 시스템 관리 소프트웨어입니다. 입력 주셔서 감사합니다.


2

허가 도둑을 얻는 방법에 대한 대략적인 아이디어가 있습니다. 이것은 당신의 문제에 대한 해결책이 아니라 더 많은 해결책입니다.

이 특정 폴더를보기 위해 Automator 또는 Hazel (폴더 작업)으로 감시자를 작성하는 것은 어떻습니까? 축소 이미지와 같은 기능을 추가하는 대신 여러 쉘 명령을 실행하는 쉘 스크립트를 사용하면됩니다.

  • 폴더가 어떤 식 으로든 변경되면 권한 및 현재 액세스중인 프로세스 ID를로 스냅 샷하십시오 fuser <foldername>.
  • 그런 다음 프로세스 테이블에서 프로세스 ID ( ps auxwwwwww | grep <process id>) 를 조회 하고 마지막으로
  • 수집 된 정보를 이메일로 보내십시오.

불행히도 나는 Automator sadhu가 아니지만 Google은 비슷한 문제에 대한 많은 솔루션이 있음을 알았습니다.


0

Time Machine을 사용하는 경우 Backups.backupdb터미널에서 탐색 하여 권한이 변경된 대략적인 시간을 찾을 수 있습니다 . ls -ld타임 스탬프가 지정된 폴더에서 사용

ls -ld /Volumes/Backup/Backups.backupdb/Mac/2015-12-25-120000/Macintosh\ HD/usr/local 

소유자 및 그룹 정보가 표시됩니다.

변경이 발생한 날짜가되면 시스템에서 변경된 내용을 알아낼 수 있습니다. 간단한 기술은 Finder의 파일› Last modified date기준을 찾아서 추가하는 것 입니다. 다른 좋은 도구입니다 findmdfind터미널이다.


-1

이것은 시스템 업데이트의 부작용입니다. / usr / local이 루트 소유 폴더에 중첩되어 있기 때문에 OS X는 아마도 업데이트 프로세스 중에 보드 전체 권한 "복구"를 수행 할 것입니다.


AFAICT, El Capitan으로 업그레이드하면 문제가 발생했습니다.
Giuseppe

-3

당신이 사용했던 Disk Utility선택 Macintosh HD후 실행 Verify Disk Permission한 후 Repair Disk Permission필요한 경우가 아닌 수동으로 그 일을?

이제 이것은 문제를 해결하지는 못하지만,자가 양조가 언제 권한을 변경하는지 알 수있는 좋은 출발점입니다. 운이 좋으면 근본적인 문제가 나타날 수 있습니다.

또한 new update -v더 자세한 출력을 위해 homebrew 로그~/Library/Logs/Homebrew어디에 있습니까?


2
Disk Utility/usr/local이 디렉토리가 새로운 Yosemite 설치에 없기 때문에에 대한 권한을 확인하거나 복구 하지 않습니다.
dan

나는 새로운 /usr/local소지품을 만들고 달리 면서 요세미티에서이 가설을 완전히 점검했다 DU. 어떤이 없습니다 /usr/local내에서 DU로그. 그리고 /usr/local여전히 나에게 속한다.
dan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.