Por que o chmod 644 torna os diretórios inacessíveis?

8

Eu tenho um monte de arquivos de mídia (que só precisam ser 644) que eram uma mistura de várias permissões. Alguns eram graváveis ​​em grupo ou em todo o mundo, então pensei: só por segurança, vou voltar para 644.

O problema é que existe uma hierarquia de diretórios e, para todos os diretórios capturados, os ls -lexibe como:

d????????? ? ? ? ?            ? Dirname

Se eu modifico isso para 744, está consertado.

Minha pergunta é: O que está acontecendo aqui? Os diretórios precisam ser executáveis?

Oli
fonte

Respostas:

7

Conforme observado na página de manual para chmodcom relação às permissões:

As letras rwxXst selecionam bits do modo de arquivo para os usuários afetados: leitura (r), gravação (w), execução (ou pesquisa de diretórios) (x), execução / pesquisa somente se o arquivo for um diretório ou já tiver permissão de execução para alguns usuários. usuário (X)

O bit executável em uma pasta é explicado acima como uma permissão de 'pesquisa'; ou seja, o bit de execução apenas permite acessar a pasta em um navegador de arquivos ou ir para a pasta a partir do terminal executando o cdcomando ou executando ls ~/folderpara listar os arquivos na pasta.

A pasta deve ser executável para o proprietário , embora o superusuário ainda possa acessar a pasta, pois ao usar sudoqualquer arquivo ou diretório pode ser acessado ou excluído. Além disso, as permissões de diretório e arquivo são explicadas mais adiante neste artigo útil no Stackoverflow .

Também é importante observar que 'executar' a pasta não significa que você esteja executando algum código ou comando, como quando um binário ou script executável é executado.

Para um usuário doméstico da área de trabalho (embora talvez não seja para o seu servidor), a maioria das pastas $HOMEpossui a permissão de execução definida para usuário, grupo e outra, se visualizada com stat ~/myfolder(trecho abaixo):

Access: (0755/drwxr-xr-x)  Uid: ( 1000/    mike)   Gid: ( 1000/    mike)

As permissões padrão para pastas dentro $HOME são 755 ou 775 e para arquivos são 644. No entanto, o restante do sistema de arquivos será diferente. Novamente, as pastas devem ter o bit de execução para o proprietário ou elas não poderão ser abertas por ele. É importante ter cuidado chmodao alterar as permissões e, principalmente, ao fazê-lo de forma recursiva, pois a situação pode ser rapidamente complicada.

Para obter mais informações, consulte man chmodou as páginas de manual do Ubuntu on-line e este artigo em Superusuário .

sobremesa
fonte
0

Os diretórios precisam de xum conjunto de bits (para o diretório em que esse bit é visto como bit de pesquisa) para abrir. Muitas pessoas descobrem que quando elas removem o bit executável chmod -Rem toda a pasta, não podem mais acessá-lo. Para corrigir isso, eu uso treepara que eu possa obter apenas o conjunto de pastas e evitar o pesadelo de ter todos os arquivos definidos como executáveis ​​(a opção para árvore é -d List directories only.):

sudo tree -faid dirname | xargs -L1 -I{} sudo chmod +x "{}"

se você não tem tree:

find  dirname -type d -exec chmod +x {} 

Atenção!!! você deve levar isso em consideração:

  • o uso de chmod ou chown recursivo no /diretório raiz ou nos diretórios do sistema destruirá o seu sistema operacional (na verdade, qualquer coisa recursiva no /diretório ou nos diretórios do sistema é perigosa)

  • essa não é uma boa prática de segurança para definir permissões em massa assim

Eduard Florinescu
fonte
@ Melebius Ok obrigado, estou feliz por termos chegado a um entendimento #
Eduard Florinescu