Permissões do sistema de arquivos no Unix

2

Se eu tiver uma pasta especificada como não legível. Todas as pastas abaixo dele também não são legíveis? Por exemplo, o diretório da minha conta de hospedagem compartilhada não está acessível a outras contas, portanto, todas as pastas e arquivos que estão sob o diretório da conta inicial não estão acessíveis também?

    
por rFactor 20.10.2009 / 15:14

4 respostas

7

Os diretórios têm duas permissões de leitura diferentes. Você tem a permissão de leitura padrão, como acontece com arquivos. Isso impede que você faça um opendir () / readdir () no diretório. Isso basicamente impede que você faça um ls no diretório. Você ainda pode acessar os subdiretórios se souber o nome deles. Você também tem a permissão de execução, que no caso de diretórios impede que você acesse os arquivos dentro deles. Você não pode alterar o diretório para um diretório para o qual não tem permissão de execução e não pode acessar nada sob ele, mas ainda pode ler o conteúdo.

# mkdir -p read/subdirectory
# mkdir -p execute/subdirectory
# chmod o-x execute/
# chmod o-r read
# logout
% ls -ld read/ execute/
drwxr-xr-- 3 root root 4096 2009-10-20 14:43 execute/
drwxr-x--x 3 root root 4096 2009-10-20 14:43 read/
% ls read
ls: cannot open directory read: Permission denied
% ls execute
ls: cannot access execute/subdirectory: Permission denied
subdirectory
% cd read/subdirectory
% cd -
% cd execute/subdirectory
bash: cd: execute/subdirectory: Permission denied

Você notará que ls execute exibe um erro e o subdiretório. A razão é que ls tem permissão para ler o diretório de execução e descobrir o subdiretório, mas ls irá declarar o subdiretório e obter uma permissão negada lá.

    
por 20.10.2009 / 15:46
1

A resposta é "sim". Se, por exemplo, / foo for o modo -r-x------ , ninguém, exceto o proprietário, poderá ler ou alterar para / foo, portanto, tudo abaixo desse diretório ficará inacessível para todos os outros, independentemente das permissões.

    
por 20.10.2009 / 15:40
0

Isso depende da implementação, mas na maioria dos unixes modernos, impedir o acesso à pasta pai também impedirá o acesso às subpastas, independentemente de suas permissões individuais.

user@host:/$ sudo chmod 700 test
user@host:/$ sudo ls -ld test/test
drwxr-xr-x 2 root root 4096 2009-10-20 15:29 test/test
user@host:/$ ls -ld test/test
ls: cannot access test/test: Permission denied

Se você deseja dar acesso a subpastas, pode definir o bit de execução na pasta pai.

user@host:/$ sudo chmod 711 test
user@host:/$ ls -l test
ls: cannot open directory /test: Permission denied
user@host:/$ ls -ld test/test
drwxr-xr-x 2 root root 4096 2009-10-20 15:29 test/test

Como você pode ver, isso impede a listagem da pasta pai, mas permite o acesso à subpasta e aos arquivos.

    
por 20.10.2009 / 15:30
0

Você pode ler um diretório cujo pai não é legível:

[kbrandt@kb: ~/scrap/perm] ls -ld foo                                                                                         
d--x------ 4 kbrandt kbrandt 4096 2009-10-20 08:45 foo
[kbrandt@kb: ~/scrap/perm] ls -ld foo/bar                                                                                     
drwxrwxr-x 3 kbrandt kbrandt 4096 2009-10-20 08:55 foo/bar
[kbrandt@kb: ~/scrap/perm] ls foo                                                                                           
ls: cannot open directory foo: Permission denied
[kbrandt@kb: ~/scrap/perm] ls foo/bar                                                                                       
baz  foo

As permissões de diretório não são o que você pensa (pelo que eu recebi do seu post):

Execute (Search) - Entre em um diretório
Write - Criar e excluir arquivos nesse diretório
Ler - Listar os arquivos no diretório

Executar (pesquisa) requer que todos os pais tenham um conjunto de execuções, ao contrário de ler e escrever.

Este é um exemplo de Por que é importante entender as permissões de diretório:
Mesmo que o root possua um arquivo, e nenhum outro usuário tenha acesso de gravação ao próprio arquivo , se outros usuários puderem escrever e pesquisar nesse diretório, esse usuário poderá excluir o arquivo (Assumindo que foi o último restante link físico).

    
por 20.10.2009 / 16:00