Como instalo programas em / usr / local se não devem ser compilados pelo root?

1

Em algum lugar na parte de trás do meu cérebro está a memória de ler um alerta preventivo de voz da Internet contra a compilação (por exemplo, executando make ) como usuário root. Talvez seja algo como esta história cprogramming.com.

Ao mesmo tempo, geralmente é recomendado que o usuário root possua /usr/local e seus subdiretórios.

Isso dificulta a instalação de software a partir da fonte:

# as root
mkdir program
chown user.user program

# as user
wget/curl/mv program.tar.gz program/.
cd program/
./configure --prefix=/usr/local
make

# as root
make install

Esta é a maneira mais simples e adequada de instalar software a partir do sistema de origem? É verdade que make é perigoso como root, mas make install não é?

    
por drs 14.04.2015 / 00:31

2 respostas

3

É tudo sobre mitigação de risco; Se make fizer algo destrutivo, você poderá perder todos os dados modificáveis (ou deletáveis) pelo usuário que os executou. Portanto, você executa make como um usuário simples para limitar o escopo aos arquivos desse usuário e executa make install as root , porque é necessário instalar o /usr/local normalmente.

Observe que, no exemplo fornecido, não é necessário criar program as root ; faça o download do seu tarball para o seu diretório pessoal ou algum outro diretório no qual você possa escrever, extraia, configure e construa como um usuário simples:

$ wget ...
$ tar xf program...tar.gz
$ cd program...
$ ./configure --prefix=/usr/local
$ make

Geralmente /usr/local é o prefixo padrão para que possa ser omitido.

Se você quiser maximizar a segurança, use um usuário dedicado para criar software (para não perder seus próprios arquivos se algo der errado) e, é claro, leia o sistema de compilação, pelo menos. make -n pode ajudar: ele mostrará o que seria feito sem realmente fazer nada. Você também pode criar um usuário ou grupo especial com acesso de gravação a /usr/local e usá-lo ao executar make install .

    
por 14.04.2015 / 00:36
2

Tudo se resume a confiar na conveniência vs. Verdade, make pode ser inseguro, mas então pode make install . É só que a área de ataque de superfície deve (espero) ser menor para make install , e é mais provável que uma leitura rápida do Makefile detecte algo estranho. No entanto, instalar o software no $PATH é arriscado, independentemente de quem compilou, então, sem dúvida, toda a questão é um pouco discutível.

Pessoalmente, eu geralmente coloco a mim mesmo e a outros administradores no grupo staff e dou a esse grupo permissões de gravação para a maioria dos diretórios em /usr/local . Eu posso então jogar o jogo tar .. configure .. make sem precisar de privilégios de root, e sudo me ajudará com a instalação dos binários.

Não, não é perfeito. Sim é muito conveniente.

    
por 14.04.2015 / 00:36