Por que você precisa executar a permissão no diretório pai para renomear um arquivo?

6

Nos sistemas de arquivos Linux / Unix, eu entendo o motivo pelo qual você precisa da permissão de execução na pasta pai para ler ou gravar um arquivo: a permissão de execução dá acesso ao inode no arquivo e, sem isso, você nunca pode alcançar o conteúdo do arquivo.

No entanto, para renomear um arquivo (na verdade, até mesmo excluir), você só precisa alterar o nome do arquivo na lista, o que não deve exigir o acesso ao inode. Então, por que o bit de execução é necessário para renomear um arquivo, as permissões de gravação devem ser suficientes?

Isso não parece simétrico com acesso de leitura: com r-- permissões, você pode fazer ls no diretório e acessar a lista de nomes de arquivos nesse diretório. Você não precisa executar porque não está acessando os inodes. Da mesma forma, com -w- , você deve ser capaz de alterar a lista de nomes de arquivos (você não precisa acessar os inodes também), mas você não pode, por quê?

    
por Flavien 28.06.2012 / 14:10

2 respostas

2

O significado de permissão de execução para um diretório é a capacidade de pesquisar nomes de arquivos dentro desse diretório. Obviamente, procurar com êxito por um nome de arquivo produz uma referência a um número de inode, mas a permissão de execução não tem nada a ver com inodes em si.

Sem permissão de execução no diretório, você não pode declarar, abrir, renomear, excluir ou descer em subdiretórios dentro desse diretório. A única coisa que você pode fazer é ver a lista de quais nomes de arquivos existem, e somente se você tiver permissão de leitura (e ler, mas não executar, é um estranho conjunto de permissões para um diretório).

Considere se você tem rw- em um diretório. Você sabe que o nome do arquivo foo existe dentro deste diretório. Para apagá-lo, você precisa procurá-lo e até precisa acessar o inode (para diminuir sua contagem de links). Para essa questão, você precisa acessar o inode para saber se é um diretório ou não (porque se for um diretório, unlink deve falhar e rmdir deve ser bem-sucedido, e o inverso se não for um diretório). Mas você não pode procurar.

    
por 28.06.2012 / 15:25
1

T ele executa bit permite que o usuário afetado o insira e acesse e altere os atributos e diretórios de arquivos e diretórios. permissão para executar outros comandos do sistema de arquivos linux pode precisar ser "executada" em sub-arquivos diretórios e arquivos são determinados por "executar bit". Para não ser confundido com a execução de um arquivo executável, significa que você deu privvies de "tomada de decisão executiva" para editar os links para números de arquivos de inode ou metadados associados a nomes de arquivos e links simbólicos.

Variações de recursos incluem Executar com gravação desativada. o que significa que você pode renomear um arquivo, mas não editar o conteúdo. Ou escreva habilitado, mas execute o visto para deficientes.

"Cada unidade de disco contém um certo número de sistemas de arquivos. Um sistema de arquivos consiste em vários grupos de cilindros. Cada grupo de cilindros tem inodes e      dados.

 A file system is described by its super-block, which in turn describes
 the cylinder groups.  The super-block is critical data and is replicated
 in each cylinder group to protect against catastrophic loss.  This is
 done at file system creation time and the critical super-block data does
 not change, so the copies need not be referenced further unless disaster
 strikes.

 Addresses stored in inodes are capable of addressing fragments of
 'blocks'. File system blocks of at most size MAXBSIZE can be optionally
 broken into 2, 4, or 8 pieces, each of which is addressable; these pieces
 may be DEV_BSIZE, or some multiple of a DEV_BSIZE unit."

Outros detalhes interessantes; link

"Se você tem permissão de execução (mas não gravação) em um diretório E você tem permissão de escrita em um arquivo que vive dentro de você, você não pode apagar o arquivo (porque envolve removê-lo da lista). Por exemplo, se for um arquivo de texto, você pode usar o vi para abri-lo e apagar tudo. O arquivo ainda estará lá, mas estará vazio. " ... Baldrick

stat -f "% Sp - > proprietário =% grupo SHp =% SMp outro =% SLp" para exibir estatísticas da ACL

    
por 28.06.2012 / 15:25