"Chown -R root /" como estou ferrado?

8

Eu acidentalmente executei o comando chown -R root / enquanto tentava alterar as permissões para a pasta pública do meu aplicativo rails. Eu acreditava que isso alterava as permissões para todas as minhas pastas no diretório /. Então, minha pergunta é: quão perigoso é isso, de fato, a melhor pergunta seria: existe alguma maneira de desfazer isso?

user1938700
fonte
3
Isso não pode ser desfeito automaticamente e, sim, tem um impacto significativo no seu sistema (incluindo, entre outros, os vários diretórios pessoais). Espero que você tenha um backup recente à mão. Boa sorte.
Frédéric Hamidi
Existem programas que verificam seu sistema em busca de permissões e propriedade de arquivos apropriadas. Eu acho que o tripwire é ou foi um dos primeiros. Se você não tiver vários usuários, poderá recuperar a situação apenas obtendo um relatório e / ou corrigindo essa ferramenta.
Minopret
Leia também os bons conselhos abaixo, que equivalem a "não reaja de maneira alguma que pioraria" e "não assuma o pior". Ou lembre-se destas etapas gerais importantes para solução de problemas usando a versão da piada: Operador de emergência: "Não entre em pânico, você tem certeza de que seu amigo está morto?" Chamador: BANG "Sim, infelizmente, ele está morto."
Minopret
Na maioria dos casos, em um sistema normal, você deve saber do grupo de um arquivo quem deve ser o proprietário. Portanto, findtodos os arquivos pertencentes à raiz onde o grupo não é apropriado e os exibem ao usuário que corresponde ao grupo. Registre falhas e lide com elas individualmente.
AGF
Você executou esse comando como root? (Espero que não ...) #
Axel

Respostas:

7

Uma maneira de atenuar o problema aqui (não resolver, mas ajudá-lo a sair de um buraco) é executar um processo em um sistema semelhante para coletar as propriedades apropriadas para os arquivos. Aprecio que as chances de uma correspondência exata sejam um pouco reduzidas, mas se os dois sistemas estiverem no mesmo nível dos pacotes similares instalados, você poderá ter sorte.

Depois de coletar as permissões de arquivo em um arquivo, você poderá executar um processo em seu próprio sistema para ler os arquivos e permissões / propriedades do bom e substituí-los no seu. Eu tenho alguns aplicativos caseiros pequenos no Linux que fazem exatamente isso.

Por exemplo

777*0*0*S*16*1334559119*1334532895*1361208513*/usr/lib32/*libgomp.so.1
644*0*0*F*67370*1359536382*1359374461*1359717843*/usr/lib32/*librt.a
644*0*0*F*59044*1334559119*1334532931*1355405098*/usr/lib32/*libgomp.so.1.0.0
644*0*0*F*1238*1359536382*1359374461*1359717843*/usr/lib32/*libBrokenLocale.a
777*0*0*S*17*1359536382*1359374460*1361208513*/usr/lib32/*libdl.so
644*0*0*F*905712*1334559116*1334533011*1355405098*/usr/lib32/*libstdc++.so.6.0.16
777*0*0*S*15*1333306601*1323929512*1361208513*/usr/lib32/*libbz2.so.1.0
777*0*0*S*24*1359536382*1359374460*1361208513*/usr/lib32/*libnss_files.so
644*0*0*F*1128*1359536382*1359374462*1359717843*/usr/lib32/*crt1.o

RWX * UID * GID * outras coisas * diretório * nome do arquivo

FreudianSlip
fonte
5

Primeiro de tudo, pare o comando se ele ainda estiver em execução!

Agora tudo pertencerá à raiz e isso é bastante problemático.

Você deve tentar restaurar as informações do seu backup mais recente.

Também é importante não reiniciar o sistema antes de verificar todos os aplicativos em execução e o usuário iniciá-los na inicialização. Se o fizer, alguns deles podem não iniciar corretamente devido a problemas de permissão.

Boa sorte.

fedorqui
fonte
3

Muito e não exatamente.

"Muito" no sentido de que, se o comando foi realmente executado, sua segurança está ferrada. Agora você não sabe quais caminhos têm quais proprietários e quem deve ter permissão para fazer o que.

"Não exatamente" no sentido - você tem certeza de que estava enraizado quando fez isso e o comando foi até o fim? Se você o cancelou, assim que o viu, pode ter sorte e o reparo pode estar baixo. Se você não fosse root, este comando não deveria ser capaz de fazê-lo, a menos que você fizesse algo assim sudo ....

Não existe um remédio único para isso. Se você tiver um backup, poderá restaurá-lo. Pode ser necessário verificar as propriedades no backup e aplicá-las. Se você estiver usando um verificador rootkit (por exemplo, rkhunter), ele pode ter uma lista das propriedades mais básicas e possivelmente consertá-lo. (Não é bem provável).

carlspring
fonte
2

No Fedora, pelo menos, o comando RPM tem as opções --setpermse --setugids, usando-as, você pode corrigir a maioria dos arquivos pertencentes ao sistema, como rpm --setugids -a. Para (um pouco) corrigir os arquivos de cada usuário, você pode fazer por cada um chown -R user /home/user. Provavelmente haverá sobras que não foram corrigidas pelos itens acima, especialmente se você tiver algum tipo de servidor (web, ftp, outros), essas terão que ser tratadas uma a uma.

Provavelmente outras distribuições têm mecanismos semelhantes. Ou faça uma atualização completa (ou seja, instale tudo de novo, como se de alguma forma estivesse danificado. OK, estava de alguma forma danificado).

[Sim, esta é mais uma vez a maneira bastante cruel do Unix de ensinar aos usuários inocentes a considerar cada comando com cuidado antes de pressionar ENTER, e usar o root com moderação . Considere-se ensinado.]

vonbrand
fonte
setuide as setgidpermissões precisam ser definidas manualmente. rpmnão os restaurará.
jnas
1

Se o seu uso do OSX apple fornece um recurso de restauração nos Utilitários de Disco para corrigir esse problema. Se você estiver usando uma distribuição Linux, tenho certeza de que precisará refazer todas as permissões manualmente. Em ambos os casos, bata nas mãos e não faça novamente

Mrshll187
fonte
Provavelmente, é improvável que você possa se recuperar totalmente disso no Linux. Mesmo que o sistema funcione, você provavelmente perdeu algo que pode voltar a incomodá-lo mais tarde, como instabilidade ou vulnerabilidade de segurança. Eu diria que provavelmente é necessário restaurar uma abordagem de backup ou reconstrução.
precisa
0

Infelizmente, não conheço nenhuma maneira de "desfazê-lo", mas você provavelmente pode deixar os arquivos do sistema como pertencentes ao root e restaurar todos os arquivos em seu $ HOME para pertencer a você (e fazer o mesmo para todos os usuários do sistema). Nesse ponto, você pode corrigir permissões e / ou proprietário em cada arquivo que não esteja no diretório $ HOME que precisa dele conforme ele é lançado. Sim, isso é uma dor, mas não acho que haja uma solução fácil. Isso é o que eu faria de qualquer maneira.

Freedom_Ben
fonte
0

Eu diria que você é muito "ferrado" como você diz. A melhor maneira (e mais eficiente) é reinstalar e restaurar itens críticos de seus bons backups. Desculpe, essa não é uma situação que geralmente tenha uma solução rápida com um final feliz. Boa sorte!

mdpc
fonte