Le mie autorizzazioni per / usr / local / sono corrette?

85

Sto utilizzando HomeBrew per le mie esigenze di porta (sembra un po '"più pulito" rispetto a MacPorts).

Posso installare senza sudo ing (che è ottimo), ma il passaggio di collegamento man sembra richiederlo ( /usr/local/share/man/man3 è di proprietà di root ).
Una guida I trovato suggerisce in modo ricorsivo chown /usr/local facendo

sudo chown -R 'whoami' /usr/local

È sicuro ... o è una cattiva idea ™?

Inoltre: le mie autorizzazioni sono corrette?

$ 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
    
posta Agos 10.09.2010 - 12:07
fonte

6 risposte

35

Di solito è meglio mantenere le autorizzazioni il più restrittive possibile. Mantenere /usr/local di proprietà di root significa che solo i processi eseguiti come root / sudo (o chiedi all'utente amministratore tramite la finestra di dialogo di autorizzazione Apple) possono scrivere in quest'area. Pertanto, il download di un processo deve chiederti una password prima di corrompere i file lì.

Ma come dici tu, rende più difficile aggiungere nuovi programmi.

Sto bene con l'esecuzione di sudo , poiché installi le cose meno spesso rispetto a eseguirle, ma devi credere che il processo di compilazione non cambi nulla che dovrebbe.

Se vuoi evitare sudo, installerei Homebrew in ~/usr/local e cambi il tuo path, manpath etc per includere le directory sotto.

Un modo migliore è creare un altro utente, ad esempio homebrew e creare una directory di proprietà dell'utente. Quindi, installa lì usando sudo -U homebrew . Gli altri utenti avranno il vantaggio di non essere in grado di sovrascrivere altri file, perché non vengono eseguiti come root e altri programmi non possono influire sull'homebrew. (Prendo atto che le Domande frequenti Homebrew suggeriscono questo nuovo utente se si è in un "ambiente multiutente". che qualsiasi macchina Unix che include macOS è un ambiente multiutente)

Tuttavia, poiché la wiki di Homebrew dice che le ricette non trovano tutti i casi di /usr/local e li sostituiscono con la directory scelta, sospetto che siamo bloccati con /usr/local .

    
risposta data 10.09.2010 - 12:50
fonte
47

Uso anche Homebrew e posso confermare che è totalmente sicuro. Citando Pagina sull'installazione Domande frequenti Homebrew :

Do yourself a favour and pick /usr/local

  1. It’s easier
    /usr/local/bin is already in your PATH.

  2. It’s easier
    Tons of build scripts break if their dependencies aren’t in either /usr or /usr/local. We fix this for Homebrew formulas (although we don’t always test for it), but you’ll find that many RubyGems and Python setup scripts break which is something outside our control.

  3. It’s safe
    Apple has conformed to POSIX and left this directory for us. Which means there is no /usr/local directory by default, so there is no need to worry about messing up existing tools.

If you plan to install gems that depend on brews then save yourself a bunch of hassle and install to /usr/local!

It is not trivial to tell gem to look in non-standard directories for headers and dylibs. If you choose /usr/local, everything “just works!”

Aggiungerò che fare cose come root è una pessima idea , quindi chown ing /usr/local non solo mi sembra ragionevole (non è una directory di sistema su OSX), ma sane .

Le tue autorizzazioni non sono corrette (ancora). Esegui semplicemente il comando che hai elencato e starai bene.

Se hai altri problemi da ricordare, il brew doctor può aiutarti!

    
risposta data 10.09.2010 - 12:47
fonte
8

Se utilizzi Homebrew, devi fornire il permesso di scrittura a un gruppo specifico ( admin o staff ), in modo che i file possano essere condivisi tra gli utenti che si trovano in quel gruppo.

Ad esempio:

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

Quindi assegna gli utenti che dovrebbero avere accesso al comando brew a quel gruppo (controlla i tuoi gruppi tramite: id -Gn ).

Quindi, quando lavori con brew , non eseguirlo con sudo .

Se il problema persiste, esegui brew doctor per risolvere il problema.

    
risposta data 30.05.2015 - 12:09
fonte
7

Per quel che vale, /usr/local non è considerato una cartella "sistema" da OS X, e su una nuova installazione di Snow Leopard quella cartella è vuota.

Qualunque roba di proprietà della radice in quella cartella è un risultato di sudo make install su altri software, o fornisce la tua password dopo aver fatto doppio clic su una .pkg che vuole scaricare roba in /usr/local .

Possedere /usr/local ha "funzionato per me" su 2 macchine per oltre un anno.

Un trucco è che se hai installato MySQL (non usando Homebrew) e chown i suoi file, allora probabilmente non sarà più in grado di vedere i suoi database (quindi dovresti ridurli a qualsiasi utente MySQL sta funzionando come.)

    
risposta data 10.09.2010 - 17:57
fonte
6

Come in Homebrew 1.0.0:

Homebrew no longer needs to have ownership of /usr/local. If you wish you can return /usr/local to its default ownership with: sudo chown root:wheel /usr/local

    
risposta data 21.09.2016 - 19:55
fonte
0

Penso che sia OK per gli utenti avere permessi di scrittura a /usr/local - dopotutto, questo significa che non stai usando sudo su ogni script di build. Non mi piace l'idea di un utente ordinario proprietario /usr/local . Preferirei avere root (o simile) proprietario di /usr/local , ma cambiare le autorizzazioni in modo che gli utenti (o almeno qualche gruppo privilegiato) possano scriverci. Sembra l'approccio concettualmente corretto.

    
risposta data 29.05.2013 - 18:42
fonte

Leggi altre domande sui tag