Eu estava tentando executar, chmod -R 777 ./
mas acabei digitando chmod -R 777 /
e configurando 777
em minha máquina inteira. O que pode dar errado? Como posso corrigir isso?
Eu estava tentando executar, chmod -R 777 ./
mas acabei digitando chmod -R 777 /
e configurando 777
em minha máquina inteira. O que pode dar errado? Como posso corrigir isso?
Respostas:
Problemas? Sim, muitos. Pode ser consertado? Certo. Mais rápido que reinstalar? Provavelmente não.
Minha recomendação é reinstalar. Mantenha um backup do sistema existente e restaure a lista de pacotes e o conteúdo dos arquivos em /etc
e /var
. Para /usr/local
, você provavelmente pode restaurar permissões manualmente. Para /home
e /srv
, você precisará restaurar as permissões dos backups.
Se este é um sistema com vários usuários locais, observe que tornar alguns arquivos legíveis pelo mundo revelou algumas coisas que deveriam ter permanecido confidenciais.
Se você realmente deseja tentar reparar (mais um exercício de aprendizado do que uma rota de recuperação prática), primeiro restaure as permissões de alguns arquivos. Observe que, embora a maioria dos arquivos esteja muito aberta, faltam alguns bits de setuid necessários . Aqui estão as etapas que você deve executar antes de qualquer outra coisa. Observe que esta não é uma lista exaustiva, apenas uma tentativa de tornar o sistema quase funcional.
chmod -R go-w /
chmod 440 /etc/sudoers
chmod 640 /etc/shadow /etc/gshadow
chmod 600 /etc/ssh/*_key /etc/ssh*key # whichever matches
chmod 710 /etc/ssl/private /etc/cups/ssl
chmod 1777 /tmp /var/tmp /var/lock
chmod 4755 /bin/su /usr/bin/passwd /usr/bin/sudo /usr/bin/sudoedit
chmod 2755 /var/mail /var/spool/mail
Então você precisará restaurar todas as permissões em todos os lugares. Para arquivos abaixo /usr
, você pode reinstalar os pacotes com um dos seguintes comandos, dependendo da sua distribuição:
apt-get --reinstall install
pacman -S $(pacman -Qq --dbpath /newarch/var/lib/pacman) --root /newarch --dbpath /newarch/var/lib/pacman
, assumindo que você esteja em um Live CD e que sua instalação do Arch esteja montada em /newarch
.Para arquivos abaixo /etc
e /var
, que não funcionará, muitos deles serão deixados como estão: você precisará replicar as permissões em uma instalação em funcionamento. Para arquivos sob /srv
e /home
, você terá que restaurar de backups de qualquer maneira. Como você pode ver, você também pode reinstalar.
Você pode não perceber a princípio, mas muitas coisas podem dar errado. O principal problema é que todo o modelo de segurança de todo o sistema está quebrado. É como ter um corpo sem pele, órgãos no ar. É provável que seja infectado porque não deve funcionar assim. Mesmo que pareça funcionar por alguns minutos, você precisa limpar isso.
A melhor maneira seria começar do zero. Dessa forma, você reduzirá bastante o risco e fornecerá um resultado mais limpo em menos tempo. Se você tiver backups adequados, isso não deve ser uma experiência muito difícil.
Se você tentar limpá-lo, a maneira principal seria solicitar ao gerente de pacotes da sua distribuição que reinstale TUDO no sistema, incluindo a substituição de arquivos de configuração. Em seguida, use o sistema de verificação necessário para examiná-los e verifique se nenhum deles está sinalizado como tendo arquivos com permissões fora do comum. Em seguida, trabalhe com diretórios pessoais do usuário e redefina tudo para permissões sãs em massa, depois trabalhe com as poucas coisas que devem ter permissões especiais (como arquivos de chaves ssh). Por fim, faça um sistema completo para localizar tudo marcado como 777 e percorrer a lista (deve ser pequeno se você executou as outras etapas completamente) e trabalhá-los um por um, certificando-se de que devem estar do jeito que estão.
SOLUÇÃO: TESTEI ISSO NO CENTOS
Esse cara salvou meu trabalho! (Você precisa acessar de alguma forma)
http://www.adminlinux.org/2009/07/how-to-restore-default-system.html
1) Para redefinir uids e gids em arquivos e diretórios:
for u in $(rpm -qa); do rpm --setugids $u; done
2) Para permissões em arquivos e diretórios
for p in $(rpm -qa); do rpm --setperms $p; done
altere manualmente as permissões para esses arquivos:
# ll /etc/ssh/
# chmod 600 /etc/ssh/ssh_host_rsa_key
# chmod 600 /etc/ssh/ssh_host_dsa_key
# service sshd restart
Alguns programas preocupados com segurança não serão iniciados se determinados arquivos tiverem permissões "frouxas" demais. Como o @ceving disse, sshd
é o mais típico disso.
A principal coisa que pode dar errado agora é que qualquer usuário pode abrir, ler e gravar qualquer arquivo em seu sistema. As duas razões pelas quais isso é ruim são: A) se um usuário mal-intencionado obtém o controle do seu sistema através de uma exploração ou configuração incorreta, ele pode modificar qualquer coisa no seu sistema agora e B) você pode excluir o que quiser, mesmo que você não é root, então acabou de negar a maioria das proteções de não executar como root.
Se você não fez o backup das permissões de antemão, você está com um pouco de situação. Você poderá criar um script que "busque" uma lista de permissões de um sistema recém-instalado e, em seguida, "aplique" essas coisas a tudo em seu sistema. Eu não tenho esse script à mão, no entanto.
rm -rf /
seu usuário normal agora, você interrompe o sistema.