Erradamente chmod / 777. Problemas?

29

Eu estava tentando executar chmod -R 777 ./ , mas acabei digitando chmod -R 777 / e definido 777 em toda a minha máquina. O que pode dar errado? Como posso consertar isso?

    
por Vinnycx 11.05.2011 / 17:12

4 respostas

45

Problemas? Sim, muitos. Pode ser consertado? Certo. Mais rápido do 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 as permissões manualmente. Para /home e /srv , você precisará restaurar as permissões dos backups.

Se este for um sistema com vários usuários locais, observe que alguns arquivos legíveis no mundo revelaram algumas coisas que deveriam ter permanecido confidenciais.

  • Sua lista de senhas agora está comprometida: os usuários locais tiveram acesso à lista de senhas com hash e podem tentar forçá-los brutalmente. Notifique seus usuários sobre isso.
  • Todos os dados de usuários particulares (chaves ssh, senhas armazenadas, e-mail, qualquer coisa que os usuários considerem confidenciais) foram expostos a todos os usuários locais. Notifique seus usuários sobre isso.

Se você realmente quiser tentar consertar (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 agora esteja aberta demais, alguns estão faltando os bits setuid necessários. Aqui estão os passos que você deve tomar antes de mais nada. Note que esta não é uma lista exaustiva, apenas uma tentativa de tornar o sistema mal 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

Depois, você precisará restaurar todas as permissões em todos os lugares. Para arquivos em /usr , você pode reinstalar os pacotes com um dos seguintes comandos, dependendo da sua distribuição:

  • Se você está usando Debian, Ubuntu ou outra distribuição baseada no APT, você pode executar apt-get --reinstall install
  • Se você estiver usando o Arch Linux, poderá executar pacman -S $(pacman -Qq --dbpath /newarch/var/lib/pacman) --root /newarch --dbpath /newarch/var/lib/pacman , supondo que esteja em um Live CD e sua instalação do Arch esteja montada em /newarch .

Para arquivos em /etc e /var , isso não funcionará, pois muitos deles serão deixados como estão: você precisará replicar as permissões em uma instalação funcional. Para arquivos em /srv e /home , você terá que restaurar a partir de backups de qualquer maneira. Como você pode ver, é melhor reinstalar.

    
por 11.05.2011 / 23:54
19

Você pode não perceber no começo, mas muitas coisas podem dar errado. O principal problema é que todo o modelo de segurança para todo o sistema está quebrado. É como ter um corpo sem pele, todos os órgãos no ar. É obrigado a se infectar porque não é para 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á muito seu risco e dará a você 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 dizer ao gerenciador de pacotes da sua distro para reinstalar TUDO no sistema, inclusive sobrescrevendo os arquivos de configuração. Em seguida, use qualquer sistema de verificação para verificar e verifique se nenhum deles está sinalizado como tendo arquivos com permissões fora do comum. Em seguida, trabalhe em coisas como diretórios home de usuários 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 último, faça um sistema completo para encontrar tudo marcado como 777 e percorra a lista (deve ser pequeno se você tiver feito as outras etapas completamente) e trabalhe através deles, um por um, certificando-se de que eles sejam do jeito que estão. / p>     

por 11.05.2011 / 17:29
11

SOLUÇÃO: EU TESTEI ISSO EM CENTROS

Esse cara salvou meu trabalho! (Você precisa acessar de alguma forma)

link

1) Para redefinir os 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
    
por 07.11.2014 / 17:05
5

Alguns programas preocupados com segurança não serão iniciados se determinados arquivos tiverem permissões "soltas" demais. Como @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 obtiver controle do seu sistema através de uma exploração ou configuração incorreta, ele / ela pode modificar qualquer coisa em seu sistema agora e B) você pode excluir qualquer coisa que desejar você não é root, então você acabou de negar a maioria das proteções de não rodar como root.

Se você não fez o backup das permissões de antemão, está com um pouco de situação. Você pode criar um script que "busque" uma lista de permissões de um sistema recém-instalado e, em seguida, "aplique-as" a tudo em seu sistema. Eu não tenho esse script à mão, no entanto.

    
por 11.05.2011 / 17:29