A pasta com apenas permissão de escrita é inútil… certo?

8

Tendo trabalhado com o Linux por anos e me encontrando com algum tempo livre, decidi revisitar algumas noções básicas. Então eu reli o material sobre permissões (sem checar o código fonte), e seus casos especiais para pastas, e criei uma nova (pelo menos para mim ...) maneira de pensar sobre permissões de pasta (para um usuário específico / group / others): imagino uma pasta como uma tabela com duas colunas, assim:

filename | inode    
foo      | 111  
bar      | 222 

A permissão read significa que você pode ler (e listar) a coluna da esquerda da tabela, a permissão write corresponde à adição e remoção de entradas na tabela e A permissão executar corresponde a ser capaz de traduzir do nome do arquivo para o inode; Ou seja, você pode acessar o conteúdo da pasta.

Eu fiz alguns experimentos, e os resultados são todos consistentes com essa "visão de mundo" minha, mas uma conclusão parece inevitável: que uma pasta com permissões d-w------- é totalmente inútil. Elaborando: você não pode listar seu conteúdo, você não pode ler nenhum arquivo que você sabe que existe (porque você não pode traduzir nomes em inodes), você não pode remover ou renomear ou adicionar arquivos, porque isso implicaria tradução , e você não pode nem adicionar hardlinks (porque, eu suponho, isso significaria adicionar um nome assim como um número inode, o que significa que você conheceria ambos, o que, por sua vez, supõe violar o propósito de desabilitar a permissão de execução) . E, claro, se houver arquivos dentro de uma dessas pastas, você também não poderá excluir essa pasta, porque você não pode excluir seu conteúdo.

Então ... eu gostaria de fazer duas perguntas:

  1. Esta analogia é correta, ou é um grande erro?
  2. Independentemente da resposta anterior, existe qualquer situação em que ter uma pasta com permissões conforme descrito é apropriado?
por wmnorth 08.08.2014 / 11:05

2 respostas

2

Sua compreensão é bem correta. Uma maneira melhor de pensar na permissão de execução é que ela permite que você faça as coisas com um nome de arquivo ou diretório no diretório (além de apenas ler o próprio nome). A maioria dessas coisas envolve a tradução do nome para um inode, mas também inclui a criação de novos nomes e a remoção de nomes existentes.

A permissão de gravação para o diretório sem executar é, portanto, bastante inútil, já que não há nada que você possa realmente escrever se não puder acessar os arquivos dentro dele.

    
por 08.08.2014 / 21:14
1
  1. Is this analogy of mine correct, or is it a big blunder?

Acho que está correto, você precisa da permissão wx para poder gravar em uma pasta.

  1. Irrespective of the previous answer, is there any situation where having a folder with permissions as described is appropriate?

Você pode ter um processo que grava informações em uma pasta e outra consome, mas é necessário evitar que o gravador leia outras informações armazenadas naquele local.

A situação descrita anteriormente é útil em unidades de fiscalização automática de velocidade. Essas unidades devem passar por um processo de verificação em que o funcionário estadual deve minimizar as possibilidades de adulteração. Algumas unidades de controle de velocidade automáticas possuem um cartão de memória externo sd, no qual o sistema armazena registros de violação. Mas também pode armazenar um arquivo de configuração "mágico" que altera ilegalmente o comportamento da unidade verificada. Portanto, o processo que grava o registro de violação não deve ser capaz de ler nada do cartão de memória sd.

Aqui é um exemplo, primeiro com somente gravação e depois como fazer com que wx:

Montar um dispositivo

root@leon:/media# mount -o umask=527,uid=enforcer,gid=ftp /dev/sdb1 /media/pen/
root@leon:/media# ls /media/pen/ -la
total 44
d-w-r-x--- 10 enforcer ftp  4096 Dec 31  1969 .
drwxr-xr-x  8 root     root 4096 Oct 17 16:14 ..

depois, com o usuário enforcer tente escrever um novo arquivo

enforcer@leon:~$ touch /media/pen/hola
touch: cannot touch ‘/media/pen/hola’: Permission denied

Desmontar e remontar com wx

root@leon:/media# umount /dev/sdb1
root@leon:/media# mount -o umask=427,uid=enforcer,gid=ftp /dev/sdb1 /media/pen/
root@leon:/home/jjorge# ls /media/pen/ -la
total 44
d-wxr-x--- 10 enforcer wim  4096 Dec 31  1969 .
drwxr-xr-x  8 root     root 4096 Oct 17 16:14 ..

tente novamente

enforcer@leon:~$ touch /media/pen/hola
enforcer@leon:~$ ls /media/pen/
ls: cannot open directory /media/pen/: Permission denied
enforcer@leon:~$ cat /media/pen/hola
cat: /media/pen/hola: Permission denied

ftp@leon:/home/jjorge$ ls /media/pen/ -la
total 44
d-wxr-x--- 10 enforcer ftp  4096 Oct 20 10:20 .
drwxr-xr-x  8 root     root 4096 Oct 17 16:14 ..
--wxr-x---  1 enforcer wim     0 Oct 20 10:20 hola

Com esta configuração você agora pode escrever

    
por 20.10.2014 / 16:20