Entendo corretamente a permissão para diretórios no Linux / Unix?

4

Entendo corretamente a permissão para diretórios no Linux / Unix?

  1. Se o seu diretório tiver apenas a permissão r (read), você poderá ver o conteúdo do diretório (quais arquivos estão lá), mas não poderá fazê-lo porque não pode ir ( cd ) para este diretório (devido à ausência de x permissions). Você também não pode ver o conteúdo do diretório (quais arquivos estão localizados) de fora do diretório (por exemplo, ls directoryname/* ). Você também não poderá ler (ver) o conteúdo dos arquivos localizados em tal diretório usando os comandos cat e more (mesmo se você tiver permissões para ler esses arquivos). Você também não poderá modificar (gravar) arquivos (mesmo se tiver permissões de gravação para eles) se esses arquivos estiverem localizados em tal diretório (não importa o que você tente cat >> , echo >> , cp ou algum texto editor). Então, do meu ponto de vista, ter apenas r de permissões para um diretório é equivalente a não ter absolutamente nenhuma permissão para o diretório.

  2. Se o seu diretório tiver apenas x (executar) permissões que você tem permissão para ir ( cd ) no diretório, mas não tem permissão para ver ( ls ) o conteúdo do diretório (porque você não tem permissões para ler o diretório). Se um diretório tiver apenas x permissão e ele contiver um arquivo para o qual você tem permissões r (leitura) e w (gravação), ainda assim não será possível abrir esse arquivo com (pelo menos alguns) editores de texto (por exemplo, mcedit ). Mas você poderá ler o contexto do arquivo usando comandos como cat ou more . Todos vocês poderão modificar o conteúdo do arquivo usando echo >> ou cat >> . Então, parece-me, que é x o que permite aos usuários "ler" e "gravar" arquivos existentes no diretório (se os arquivos tiverem as permissões correspondentes também).

  3. Se um diretório tiver as permissões r e x , mas não as permissões w (gravação), você não poderá alterar o conteúdo do diretório (conjunto de arquivos que estão localizados lá). Por exemplo, você não pode criar um novo arquivo lá ou remover existente no diretório. Mas você ainda tem permissão para alterar o conteúdo dos arquivos existentes. Então, você precisa de w permissões para criar ou remover arquivos no diretório.

    Adicionado:

  4. Também é interessante mencionar que w permission no diretório é necessário, mas não suficiente para criar e excluir arquivos no diretório. Se um diretório tiver apenas a permissão w , você não poderá adicionar / remover arquivos de / para o diretório. Para fazer isso, você precisa ter a permissão x no diretório (além de w permission).

por Roman 28.02.2010 / 19:53

3 respostas

2

A pergunta diz:

If your directory has only "r" (read) permission you are allowed to see the content of the directory (which files are located there) but you cannot do it because you cannot go ("cd") to this directory (because of the absence of "x" permissions).

Sim, você pode fazer isso, você pode ver a lista de arquivos contidos no diretório:

$ mkdir mydir
$ echo text > mydir/myfile
$ chmod a-wx mydir
$ ls -lA
total 4
dr--r--r-- 2 hcs hcs 4096 2010-02-28 22:12 mydir
$ ls -lA mydir
ls: cannot access mydir/myfile: Permission denied
total 0
-????????? ? ? ? ?                ? myfile

Mas você não acessará nenhuma outra informação do arquivo além do nome, como mostra a lista.

    
por 28.02.2010 / 22:17
5

De esta página na faculdade de Dartmouth :

Remember that to read a file, you need execute access to the directory it is in AND read access to the file itself. To write a file, your need execute access to the directory AND write access to the file. To create new files or delete files, you need write access to the directory. You also need execute access to all parent directories back to the root. Group access will break if a parent directory is made completely private.

Então, a partir da minha leitura da sua pergunta e desta página, parece que você já sabe.

    
por 28.02.2010 / 19:59
3

r permission dá acesso à lista de nomes de arquivos (mas não metadados)

x permission dá acesso a metadados de arquivos (inode, tamanho, dono, grupo, perms, etc.) (mas nenhum acesso a LIST de nomes de arquivos)

ls primeiro enumera a LISTA de nomes de arquivos e, em seguida, acessa os metadados do arquivo para cada arquivo. Os metadados são acessados via stat .

Aqui estão alguns exemplos, imagine o diretório "example" contendo o arquivo "data".

com r de permissões:

  • cat /example/data falhará (sem acesso aos metadados do arquivo)

  • ls -lA example será parcialmente bem-sucedido (acesso concedido à LISTA de nomes de arquivos, mas não de metadados)

  • cd example falhará (o diretório atual implica acesso a metadados que não estão disponíveis)

com x de permissões:

  • cat /example/data será bem-sucedido (acesso aos metadados do arquivo fornecidos) (não é necessário acesso à LISTA)

  • ls -lA example falhará (sem acesso à lista de nomes de arquivos)

  • cd example será bem-sucedido

  • ls falhará (sem acesso à lista de nomes de arquivos)

  • ls -l data será bem-sucedido (acesso aos metadados concedidos)

por 20.08.2012 / 21:07