Como reverter o comando chown?

15

Se eu correr:

sudo chown -R user:user /

Posso reverter para o que era antes de executá-lo?

    
por fronthem 22.09.2012 / 11:33

5 respostas

21

Em suma: não.

Você precisará restaurar a partir de um backup. (Algumas ferramentas de backup podem ter opções para restaurar apenas a permissão, outras podem listar arquivos de backup com suas permissões e você pode usá-lo para consertar seu sistema.)

Se você não tiver um backup, será necessário corrigir tudo manualmente.

    
por 22.09.2012 / 11:44
6

Somente se você souber a propriedade do usuário e do grupo de todos os arquivos e diretórios no diretório / .

Mesmo assim, você já derrotou a propriedade de arquivos críticos do sistema que precisam ser de propriedade do root, incluindo o comando sudo . Você provavelmente precisaria montar o disco rígido em outro sistema - e estar ciente de que o outro sistema provavelmente não terá os mesmos mapeamentos de UID e GID que você acabou de derrotar.

Faça uma cópia de todo o disco rígido, se puder, e reinstale o sistema operacional. Depois de fazer isso, você pode tentar copiar os arquivos de volta para o sistema recém-limpo e restaurar suas propriedades. Você provavelmente pode assumir (embora não 100% confiável) que tudo sob /home/foo pertence ao usuário foo e que cada arquivo de spool de email em /var/mail pertence ao usuário apropriado (se você tiver um e-mail no sistema). Você provavelmente pode sair sem restaurar a maioria dos arquivos que não estão em /home , dependendo do que você fez com o sistema.

E então comece a cultivar o hábito de checar novamente qualquer comando executado sob sudo antes você pressionar Enter .

    
por 22.09.2012 / 11:54
5

Se sua distro é baseada em RPM, você pode restaurar APENAS arquivos que foram instalados por pacotes rpm.

Para restaurar todas as permissões de pacote:

rpm --setperms -a

Para restaurar todo o proprietário do pacote (usuário / grupo):

rpm --setugids -a

Se -a não funcionar, você pode executar um loop bash:

Para permissões:

for x in $(rpm -qa); do rpm --setperms $x; done

Para o proprietário:

for x in $(rpm -qa); do rpm --setugids $x; done

Extraído de: link

    
por 03.10.2016 / 20:21
1

Você pode armazenar as versões atuais e analisá-las para reverter usando a opção -v.

chown -R nobody:nobody -v /tmp/some_file > /tmp/chown.log
cat /tmp/chown.log

O conteúdo seria:

changed ownership of '/tmp/some_file' from me:users to nobody:nobody

Usando sua linguagem de scripts e expressões regulares favoritas, você pode executar o processo doloroso de revertê-las (se for necessário).

Eu recomendo strongmente que não faça um chute recursivo / como você irá expor / etc / shadow ou qualquer outro arquivo importante.

    
por 26.09.2012 / 03:58
0

se a distro for baseada em rpm:

rpm -a --setperms
    
por 29.03.2016 / 16:55