왜 / usr / local / bin에 루트 사용자 만 액세스 할 수 있습니까? 그것을 고칠 권리는 무엇입니까? 친구, 당신은

최근에 포드를 사용하여 프레임 워크의 경로를 업데이트하고 싶었습니다.

Cocoapods가 설치되어 있으며 여기에서 찾을 수 있습니다.

/usr/local/bin/

그러나 놀랍습니다! 루트 전용 액세스로 설정되어 있습니다.

ls -l / usr / local
drwx ------ 504 휠 빈 /
drwxr-xr-x @ john 직원 포함 /
drwxr-xr-x @ john staff lib /
drwxr-xr-x 루트 휠 공유 /

어떤 경우에도 포드를 사용할 수 없습니다.

  • 포드 설치 영역

    heeeyy 친구, 당신은 당신이 루트가 아닌 포드 원인에 액세스 할 수 없습니다.!.

  • sudo 포드 설치 영역

    Heeeyy 친구, 당신은 뿌리로 포드를 사용할 수 없습니다! .!.

이 폴더는 다음과 같은 이유로 ‘루트 만’으로 설정해서는 안된다고 생각합니다.

나는 리눅스가 BSD가 아니라는 것을 알고 있지만 여전히 그렇게 다르지 않다.


마지막으로 여기 내 질문이 있습니다.

  • 검색했는데 uid 504를 가진 사용자가 없습니다. 의심 스럽습니까?

( “”dscacheutil -q user | grep 504 “”로 확인)

  • 폴더에 대한 권리와 소유자는 무엇입니까?

  • 같은 문제가있는 사람이 있습니까?

  • 왜 이런 일이 일어 났는지 아십니까?



답변

/ usr / local의 기본 설정은 다음과 같습니다.

~ $ ls -ld /usr/local
drwxr-xr-x@ 3 root  wheel  102  5 Aug 20:01 /usr/local

이것은 / usr / local 아래의 파일과 디렉토리는 루트 사용자 만이 만들 수 있음을 의미합니다. 예를 들어, / usr / local은

~ $ ls -l /usr/local
total 0
drwxr-xr-x  12 root  wheel  408 11 Sep 12:11 bin

따라서 공유 디렉토리는 정상적으로 보이지만 다른 디렉토리에는 이상한 변화가 있습니다.

include와 lib는 / usr / local의 사용 권한을 변경하여 쓸 수 있고이 두 디렉토리 (Homebrew를 설치하는 가장 일반적인 설정)를 생성 한 것처럼 보입니다 (무엇이 ls -ld /usr/local표시 되는지 확인해야합니다) .

쓰레기통에 관해서는 몇 가지가 있었을 것입니다. 먼저 새로운 사용자가 언젠가 추가되었을 것입니다. 일반 사용자 (시스템 환경 설정 GUI를 통해 생성 된 501에서 시작). 예를 들어 두 번째 사용자이므로 내 ID는 502이고 디렉토리는 해당 사용자에게 작성 또는 변경되었습니다. 디렉토리는 다른 곳에서 작성된 후 루트로 루트 디렉토리로 이동했습니다.
디렉토리의 권한은 다음과 같이 변경되었습니다.chmod 700

따라서 기본 설치에서 Homebrew를 사용하지 않는 경우 / usr / local / include와 같이 올바른 설정이 / usr / local / share에 따라 설정됩니다.


답변

/ usr 폴더는 SIP (System Integrity Protection)에 의해 보호되며 / usr / local (및 해당 하위 디렉토리)을 제외한 모든 내용과 마찬가지로 루트가 소유합니다.

루트 사용자는 504가 아니라 uid 0입니다. 500 시리즈는 사용자 또는 앱이 만든 계정이어야합니다. 시스템의 / usr / local / bin은 “admin”그룹의 내 사용자 이름 “tubedogg”가 소유 drwxrwxr-x하며 권한을 갖습니다 .


답변

/usr/local/자체가 root wheel저의 소유 입니다. 그러나 포드 사용자로 사용할 수있는 모든 폴더는 bin include etc lib opt share var내 사용자 및 관리자 그룹이 소유합니다.

폴더와 파일의 소유권을 변경하려면 다음을 실행하십시오.

sudo chown -R john:staff /usr/local/bin
chmod -R 755 /usr/local/bin