O que causa Permissão negada ao fazer um ls em um link simbólico, quando o arquivo subjacente tem 'r' concedido a todos?

1

Não tenho certeza se isso pertence aqui ou no superuser.com.

Eu estou lutando para fazer um processo em C funcionar que precisa ser vinculado em bibliotecas dinâmicas do Oracle.

Ele compila e executa bem sob o usuário oracle (o oracle do usuário foi instalado contra), mas não sob outra conta. A razão óbvia é que a instalação padrão do oracle não concede leitura ou execução a nenhuma das bibliotecas compartilhadas em / lib

Eu concedi r + x a todos para o dylib subjacente (equivalente a .so, etc) e executando sob o usuário oracle Eu obtenho os seguintes resultados

ls -lrt *odm* 
-rwxr-xr-x  1 oracle  dba  9000 Mar  3  2009 libodmd10.dylib
lrwxrwx---  1 oracle  dba    15 Jul 25 14:23 libodm10.dylib -> libodmd10.dylib

Fazendo o mesmo com o meu outro usuário (aquele em que quero executar) recebo o seguinte

ls -lrt libodmd10.dylib
-rwxr-xr-x  1 oracle  dba  9000 Mar  3  2009 libodmd10.dylib

ls -lrt libodm10.dylib

ls: libodm10.dylib: Permission denied
lrwxrwx---  1 oracle  dba  15 Jul 25 14:23 libodm10.dylib

Eu suspeito que a resposta é incrivelmente estúpida e simples, mas o meu entendimento é que os links simbólicos herdaram as permissões do arquivo subjacente.

    
por JulesLt 13.08.2010 / 00:35

2 respostas

6

ls não se importa com as permissões de um arquivo porque ele está listando apenas sua entrada de diretório. No entanto, quando ls faz referência a um link simbólico, ele está acessando o conteúdo do link. Por isso, se preocupa com as permissões do link. Aqui você não tem permissão para ler qual é o destino de libodm10.dylib , a menos que esteja no grupo dba .

Você também precisa alterar as permissões do link simbólico. Aqui não há razão para não tornar o link legível para o mundo.

Note que alguns unices simplesmente não suportam permissões no link simbólico; OSX faz.

    
por 13.08.2010 / 00:46
3

Se o bit de execução no diretório pai do arquivo não estiver ativado para seu usuário ou grupo, então você não poderá "pesquisar" nesse diretório.

    
por 13.08.2010 / 00:41