Por que não consigo executar um aplicativo instalado usando o sudo sem o sudo?

0

Percebi que depois de instalar algo usando sudo , não consigo executar o aplicativo sem sudo , embora o executável esteja em meu caminho. Eu tenho que ir para o diretório do aplicativo e alterar manualmente as permissões (usando chmod -R o=g <application>/ ). Eu tenho experimentado isso em 16.04, 14.04, e talvez até em 12.04. Por que esse é o comportamento padrão e como posso mudar isso?

Como exemplo, eu apenas compilei e instalei o KeePassX 0.4.4 . Usando os comandos de instalação padrão ( qmake , make , sudo make install ), o executável é /usr/bin/keepassx com as permissões esperadas, 755 , mas os arquivos para os quais este executável aponta, em /usr/share/keepassx/ têm permissões 750 impedindo a execução sem usar sudo .

Quando instalo um aplicativo usando apt , apt-get ou dpkg -i , uso sudo , mas todos os usuários podem executar o aplicativo. Como eu imito esse comportamento ao compilar e instalar um aplicativo a partir do código-fonte? Eu percebo que eu poderia adicionar um comando chmod ao Makefile , mas existe uma maneira de fazer uma mudança uma vez que irá se propagar para futuras instalações?

    
por Steven C. Howell 08.09.2016 / 19:21

2 respostas

1

Existem muitos programas que estarão em seu caminho e que não funcionarão para usuários normais. Um exemplo é adduser . Então, isso dependeria do programa que você deseja executar.

Eu não sei o que o programa KeePassX 0.4.4 faz, mas cabe aos desenvolvedores fazer o programa disponível para usuários normais ou exigir que o comando elevado seja executado.

No que diz respeito à compilação, o que parece que você fez corretamente, você deve compilar e compilar os programas como um usuário normal. Só execute a parte make install com o comando elevado. Desta forma, o programa se instala em todo o sistema.

Você não deveria entrar no sistema para fazer alterações. Se você alterar os arquivos, poderá quebrar o aplicativo.

Alguns programas precisam ser executados como raiz para que tenham acesso a determinados arquivos que usuários normais não podem acessar, como o uso do comando para alterar sua senha, que também edita o /etc/passwd e o /etc/shadow arquivos. Programas como aqueles têm o bit suid configurado para que ele seja executado como root mesmo quando chamado por um usuário normal.

Você não deseja alterar as permissões de seus arquivos /etc/passwd e /etc/shadow para poder editá-los como usuário normal ou para que o comando passwd funcione sem o conjunto suid bit .

Então, isso dependeria de quais programas você está instalando e da intenção do provedor do programa.

Se o programa precisar de acesso root, o make install deve definir o suid bit. Se não for destinado a funcionar como raiz e com a intenção de funcionar para um usuário normal, o programa ou instalação está quebrado e deve ser endereçado ao desenvolvedor para que possa corrigi-lo.

Você pode encontrar notas no Readme do programa para corrigir os bugs, o que seria, nesse caso, se make install estivesse falhando e fazendo com que você precisasse corrigi-lo.

    
por L. D. James 08.09.2016 / 19:46
0

Isso ocorre porque quando você roda via sudo você não está rootando no seu usuário normal.

As tentativas de gravar arquivos de configuração ou de configurar as versões de usuário das bibliotecas irão para / root em vez de / home / your_user.

quando você executa sem sudo, seus programas não localizam esses arquivos.

Você pode testar isso executando seu programa via strace para ver quais arquivos ele tenta carregar

strace -e open yourprogram
    
por Amias 08.09.2016 / 19:27