Estou usando o HomeBrew para minhas necessidades de portas (parece um pouco "mais limpo" que o MacPorts).
Eu posso instalar sem sudo
ing (o que é ótimo), mas a etapa de vinculação do homem parece exigir isso ( /usr/local/share/man/man3
pertence a root
).
Um guia que encontrei sugere que eu recursivamente chown /usr/local
fazendo
sudo chown -R `whoami` /usr/local
Isso é seguro ... ou é uma Bad Idea ™?
Além disso: minhas permissões estão corretas?
$ 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
. Dessa forma, funcionará da mesma forma para qualquer usuário administrador da máquina. Embora você também precise executarsudo find /usr/local -perm -200 -exec chmod g+w '{}' \+
para garantir que o grupo tenha o mesmo acesso de gravação que o usuário.Respostas:
Geralmente, é melhor manter as permissões o mais rigorosas possível. Manter a
/usr/local
propriedade porroot
meios que apenas processos executados comoroot
/sudo
(ou solicitam usuário administrador por meio da caixa de diálogo de autorização da Apple) podem gravar nesta área. Assim, um download de processo precisa solicitar uma senha antes de corromper os arquivos.Mas, como você diz, torna mais difícil adicionar novos programas.
Eu estou bem com a execução
sudo
, pois você instala as coisas com menos frequência do que executá-las, mas precisa confiar que o processo de compilação não muda o que deveria.Se você quiser evitar o sudo, eu instalaria o Homebrew
~/usr/local
e alteraria seu caminho, manpath etc para incluir os diretórios lá.Uma maneira melhor é criar outro usuário - por exemplo,
homebrew
e criar um diretório de propriedade desse usuário. Em seguida, instale lá usandosudo -U homebrew
. Outros usuários terão o benefício de não serem capazes de sobrescrever outros arquivos, porque não estão sendo executadosroot
e outros programas não podem afetar o homebrew. (Observo que as Perguntas frequentes do Homebrew sugerem esse novo usuário se você estiver em um "ambiente multiusuário". Eu diria que qualquer máquina Unix, incluindo o macOS, é um ambiente multiusuário)No entanto, como o wiki do Homebrew diz que as receitas não encontram todos os casos
/usr/local
e as substituem pelo diretório escolhido, suspeito que estamos presos/usr/local
.fonte
$PATH
e$MANPATH
incluir diretórios de usuários. Se os programas instalados não exigirem instalação em todo o sistema, é uma alternativa muito melhor.brew doctor
(sugerido abaixo) me disse que só preciso exibir os diretórios compartilhados do homem ... suficientemente seguros para mim.Também uso o Homebrew e posso confirmar que é totalmente seguro. Citando a página Instalação na FAQ oficial do Homebrew :
Vou apenas acrescentar que as coisas que fazem como root é uma idéia muito ruim , por isso
chown
ing/usr/local
não só me parece razoável (não é um dir sistema on OSX), mas sã .Suas permissões ainda não estão corretas. Basta executar o comando que você listou e você ficará bem.
Se você tiver outros problemas, lembre-se, o
brew doctor
pode ajudá-lo!fonte
brew doctor
é simplesmente incrível.Se você estiver usando o Homebrew, conceda permissão de gravação a um grupo específico (
admin
oustaff
), para que os arquivos possam ser compartilhados entre os usuários que estão nesse grupo.Por exemplo:
Em seguida, atribua os usuários que devem ter acesso ao
brew
comando para esse grupo (verifique seus grupos em:)id -Gn
.Então, ao trabalhar com
brew
, não execute-o comsudo
.Quando ainda tiver algum problema de permissão, execute
brew doctor
para solucionar o problema.fonte
su myAdminUser
e depois tudo funciona conforme o esperado. Mas é claro que esta solução não dará nenhuma segurança para as pessoas que já estão executando um usuário Admin o tempo todo.Pelo que vale,
/usr/local
não é considerada uma pasta "sistema" pelo OS X e, em uma nova instalação do Snow Leopard, essa pasta está vazia.Qualquer coisa de propriedade raiz nessa pasta é resultado de
sudo make install
outro software, ou fornecer sua senha após clicar duas vezes na.pkg
que deseja despejar coisas/usr/local
.A propriedade
/usr/local
"trabalhou para mim" em 2 máquinas por mais de um ano.Um problema é que, se você instalou o MySQL (sem usar o Homebrew) e reproduziu seus arquivos, provavelmente não poderá mais ver seus bancos de dados (então você terá que reproduzi-los de volta para qualquer usuário que o MySQL esteja executando como .)
fonte
/usr/local/bin
ainda está no$PATH
valor padrão e o que você colocar lá também pode ser usado por outros usuários e deve ser confiável . Se o/usr/local/
diretório inteiro tiver as mesmas permissões/usr/local/share/man
atualmente disponíveis na configuração do OP, qualquer pessoa poderá alterar qualquer binário com um script que o façarm -rf ~
./usr/local
devem estar bem. (Mas você provavelmente usar Postgres qualquer maneira :).)Como no Homebrew 1.0.0:
fonte
brew update
, o que ainda exige a propriedade/usr/local
. Vou tentar restaurar as permissões posteriormente.Acho que não há problema em os usuários terem permissões de gravação para
/usr/local
- afinal, isso significa que você não está usandosudo
em todos os scripts de compilação. Não gosto da ideia de um usuário comum possuir/usr/local
. Eu preferiria ter raiz (ou similar)/usr/local
, mas altere as permissões para que os usuários (ou pelo menos algum grupo privilegiado) possam gravar nele. Essa parece ser a abordagem conceitualmente correta.fonte
/usr/local/bin
pode muito bem estar na frente de $ PATH para a maioria dos usuários. Tornar o diretório gravável mundialmente abre muitas brechas de segurança dessa maneira.sudo
ou dá permissão a alguns usuários de gravação/usr/local
. Vou considerar o terceiro como sendo menos arriscado ... a menos que você saiba de uma maneira melhor.~/brew
ou algo assim. O problema, porém, é que ao contrário de Ruby, que é bastante auto-suficiente, um monte de * nix utilitários esperar encontrar uns aos outros em/usr/local
.../usr/local
não é gravável em todo o mundo: em vez disso, tenho um grupo confiávelhomebrew
(não apenas o administrador) que possui permissões de gravação (permissões estendidas, como0: group:homebrew allow add_file,delete,add_subdirectory,delete_child,file_inherit,directory_inherit
totalmente rock). Este é o melhor compromisso que consegui descobrir: nãosudo
em scripts de construção, mas em algum controle/usr/local
./usr/local
). Pesquisando muito em SO e em outros sites, vendo argumentos sobre: mover o Homebrew para a pasta inicial do usuário versus manter-se/usr/local
, mudar de proprietário e / ou grupo/usr/local
ou não, e assim por diante ... é difícil dizer se há algum solução universalmente aceitável. Você tem um post ou artigo sobre isso, ou poderia dar uma explicação mais profunda em algum lugar?