Instale o aplicativo em / usr / local

4

Alguns aplicativos que são instalados automaticamente, como o Netbean, o JDK geralmente instala em /usr/local e eu o executo pelo usuário normal (não como root).

Mas, outro aplicativo, basta extrair o arquivo tar.gz e executá-lo. Sob o usuário normal, não posso usar o comando cp para copiar do diretório Download para o diretório /usr/local , devo usar o usuário root ( su command).

Mas, como eu copio pelo usuário root, esse diretório pertence a root, portanto, não posso executá-lo com o usuário normal. Isso faz minha dor de cabeça. Como posso executá-lo no usuário normal, como outro aplicativo que eu listo acima. Ou existe outra maneira de instalá-lo?

    
por hqt 25.04.2013 / 18:36

2 respostas

1

Existem dois possíveis problemas que você pode estar enganando.

Primeiro problema - permissões de execução para diretórios

As permissões em um dos diretórios que você copiou para / usr / local podem não ter as permissões configuradas corretamente. As permissões nos diretórios precisam ser tais que outros usuários, além do root, possam executar os programas / scripts desses diretórios.

As permissões no diretório provavelmente precisam ser definidas para que os "outros" usuários possam executar aplicativos fora desse diretório.

Por exemplo

# don't have permissions on directory
root$ cd /usr/local
$ ls -ld somedir
drwxr-x--- 2 root root 4096 Apr 25 13:27 somedir

# have permissions on the script
root$ ls -l somedir/testscript.bash 
-rwxr-xr-x 1 root root 23 Apr 25 13:27 somedir/testscript.bash

Nesse cenário, mesmo que outros usuários tenham permissões de execução no script para ler & execute-o, eles não serão permitidos devido ao fato de não terem lido & executar no diretório em que o script está.

Alterar as permissões no diretório permite acesso:

 user$ ls -ld somedir/
 drwxr-xr-x 2 root root 4096 Apr 25 13:27 somedir/

 user$ somedir/testscript.bash 
 hi

Esse problema inteiro pode ser resolvido alterando as permissões no diretório que está sendo descompactado do arquivo tar.gz localizando todos os diretórios que possuem scripts e executando o comando chmod +rx <dir> nesses diretórios.

Segundo problema - executar permissões para arquivos

As permissões nos arquivos do arquivo .tar.gz podem não ter sido definidas antes, portanto, os aplicativos ou scripts no arquivo morto teriam sido descompactados sem eles. Apenas chmod +x <script> resolverá esse problema em arquivos com esse problema específico.

### For example
user$ ls -ld somedir
drwxr-xr-x 2 root root 4096 Apr 25 13:27 somedir/

user$ ls -l somedir/testscript.bash 
-rw-r--r-- 1 root root 23 Apr 25 13:27 somedir/testscript.bash

user$ somedir/testscript.bash
bash: somedir/testscript.bash: Permission denied
    
por 25.04.2013 / 19:45
4

/usr/local e seus subdiretórios ( bin , lib , share , etc) devem ser (e provavelmente são) de root e configurar 755 para que qualquer um possa executar coisas lá.

Se você descompactou algo e o copiou, elas podem ser as permissões nos binários individuais, que também devem ser 755 para permitir o uso geral.

Tenha em mente como $PATH funciona. Seu exemplo do JDK pode ser confuso a esse respeito, mas um tarball normal que você possui ./configure & make install colocará executáveis em /usr/local/bin , bibliotecas em /usr/local/lib e coisas diversas como documentação em algum lugar em /usr/local/share . Esses são os caminhos apropriados e você precisa seguir o mesmo padrão. Em outras palavras, apenas colocar coisas em qualquer lugar em /usr/local (como um diretório individual para o pacote) ou subdiretórios de bin / não funcionará.

    
por 25.04.2013 / 18:46

Tags