Estou procurando uma maneira de tornar um diretório acessível apenas aos diretórios pai. Ou seja, suponha que você tenha dois diretórios A
e B
, no mesmo nível na hierarquia de arquivos. Agora suponha que você tenha um diretório A'
que seja um subdiretório A
. Eu gostaria de reforçar que A
é capaz de acessar o conteúdo, A'
mas B
não é.
Meu problema é que eu gostaria de usar uma biblioteca (diretório A
) que se baseia em uma versão herdada de outra biblioteca (diretório A'
). Ao mesmo tempo, desejo poder usar a versão mais recente desta biblioteca herdada (diretório B
). Quero garantir que as pessoas não estejam de alguma forma usando a biblioteca A
e vinculando-as à nova biblioteca B
, impondo que a biblioteca A
deve usar a biblioteca A'
.
Eu poderia simplesmente vincular A
a biblioteca B
, mas estou arriscando compatibilidade.
Respostas:
Use permissões de grupos,
suponha que você tenha um grupo 'foo' e outro grupo 'bar'
chgrp -R bar B
para definir a permissão de grupo para o subdiretório B.chgrp -R foo A
definir a permissão de grupo para o subdiretório A.E faça com que certos usuários sejam membros do grupo 'foo' para que eles tenham acesso a A e seus subdiretórios filhos abaixo dele. Agora, os usuários que pertencem ao grupo 'bar' também não terão acesso a A e seus subdiretórios relacionados.
fonte
A
eB
. Editarei minha resposta para esclarecer melhor meu problema e minhas metas.O que você está pedindo não faz sentido.
Somente um programa em execução pode acessar um diretório; um diretório não pode "acessar" outro diretório.
Quando você inicia um programa, sua conta de usuário se torna o proprietário desse processo em execução (se você executar
ps -fa
, verá seu UID em todos os seus programas) 1 .Quando esse processo tenta ler um arquivo, o sistema compara o proprietário do processo com as permissões no arquivo; se o usuário tiver permissão de leitura, a leitura será bem-sucedida; caso contrário, falhará.
No caso do Programa A tentando vincular-se a uma biblioteca, as permissões do sistema de arquivos
/path/to/LibraryX
são comparadas com o proprietário do processo do Programa A. Mesmo que o arquivo/path/to/ProgramA
tenha permissões definidas, elas não são consideradas quando a instância do Programa A já em execução tenta ler/path/to/LibraryX
. As permissões são verificadas apenas no proprietário do processo.[1] - A exceção é a programas com o bit setuid ativado. Quando você inicia esses programas (por exemplo
passwd
), o proprietário do processo se torna o proprietário do arquivo e não você. É por isso quepasswd
pode editar,/etc/shadow
mesmo que sua conta de usuário não possa: ela sempre é executada como root.fonte