Instale o aplicativo em /usr/local

Instale o aplicativo em /usr/local

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

Mas outro aplicativo, basta extrair tar.gzo arquivo e executá-lo. No usuário normal, não consigo usar cpo comando para copiar de Downloadum diretório para /usr/localoutro, devo usar o usuário root ( sucomando).

Mas como copio pelo usuário root, este diretório pertence ao root, então não posso executá-lo com o usuário normal. Isso me dá dor de cabeça. Como posso executá-lo como usuário normal, como outro aplicativo listado acima. Ou existe outra maneira de instalá-lo?

Responder1

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

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

Tenha em mente como $PATHfunciona. Seu exemplo do JDK pode ser confuso nesse aspecto, mas um tarball normal no qual você ./configurecolocará make installexecutáveis /usr/local/bin, bibliotecas /usr/local/libe coisas diversas, como documentação em algum lugar do /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 /usr/local(como um diretório individual para o pacote) ou subdiretórios de bin/ não funcionará.

Responder2

Existem dois problemas potenciais que você pode estar enfrentando.

Primeiro problema – execute permissões para diretórios

As permissões em um dos diretórios que você copiou para /usr/local podem não ter as permissões definidas 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 "outros" usuários possam executar aplicativos fora deste 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 lê-lo e executá-lo, eles não serão permitidos devido ao fato de não terem lido e executado 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

Todo esse problema 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 – permissões de execução 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 teriam sido descompactados sem eles. Simplesmente chmod +x <script>resolverá esse problema em arquivos que apresentam 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

informação relacionada