Używam HomeBrew do moich potrzeb związanych z portem (wydaje się nieco „czystszy” niż MacPorts).
Mogę zainstalować bez sudo
ing (co jest świetne), ale wydaje się, że krok łączenia man go wymaga ( /usr/local/share/man/man3
jest własnością root
). Przewodnik znalazłem sugeruje I rekursywnie wykonującchown /usr/local
sudo chown -R `whoami` /usr/local
Czy to jest bezpieczne ... czy to Bad Idea ™?
Ponadto: czy moje uprawnienia są prawidłowe?
$ 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
sudo chown -R :admin /usr/local
. W ten sposób będzie działać tak samo dla każdego administratora komputera. Może być jednak konieczne uruchomienie,sudo find /usr/local -perm -200 -exec chmod g+w '{}' \+
aby upewnić się, że grupa ma taki sam dostęp do zapisu jak użytkownik.Odpowiedzi:
Zazwyczaj lepiej jest zachować jak najściślejsze uprawnienia. Zachowanie
/usr/local
własnościroot
oznacza, że tylko procesy działające jakoroot
/sudo
(lub proszą administratora o skorzystanie z okna dialogowego autoryzacji Apple) mogą pisać w tym obszarze. Dlatego proces pobierania musi poprosić Cię o podanie hasła przed uszkodzeniem plików.Ale jak mówisz, utrudnia to dodawanie nowych programów.
Nie przeszkadza mi uruchamianie
sudo
, ponieważ instalujesz rzeczy rzadziej niż uruchamianie, ale musisz ufać, że proces kompilacji niczego nie zmieni.Jeśli chcesz uniknąć sudo, zainstalowałbym Homebrew
~/usr/local
i zmieniłem twoją ścieżkę, manpath itp., Aby uwzględnić znajdujące się tam katalogi.Lepszym sposobem jest utworzenie innego użytkownika - powiedzmy,
homebrew
i utworzenie katalogu należącego do tego użytkownika. Następnie zainstaluj tam za pomocąsudo -U homebrew
. Inni użytkownicy skorzystają z tego, że nie będą mogli nadpisywać żadnych innych plików, ponieważ nie działają one, ponieważroot
inne programy nie mogą wpływać na homebrew. (Zwracam uwagę, że FAQ Homebrew sugeruje, aby nowy użytkownik był w „środowisku wielu użytkowników”. Powiedziałbym, że każda maszyna z systemem Unix, w tym macOS, jest środowiskiem wielu użytkowników)Jednak, jak głosi wiki Homebrew, przepisy nie zawierają wszystkich przypadków
/usr/local
i zastępują je wybranym katalogiem, który, jak podejrzewam, utknął/usr/local
.źródło
$PATH
i$MANPATH
dołączanie katalogów użytkowników. Jeśli zainstalowane programy nie wymagają instalacji systemowej, jest to znacznie lepsza alternatywa.brew doctor
(sugerowane poniżej) powiedziało mi, że muszę tylko przeglądać katalogi wspólnych użytkowników ... wystarczająco bezpieczne dla mnie.Używam również Homebrew i mogę potwierdzić, że jest całkowicie bezpieczny. Cytując stronę instalacji na oficjalnym Homebrew FAQ :
Dodam tylko, że robi rzeczy jako root jest bardzo złym pomysłem , więc
chown
ing/usr/local
nie tylko uzasadnione wydaje mi się (to nie reż System na OSX), ale zdrowa .Twoje uprawnienia są jeszcze niepoprawne (jeszcze). Po prostu uruchom wymienione polecenie i wszystko będzie dobrze.
Jeśli masz inne problemy, pamiętaj,
brew doctor
może ci pomóc!źródło
brew doctor
jest po prostu niesamowity.Jeśli korzystasz z Homebrew, powinieneś zezwolić na zapis konkretnej grupie (albo
admin
albostaff
), aby pliki mogły być współużytkowane przez użytkowników należących do tej grupy.Na przykład:
Następnie przypisz użytkowników, którzy powinni mieć dostęp do
brew
poleceń do tej grupy (sprawdź swoje grupy poprzezid -Gn
:).Następnie podczas pracy z
brew
nie uruchamiaj gosudo
.Jeśli nadal masz problem z uprawnieniami, uruchom go,
brew doctor
aby rozwiązać problem.źródło
su myAdminUser
, a potem wszystko działa zgodnie z przeznaczeniem. Ale oczywiście to rozwiązanie nie zapewni żadnego bezpieczeństwa osobom, które i tak już prowadzą administratora.Co do tego, co jest warte,
/usr/local
nie jest uważany przez OS X za folder „systemowy”, a na zupełnie nowej instalacji Snow Leopard ten folder jest pusty.Wszelkie rzeczy należące do roota w tym folderze są wynikiem działania
sudo make install
innego oprogramowania lub podania hasła po dwukrotnym kliknięciu pliku,.pkg
który chce zrzucić rzeczy/usr/local
.Posiadanie
/usr/local
„pracowało dla mnie” na 2 maszynach od ponad roku.Jednym z problemów jest to, że jeśli zainstalowałeś MySQL (nie używając Homebrew) i przeglądałeś jego pliki, to prawdopodobnie nie będzie już w stanie zobaczyć swoich baz danych (więc będziesz musiał odesłać je z powrotem do dowolnego użytkownika, który działa jako MySQL jako .)
źródło
/usr/local/bin
nadal ma$PATH
wartość domyślną , a cokolwiek tam umieścisz, może być również używane przez innych użytkowników i powinno być godne zaufania . Jeśli cały/usr/local/
katalog ma takie same uprawnienia, jak/usr/local/share/man
obecnie w konfiguracji OP, każdy może przejść i zmienić dowolny plik binarny za pomocą skryptu, który to robirm -rf ~
./usr/local
powinny być w porządku. (Ale prawdopodobnie i tak korzystasz z Postgres.))Jak w Homebrew 1.0.0:
źródło
brew update
, który nadal wymaga posiadania/usr/local
. Spróbuję później przywrócić uprawnienia.Myślę, że użytkownicy mogą mieć uprawnienia do zapisu
/usr/local
- w końcu oznacza to, że nie używaszsudo
każdego skryptu kompilacji. Nie podoba mi się pomysł zwykłego użytkownika posiadania wynosi/usr/local
. Wolałbym mieć root (lub podobny)/usr/local
, ale zmień uprawnienia, aby użytkownicy (lub przynajmniej uprzywilejowana grupa) mogli do niego pisać. To wydaje się być poprawnym koncepcyjnie podejściem.źródło
/usr/local/bin
dla większości użytkowników bardzo dobrze może być to $ PATH. Uczynienie katalogu do zapisu na świecie otwiera w ten sposób wiele luk bezpieczeństwa.sudo
, albo dajesz niektórym użytkownikom uprawnienia do zapisu/usr/local
. Trzecią uważam za najmniej ryzykowną ... chyba że znasz lepszy sposób.~/brew
lub coś takiego. Problem polega jednak na tym, że w przeciwieństwie do Ruby, która jest dość samodzielna, wiele narzędzi * nix spodziewa się, że odnajdą się w/usr/local
.../usr/local
nie można zapisywać na całym świecie: mam raczej zaufaną grupęhomebrew
(nie tylko administratora), która ma uprawnienia do zapisu (rozszerzone uprawnienia, takie jak0: group:homebrew allow add_file,delete,add_subdirectory,delete_child,file_inherit,directory_inherit
całkowicie rock). To najlepszy kompromis, jaki udało mi się wymyślić: braksudo
skryptów kompilacji, ale pewna kontrola/usr/local
./usr/local
). Robiąc dużo włoków na SO i innych stronach, widząc argumenty dotyczące: przeniesienia Homebrew do folderu domowego użytkownika vs. trzymania w środku/usr/local
, zmiany właściciela i / lub grupy/usr/local
itd. Itd.… Trudno powiedzieć, czy są jakieś powszechnie akceptowane rozwiązanie. Czy masz post na blogu lub artykuł na ten temat, czy mógłbyś gdzieś udzielić głębszych wyjaśnień?