chown -R usuário: usuário. * altera as permissões ao contrário: este é o comportamento correto?

7

Eu tive muitos problemas ao alterar a permissão de uma pasta myfolder residindo em / . Eu emiti o comando

sudo chown -R luca:luca /myfolder/.*

Minha intenção era alterar a propriedade de todos os arquivos ocultos em /myfolder .

Infelizmente, percebi que também a propriedade de / foi alterada, o que, é claro, me deixou com um sistema corrompido. Acho que isso aconteceu porque .. corresponde a .* , mas ainda parece estranho para mim.

Está mudando o diretório pai o comportamento correto ou devo enviar um relatório de bug?

Se foi meu erro usar o chown, quais são as práticas recomendadas para evitar a alteração da propriedade de pastas e arquivos do sistema?

    
por lucacerone 05.07.2013 / 14:14

2 respostas

4

Lembre-se que a linha de comando é expandida (interpretada) pelo shell antes de ser executada

sudo chown -R luca:luca /myfolder/.*

é interpretado primeiro como:

sudo chown -R luca:luca /myfolder/.  /myfolder/.. /myfolder/.adobe  /myfolder/.bash_history

observe o /myfolder/.. na sua linha de comando

chown -R luca:luca /myfolder/.. é equivalente a chown -R luca:luca /
que faz o chown correr "para trás"

Use echo /myfolder/.* quando você usa "*" para verificar.

    
por Emmanuel 05.07.2013 / 14:35
4

Bem. Linha de comando como root é muito poderosa. Leia alguns dos estes clássicos. E sim, .* correspondendo a .. é exatamente o que se pretende. Dot não é um caractere especial. É uma convenção. Por convenção, os arquivos que começam com um ponto ficam ocultos da visualização padrão ao listar um diretório - nada menos e nada mais. Por convenção, o inode que leva ao diretório atual obtém o nome . e o inode que leva ao diretório pai obtém o nome .. .

O que você deveria ter feito era

chown -R luca:luca /myfolder

Eu mencionei que não há nada especial sobre os nomes de arquivos que começam com um ponto? Recursivo chown não pensa assim.

Neste momento, você pode resgatar algumas das funcionalidades alterando a propriedade de volta para o root. No longo prazo, você provavelmente precisará reinstalar o sistema.

Como regra geral:

  1. Evite trabalhar como root.
  2. Se você trabalha como root, leia cada comando duas vezes antes de pressionar Enter.
  3. Se você não tiver certeza sobre a expansão, tente primeiro com um comando "seguro" (como echo .* ).
  4. Não funciona como root.
  5. Existem muitas tarefas que podem ser executadas com segurança usando uma interface gráfica (seu problema é um exemplo de tal tarefa).
  6. Eu mencionei que você deve evitar usar a conta root?
por January 05.07.2013 / 14:44