Como evitar executar o make como root na última etapa da instalação de um aplicativo a partir do código-fonte? [duplicado]

1

Eu estou sempre relutante em executar make install como root como a última etapa da instalação de um aplicativo a partir do código-fonte. Afinal, permite executar código arbitrário do Makefile. Já aconteceu comigo que, devido à falta de cotação adequada, os comandos do Makefile deletavam coisas que eles não deviam apagar, incluindo arquivos fora do diretório do código-fonte.

Por esse motivo, estou procurando uma maneira de evitar a execução de make install como root e restringir minha atividade como root a operações básicas (como copiar arquivos ou extrair um archive) que não executam código arbitrário.

    
por Zoltan 19.05.2018 / 20:53

1 resposta

0

Após algumas pesquisas, descobri que a maioria dos pacotes fonte (pelo menos aqueles que usam autotools ou cmake) permitem instalar em um diretório diferente do PREFIX usado para compilação, você só precisa especificar o local desejado na variável de ambiente DESTDIR.

Acabei fazendo o seguinte:

firejail --x11=none --net=none --whitelist="$PWD" # Enter sandbox
./configure # (or similar)
make
DESTDIR=dest make install # install application into dest
exit # from firejail

pkgname="$(basename "$PWD")" # (or specify desired package name manually)
fakeroot tar czf "$pkgname.tgz" -C dest . # pack the installed files into a .tgz archive
fakeroot alien --version=$(date +%F) -k "$pkgname.tgz" # create a .deb package from the .tgz archive

Também é possível usar sudo alien -i em vez de fakeroot alien no último comando para instalar imediatamente o pacote também. Como alternativa, se você não quiser transformar o aplicativo em um pacote, poderá substituir a última linha (que chama alien ) por sudo tar xzf "$pkgname.tgz" -C / para extrair o pacote como raiz.

Algumas coisas a serem observadas aqui:

  • Em vez de simplesmente evitar a execução de comandos potencialmente prejudiciais como root, a compilação e instalação acontecem dentro de uma sandbox, que é ainda mais segura (mas completamente opcional).
  • Eu abandonei checkinstall e usei alien , que é uma solução um pouco mais limpa e segura, pois não depende de hacks feios e não confiáveis para observar e reverter operações de arquivos.
por 20.05.2018 / 12:30