Como as permissões de arquivo são calculadas?

7

Usando chmod , eu poderia definir as permissões para um arquivo, mas se o diretório pai ( .. ) tivesse permissões conflitantes, o que aconteceria?

E se eu criar um novo arquivo usando touch ou algo semelhante, como as permissões iniciais serão calculadas? As permissões são herdadas de .. ?

E por que não posso fazer nada no diretório quando removi o sinalizador de permissão executable ?

$ mkdir temp;
$ chmod -x temp;
$ touch temp/a;
$ ls temp;
touch: cannot touch 'temp/a': Permission denied
    
por Stefan 06.10.2010 / 14:00

2 respostas

15
  1. Há - falando estritamente - no UNIX nada disso é "permissões conflitantes": as permissões de acesso em uma entrada do sistema de arquivos (diretório, arquivo, etc.) determinam o que você pode ou não fazer nesse objeto. Permissões em outras entradas do sistema de arquivos não entram na imagem, com exceção do bit "x" em todos os diretórios ancestrais no caminho para um arquivo (até / ) - consulte 3.

  2. A permissão padrão em um arquivo recém-criado é determinada pelas permissões permitidas pelo programa de criação (o argumento mode para as chamadas de sistema open ou creat ) e o processo atual umask . Especificamente, qualquer bit definido como (1) no "umask" é redefinido (0) nas permissões de arquivo recém-criadas: na notação de tipo C: file_permissions = open_mode & ! umask . Leia man 2 creat (procure por O_CREAT ) e man umask para os detalhes.

  3. O bit "x" (executável) em um diretório controla se você pode percorrer esse diretório: percorrer um diretório significa poder cd entrar nele e acessar os arquivos contidos nele . Observe que a capacidade de listar o conteúdo do diretório é controlada pelo bit "r".

Leitura adicional:

  • link nas permissões de arquivo
  • link nas permissões de diretório
por 06.10.2010 / 15:44
3

Primeiro de tudo ... no Linux tudo é um arquivo. Por tudo o que quero dizer tudo ... suas pastas, mouse ou teclado ... tudo é um arquivo.

Agora, vamos responder às suas perguntas:

  1. Não há conflitos entre a pasta e o arquivo contido. Se você tiver uma pasta somente com direitos de leitura, mas tiver um arquivo nessa pasta com permissões de gravação, poderá gravar nesse arquivo. No entanto, você não pode criar / excluir arquivos nessa pasta. Então, não se preocupe com conflitos. Além disso, você pode ler o conteúdo da pasta (listar a pasta).

  2. As permissões padrão geralmente são 644 (ou seja: rw para usuário, r para grupo e outro)

  3. O bit "executável" de um diretório significa "listar" o diretório. Em outras palavras, se você -x uma pasta, você não pode saber seu conteúdo, isso significa que você não pode tocar em algo.

por 06.10.2010 / 14:12