Essa interpretação das permissões remonta aos primeiros sistemas de arquivos Unix. No começo, havia apenas arquivos. (Bem, e dispositivos, e tubos, e ... mas estou tentando contar uma história aqui, não seja 100% estritamente preciso; além disso, tudo é verdade para dispositivos e tubos e tudo mais, porque tudo é um arquivo, até diretórios).
Diretórios são apenas arquivos que o sistema de arquivos usa para armazenar os metadados que descrevem a árvore de diretórios e os arquivos que ela contém. Cada arquivo em um diretório foi descrito por uma estrutura de dados simples que continha espaço para um nome de arquivo (originalmente 14 caracteres, IIRC), juntamente com o número do inode em que os dados foram armazenados, o tamanho do arquivo, carimbos de data e hora e a palavra permissões . Todo diretório começou com duas entradas nomeadas .
e ..
, a primeira apontando para o inode desse diretório e a segunda para o inode do diretório pai.
A palavra permissões tinha nove bits para descrever o tratamento do proprietário, de outros membros do mesmo grupo e do mundo. Os três bits para cada sinalizador, independentemente de o usuário relevante poder ler, gravar ou executar o arquivo. (Você pode notar que há mais cinco bits na palavra de permissões de 16 bits que estou ignorando. Esses acabaram recebendo significados atribuídos, mas que não são relevantes para esta parte da história.) (Além disso, essa interpretação dos nove bits permaneceu praticamente o mesmo em todos os descendentes do início do Unix, incluindo o Linux.)
Portanto, se um diretório é realmente apenas um tipo especial de arquivo e descrito por uma entrada em algum diretório, obviamente também possui bits de permissão, e esses bits provavelmente significam algo. Mas a questão é exatamente. A maneira mais fácil de atribuir significado a esses bits é não mudar o que eles significam em primeiro lugar. E isso é essencialmente o que foi feito.
Portanto, o bit de leitura significa que o usuário pode ler o próprio diretório. Classicamente, isso dá ao leitor acesso ao nome do arquivo, carimbos de data e hora, tamanho e número de inode dos dados de cada arquivo. Especificamente, com r
set você pode usar ls
para ver os nomes de todos os arquivos no diretório, mas isso não é suficiente para abrir (ou usar de qualquer forma) qualquer um dos arquivos listados.
O bit de execução significa que o usuário pode "executar" o diretório. Como os diretórios são especiais, executar realmente significa procurar uma entrada pelo nome e usá-la. Isso significa que você pode tentar abrir os arquivos se x
estiver definido, mas sem r
você não poderá descobrir os nomes deles. Obviamente, as permissões do arquivo solicitado também afetam o acesso, portanto, mesmo x
no diretório, você não poderá ler um arquivo, a menos que ele também ofereça r
.
O bit de gravação significa que o usuário pode gravar no diretório, mas naturalmente apenas mediado pelo próprio sistema de arquivos. Isso significa que, com o w
conjunto, você pode criar novos arquivos nesse diretório ou editar as entradas de diretório dos arquivos existentes. Mas, sem o x
conjunto, você não pode usar nenhum arquivo e sem r
vê-lo também.
À medida que modelos mais complicados de identidade do usuário evoluíram no Unix e seus descendentes, essas mesmas descrições básicas conseguiram permanecer notavelmente inalteradas.
Em resumo, r
significa que você pode ver o conteúdo, x
pode usá-lo e w
pode modificá-lo mesmo para diretórios.