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

8

Eu tenho um monte de arquivos de mídia (que só precisa ser 644) que eram uma mistura de várias permissões. Alguns eram escritos em grupo ou globais, então pensei, só por segurança, vou mandar todos de volta para 644.

O problema é que existe uma hierarquia de diretórios e para todos os diretórios que foram capturados neste ls -l exibe-os como:

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

Se eu chmod que para 744, é fixo.

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

    
por Oli 01.04.2013 / 10:16

2 respostas

6

Como observado na página manpage para chmod com relação às permissões:

  

As letras rwxXst selecionam bits de modo de arquivo para os usuários afetados: leia          (r), escrever (w), executar (ou procurar por diretórios) (x), executar / pesquisar somente se o arquivo for um diretório ou já tiver executado          permissão para algum 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 que você acesse a pasta em um navegador de arquivos ou mova-a para a pasta a partir do terminal executando o comando cd ou executando ls ~/folder para listar os arquivos na pasta.

A pasta deve ser executável para o proprietário , embora o superusuário ainda possa acessar a pasta como quando estiver usando sudo qualquer arquivo ou diretório pode ser acessado ou excluído. Além disso, as permissões de diretório e arquivo são explicadas em este artigo útil no Stackoverflow .

Também é importante notar que "executar" a pasta não significa que você está realmente executando qualquer código ou comandos como quando um binário executável ou script é executado.

Para um usuário doméstico de área de trabalho (embora talvez não seja o servidor), a maioria das pastas em $HOME tem permissão de execução definida para usuário, grupo e outros, se for exibida com stat ~/myfolder (trecho abaixo):

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

As permissões padrão para pastas dentro de $HOME são 755 ou 775 e para arquivos elas 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 não poderão ser abertas por ele. É importante ter cuidado com chmod ao alterar permissões e, particularmente, ao fazer isso de forma recursiva, pois a situação pode ficar rapidamente confusa.

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

    
por user76204 01.04.2013 / 20:28
0

Os diretórios precisam de x bit set (para o diretório em que bit é visto como bit de pesquisa) para abrir. Muitas pessoas descobrem que, quando removem o bit executável com chmod -R na pasta inteira, não podem mais acessá-lo. Para corrigir isso eu uso tree para que eu possa obter apenas a pasta definida e evitar o pesadelo de ter todos os arquivos definidos como executáveis (a opção para a árvore é -d List directories only. ):

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

se você não tiver tree :

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

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

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

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

por Eduard Florinescu 25.01.2018 / 15:12