Recuperando do comando mau chown

5

Eu mudaria a propriedade de um diretório para apache:apache , mas acabei executando:

chown -R apache:apache /

Ruim! Muito mal! Eu sabia o que estava acontecendo quando começou a dizer:

chown: changing ownership of '/proc/2694/fd/48': Permission denied

Foi quando eu parei tudo (Ctrl + C).

O sistema atual que eu tenho é um servidor rodando o virtualbox rodando o CentOS 5. Esse problema aconteceu dentro da VM.

Atualmente, tudo parece estar funcionando, mas ainda não reiniciei o sistema e, para ser honesto, tenho medo de que, se eu fizer algo, quebre algo.

Eu não sei o pedido de chown , devo estar preocupado e presumir que algo irá quebrar após uma reinicialização? Existe uma maneira de recuperar este problema sem ter que confiar em backups? Eu tenho um diário, mas eu pensei que pode haver uma saída mais simples.

    
por Christian 10.04.2012 / 13:00

4 respostas

7

Seria bom ter um backup antigo, mas seria suficiente IMHO para extrair os dados de propriedade.

Eu faria assim:

  • Primeiro, faça um backup do estado atual.

  • Em seguida, restaure as propriedades originais de acordo com o RPMDB. Isso provavelmente irá reparar muitos dos seus arquivos

  • Para identificar e reparar os restantes, encontre todos os arquivos que ainda estão sujeitos a este problema. Estes são os arquivos que pertencem a apache:apache e estão na "ordem de busca" antes de /proc . Talvez você faça

    ls -U /
    

    primeiro e obtenha a lista de entradas no nível da raiz antes de /proc (suponho que é aqui que você cancelou o processo).

    Então faça um

    find /foo /bar /baz -user apache -group apache
    

    substituindo foo , bar , baz pelas entradas identificadas anteriormente. Redirecionar a saída de find para um arquivo.

  • Extraia todos os dados de propriedade dos arquivos fornecidos do backup e aplique-os aos arquivos.

por 10.04.2012 / 13:26
9

rpm --setugids restaurará a propriedade dos pacotes passados para ela. Passe -a para restaurar todos os pacotes. Você também pode precisar de --setperms para restaurar as permissões setuid / setgid.

    
por 10.04.2012 / 13:03
1

Com toda a honestidade, é mais fácil agendar uma restauração adequada do seu último backup neste momento. Felizmente, você ainda pode fazer outro backup final para preservar os dados do usuário atual; em seguida, restaure seu backup antigo e, por fim, restaure os dados do usuário / cliente de seu backup final, certificando-se de preservar as permissões de cada grupo de arquivos ao fazer isso.

    
por 10.04.2012 / 13:11
1

Já que você é um dos sortudos pessoas inteligentes o suficiente para ter implementado um backup diário, aqui está o que eu sugiro:

Se você puder acessar seu catálogo de backup diretamente, poderá usá-lo para remover permissões de todos os arquivos. O Bacula, por exemplo, armazena os metadados em um banco de dados e os dados do arquivo podem ser visualizados usando consultas SQL.

Também é possível restaurar todos os seus arquivos para um local separado e ler o sistema de arquivos para determinar as permissões apropriadas.

Para cada arquivo no sistema que você tenha chocado com chown (encontre / -user apache-group apache), verifique o arquivo correspondente em seu backup. Se existir, restaure o usuário e o grupo. Se não existir, sinalize para revisão posterior e siga em frente.

Esse processo manterá todos os seus dados atualizados e evitará a perda de um ou dois dias de trabalho. A restauração das permissões do banco de dados RPM é uma boa ideia, mas onde você tem backups, você pode realizar um maior grau de trabalho em um único passo.

    
por 10.04.2012 / 17:17