Como criar aplicativos sem privilégios de sudo?

15

O que eu preciso para configurar em um servidor Ubuntu 9.10 para que um usuário possa criar aplicativos de sua escolha (por exemplo, ./configure, make && make install) sem a necessidade de privilégios sudo / admin.

Eu apenas sinto que é um risco de segurança ter que dar ao usuário acesso a partes do sistema que talvez não sejam necessárias para criar um aplicativo.

RC1140
fonte

Respostas:

40

Se seus usuários usam

./configure --prefix=/home/user/opt/

Ou para projetos cmake

cmake -D CMAKE_INSTALL_PREFIX:PATH=/home/user/opt/ ../source/

Isso instalará o programa nesse prefixo (em vez do padrão / usr / local /) e seus usuários poderão executar o programa da seguinte maneira:

/home/user/opt/bin/program

Se você deseja que eles possam executar os programas simplesmente usando o nome (sem caminho completo), é necessário adicionar /home/user/opt/binà variável de ambiente do caminho, edite os usuários .profile e adicione a seguinte linha:

export PATH=/home/user/opt/bin:$PATH

Observe que os programas instalados dessa maneira serão privados para um usuário específico, mas é uma maneira de fazê-lo

LassePoulsen
fonte
Outros usuários poderão usar programas instalados assim se fornecerem o caminho completo e as permissões estiverem definidas adequadamente; e parece que o umask padrão permite isso na instalação da minha área de trabalho.
Alistair Buxton
A base de código que eu estava compilando tinha uma Makefileconfiguração, mas não a configurada; eu entrei nela e mudei a prefix = /some/pathlinha para o meu próprio diretório home (sem barra) e depois executei make installsem o sudo - tudo funcionando agora, então obrigado.
Big Rich
8

Os usuários podem criar aplicativos sem direitos sudo. O único momento em que você precisa de direitos sudo é quando deseja instalar algo nos diretórios do sistema.

./configuree maketrabalhe sempre sem direitos sudo. make installgeralmente precisa de direitos sudo porque instalará o aplicativo /usr/localou /usr(às vezes /opt).

No entanto, se você alterar o prefixo do caminho da instalação (ou seja ./configure --prefix=~/usr/local) de forma que a instalação seja executada dentro da árvore de diretórios pessoais do usuário, não serão necessários direitos sudo make install.

txwikinger
fonte
Eu ainda acho que sua resposta não está completamente completa. Por que ./configuree maketrabalhar sempre sem sudo? Como devo justificar a alguém que continua executando, sudo make installpor exemplo?
Nikos Alexandris
0

Além do que o txwikinger disse, você pode verificar também fakeroot, o que oferece uma oportunidade para a criação de pacotes .deb dpkgsem a necessidade de privilégios elevados. Obviamente, a instalação desses geralmente precisará de acesso ao sudo.

mindcorrosive
fonte