Permisions definido como desconhecido após chmod 777

1

Acabei de perceber que depois de executar

chmod 777 * 

em um diretório que possui sub-diretórios faz o que você esperaria. Ele define as permissões de tudo, incluindo os subdiretórios para o 777. No entanto, se você decidir que não deseja fazer isso, execute

chmod 644 *

Agora, o conteúdo dos subdiretórios é definido como permissões desconhecidas e você não pode alterá-las novamente.

Por que isso acontece? Esse é o comportamento esperado ou um bug? Existe uma maneira de restaurar as permissões de arquivo?

Já que os arquivos que eu tinha estavam em um arquivo zip em outro local, eu simplesmente deletei todo o diretório e descompactei o arquivo zip novamente, mas gostaria de saber as causas desse "problema" e seus remédios. / p>

Algumas informações adicionais, estou executando esses comandos em uma máquina remota por SSH.

    
por Buzu 17.01.2012 / 23:30

4 respostas

4

Provavelmente, é melhor usar esse tipo de coisa para encontrar.

Os diretórios precisam ter acesso x, os arquivos não, um conjunto de permissões tão diferente.

# Files
find . -type f -exec chmod 644 '{}' \;

# Directories
find . -type d -exec chmod 755 '{}' \;
    
por Panther 18.01.2012 / 00:15
1

A maneira como os bits de permissão são interpretados diferem para arquivos e diretórios. Leia info coreutils 'File permissions' e man 2 chmod para detalhes. Por que alguém desejaria tornar tudo legível, gravável, executável para o proprietário, grupo e mundo?

Como a evidência se foi, só posso imaginar que, após o chmod , você perderia o acesso de gravação ao . , o diretório atual. Isso pode ser corrigido por:

chmod u+w $PWD

Em seguida, você pode alterar o modo (permissões) dos arquivos em $PWD

Ao fazer o chmod 644 * , você também removeu a permissão executar de qualquer um dos arquivos que o tinham, para que eles não sejam mais executáveis por qualquer proprietário, grupo, mundo.

    
por waltinator 17.01.2012 / 23:51
0

Quando você deseja definir permissões para diretórios e subdiretórios, use:

chmod -R

-R, --recursivos arquivos de mudança e diretórios recursivamente

    
por bioShark 17.01.2012 / 23:45
0

Encontrei a solução para o problema que tive.

Em primeiro lugar, obrigado a todos vocês que postaram, suas respostas foram realmente úteis.

O problema é que atribuir permissão 664 a todos os arquivos no diretório atual:

chmod 644 *

remove as permissões de execução nos diretórios, que precisam executar permissões para funcionar corretamente. A solução é bem simples. Nós só precisamos mudar as permissões para os diretórios assim:

chmod 744 dir_name

Onde dir_name é, obviamente, o nome do nosso diretório. Depois disso, tudo volta ao normal.

    
por Buzu 19.01.2012 / 06:12