Para a demonstração a seguir, criei alguns diretórios:
$ mkdir read_only
$ mkdir exec_only
$ mkdir r_e
$ touch read_only/cant_open
$ echo foo > read_only/cant_open
$ echo bar > exec_only/cant_find
$ echo baz > r_e/normal
$ chmod 400 read_only/
$ chmod 100 exec_only/
$ chmod 500 r_e/
As permissões de leitura são suficientes para listar o conteúdo do diretório : ls(1)
não pode encontrar detalhes sobre o arquivo, mas pode informar o nome do usuário arquivo.
$ ls read_only/
ls: cannot access read_only/cant_open: Permission denied
cant_open
Mas o acesso somente leitura não permite que você percorra o diretório:
$ cat read_only/cant_open
cat: read_only/cant_open: Permission denied
Permissões de execução são suficientes para percorrer o diretório (incluindo cd
), mas você não pode listar o conteúdo:
$ ls exec_only/
ls: cannot open directory exec_only/: Permission denied
Mesmo que você não consiga obter uma lista de arquivos no diretório, ainda pode percorrer o diretório:
$ cat exec_only/cant_find
bar
As permissões de leitura e execução funcionam conforme o esperado:
$ ls r_e
normal
$ cat r_e/normal
baz
Embora seja inicialmente confuso ter permissão para listar os arquivos em um diretório, mas não seja capaz de fazer qualquer coisa com eles, e também é confuso ter permissão para fazer > Em coisas com arquivos, mas não ser capaz de listá-los, faz parte da tradição do Unix de mecanismos simples serem usados para coisas inteligentes: estes dois elementos por si só facilitam a implementação de Segurança baseada em recursos . Se eu colocasse alguns milhares de arquivos no diretório, mas só queria que algumas pessoas lessem arquivos feitos para eles, eu poderia facilmente escolher nomes de arquivos que não pudessem ser lidos, e dar os nomes de arquivos quando as pessoas me derem dinheiro para isso. leia os arquivos. :)
Ou talvez você tenha uma dúzia de clientes e deseja que todos tenham acesso a um diretório de arquivos destinado a eles. Se você colocar todas as informações do cliente em um único diretório com apenas acesso de execução, elas nunca poderão determinar seus outros clientes, a menos que já saibam que a outra pessoa é um cliente.