Permissões definidas como desconhecidas após chmod 777

Permissões definidas como desconhecidas após chmod 777

Acabei de notar que depois de correr

chmod 777 * 

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

chmod 644 *

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

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

Como os arquivos que eu tinha estavam em um arquivo zip em outro local, simplesmente apaguei o diretório inteiro e descompactei o arquivo zip novamente, mas gostaria de saber as causas desse "problema" e suas soluções.

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

Responder1

Provavelmente é melhor usar find para esse tipo de coisa.

Os diretórios precisam ter acesso x, os arquivos não, portanto, conjuntos diferentes de permissões.

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

# Directories
find . -type d -exec chmod 755 '{}' \;

Responder2

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

Como a evidência desapareceu, só posso supor que, após o seu chmod, você perdeu o acesso de gravação ao .diretório atual. Isso pode ser corrigido por:

chmod u+w $PWD

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

Ao fazer o chmod 644 *, você também removeu oexecutarpermissão de qualquer um dos arquivos que o continham, portanto, eles não serão mais executáveis ​​por nenhum proprietário, grupo, mundo.

Responder3

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

chmod -R

-R, --recursive altera arquivos e diretórios recursivamente

Responder4

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

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

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

chmod 644 *

remove as permissões de execução em diretórios, que precisam de permissões de execução para funcionar corretamente. A solução é bastante simples. Precisamos apenas alterar as permissões dos diretórios assim:

chmod 744 dir_name

Onde dir_name é, obviamente, o nome do nosso diretório. Depois que fizermos isso, tudo voltará ao normal.

informação relacionada