Restringindo o acesso a um subdiretório no linux

0

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 Ae 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 Bnã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 Ae vinculando-as à nova biblioteca B, impondo que a biblioteca Adeve usar a biblioteca A'.

Eu poderia simplesmente vincular Aa biblioteca B, mas estou arriscando compatibilidade.


fonte
3
O que você quer dizer quando fala sobre um diretório acessando um diretório? Os usuários (seus processos) acessam diretórios, não outros diretórios.
Minha edição esclarece?
Você está cometendo o erro que Raymond Chen descreve : seu problema está tentando manter duas versões de uma biblioteca em um computador e você assumiu que a solução tem algo a ver com restringir o acesso a diretórios. Você obterá respostas muito melhores se fizer sua pergunta real ("Como faço para o programa A usar a lib-1.0, mas todo o resto usa a lib-2.0?").
Stephen Jennings
Isso não deveria ter sido migrado.
Dennis Williamson

Respostas:

0

Use permissões de grupos,

suponha que você tenha um grupo 'foo' e outro grupo 'bar'

   /
   |
   + -A
   | |
   | + - A '
   |
   + -B
  • 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.

t0mm13b
fonte
Não quero que os usuários tenham acesso restrito. Já existe um grupo em uso para restringir um subconjunto de usuários a ter acesso a esse diretório que contém Ae B. Editarei minha resposta para esclarecer melhor meu problema e minhas metas.
0

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/LibraryXsão comparadas com o proprietário do processo do Programa A. Mesmo que o arquivo /path/to/ProgramAtenha 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 que passwdpode editar, /etc/shadowmesmo que sua conta de usuário não possa: ela sempre é executada como root.

Stephen Jennings
fonte