몇 년 전만해도 brew
뿌리를 내리는 것만으로 루트로 도망 갈 수 brew
있었지만 그들은 그 기능을 제거했습니다. 그래서 Homebrew 1.1.6에서는 /usr/local/Homebrew/Library/Homebrew/brew.sh
루트 체크 ( “매우 위험하다”)를 제거하여 루트 brew
로 실행할 수 있도록 편집 했습니다 .
최신 버전의 Homebrew는 여전히 작동하지만 brew.sh
파일을 실행 brew
하더라도 실행 후마다 파일을 계속 되돌 chmod 500
립니다. 스크립트를 작성하여 변경 한 다음 brew
자동으로 실행할 수 는 있지만 이것이 항상 작동하고 기회를 원하지 않는지는 확실하지 않습니다. 누구든지 Homebrew를 루트로 실행하는 다른 방법을 찾았습니까?
답변
스크립트를 변경 한 후 brew.sh에서 변경 불가능한 플래그를 설정하십시오.
chflags uchg /usr/local/Homebrew/Library/Homebrew/brew.sh
나는 테스트하지 않았습니다. 일반적으로 개발자가 요구하지 않는 응용 프로그램에 뿌리를 두지 않습니다.
답변
일반적인 사용자는이 작업을 수행해서는 안되지만 일반적이지 않습니까?
두 가지 문제 :
-
당신은 뿌리를 멈출 수 없습니다. root 사용을 고집하면 root는
brew.sh
무엇이든 덮어 쓸 수 있습니다 . -
brew
결국 멈출 수는 없습니다brew
.
우리는 그 일을 할 것입니다. 복사하고 brew.sh
실행 하도록 별칭을 설정합시다 brew
.
alias brew='cp /<modified>/brew.sh /<actuall>/brew.sh; /usr/local/bin/brew'
(시스템과 일치하도록 경로를 수정하십시오).
이제해야 할 일은 :
sudo brew <arguments>
(루트가되어 복사 하여 루트로 brew.sh
실행 brew
하고 인수를 사용하여 루트로 실행 하면 나중에 brew
덮어 쓰므로 brew.sh
다시 할 준비가됩니다.)
참고 : sudo
별명도 입력 할 수 있지만 매번 암호를 입력하라는 메시지가 표시되므로이 방법이 더 좋습니다.
일반적으로 보안을 위해 setuid
( chmod u+s
)를 사용 하여 쉘 스크립트에서 루트 할 수 없습니다 . Perl에는 별도의 프로그램 suidperl
이 설치되어 사용자 권한을 에스컬레이션 할 수 있지만 이러한 솔루션은 빠른 답변을 위해 약간 깊습니다.