Eu acidentalmente executei o seguinte comando no diretório etc:
sudo chmod -R 700 /etc
Eu sei que fiz algo muito errado. Meu terminal agora imprime:
I have no name!@ubuntu: /$
Como posso reverter meu diretório etc para o seu estado anterior?
Tentei alterar as permissões, mas está falhando agora. Além disso, seria muito útil se alguém pudesse explicar o que realmente deu errado quando eu executei esse comando, etc. Foram apenas permissões de arquivo. Então, por que todo o sistema parece completamente explodido? Por que agora não há senhas de login funcionando? Eu sei que existe um arquivo no diretório etc que tem a ver com os usuários. Mas como a alteração de permissões prejudicou tudo? Alguns detalhes técnicos sobre isso seriam muito úteis.
ls -laR
) de outro sistema em execução. Qual versão é sua? Você pode alterar os diretórios para 755 e os arquivos e para 644, mas alguns devem ter modos diferentes (como / etc / shadow, por exemplo).sudo
você deve lê-lo na sua cabeça como "Estou concedendo a mim mesmo o poder supremo sobre o meu sistema, sem rede de segurança, tenho certeza de que sei o que estou fazendo? Estou certo de que digitei o que quis dizer?" antes de pressionar return.find /etc -type d ! -perm 755 -exec ls -ld {} \;
efind etc -type f ! -perm -644 -exec ls -l {} \;
encontrar diretórios e arquivos com modos não padrão. No Debian, são apenas 2 diretórios e 39 arquivos.Respostas:
Uma coisa deu errado: o uso de
sudo
com esse comando. A-R
opção informachmod
para definir recursivamente as permissões para esse diretório, o que é, em todos os casos, uma ação não recomendada (devemos chamá-lo de heresia) se você não souber o que está fazendo (quando isso aconteceu comigo, eu não emitiu o comando, mas uma GUI defeituosa o fez e meu sistema foi ligado).O GNU / Linux é muito sensível às permissões de arquivos, pois foi construído com estabilidade e segurança em mente. O mesmo se aplica à maioria dos programas executados no GNU / Linux (ou seja,
apache2
descarta privilégios e usos de rootwww-data
, ou usuário similar, e sua700
permissão não permite que ele leia / grave seus próprios arquivos).Como você já mencionou, as senhas de login são armazenadas em um arquivo
/etc/passwd
e somente o root (presumo que você não tenha alterado isso) pode lê-lo, mas o prompt de login (ou login da GUI) usa uma conta sem privilégios e, portanto, não pode ler o arquivo.Mesmo como dito acima, o Linux é muito sensível às permissões de arquivo. Alguns programas até verificam as permissões de seus arquivos de configuração e, se não são esperados, não serão executados.
Se você usa uma distribuição baseada em RPM, isso pode ser feito usando o
rpm --setperms
comando, seria dolorosamente revertido um por um os pacotes, no sistema semelhante ao Debianapt-get --reinstall install
é seu amigo. Outras soluções podem estar disponíveis, mas precisariam de um sistema funcional para isso.fonte
Vamos ver, o que você fez é definir permissões em todo o diretório / etc, pois a leitura / gravação / execução é permitida apenas para o proprietário do arquivo / dir, negado para todos os outros. Se você estiver confuso com as permissões do arquivo, poderá ler mais em Wikipedia: Permissões tradicionais do UNIX .
O motivo pelo qual você explodiu seu sistema é porque muitos processos não podem mais ler suas configurações, não podendo acessar o / etc. Não será fácil recuperar o diretório / etc inteiro para o estado anterior. Como fazer isso dependerá da sua distribuição, mas basicamente significa reinstalar todos os pacotes que contêm qualquer arquivo dentro do / etc.
Como um rápido auxílio à banda para poder usar o sistema, a fim de corrigi-lo corretamente (reinstalando todos os pacotes com conteúdo em / etc, conforme indicado acima), você pode:
Com essas duas linhas, você definirá permissões liberais em todo o diretório / etc, com leitura / gravação permitida para o proprietário e o grupo e leitura permitida para todos os outros. A razão dos dois chmod é definir o bit de execução apenas nos diretórios. Alguns processos irão reclamar ou falhar, mesmo assim, incluindo qualquer executável em / etc, mas você poderá fazer a reinstalação descrita acima.
Esteja ciente de que, até que você recupere as permissões originais, seu sistema estará, no mínimo, em um estado inseguro.
fonte
/etc/sudoers
é outro./etc
não devem ser tornados legíveis pelo mundo! Restaure a partir de backups, é por isso que você os possui (ou é por isso que as pessoas pedem que você faça backups).O 700 removeu o acesso a muitos arquivos para grupos e usuários do mundo (por exemplo, os arquivos agora têm
rwx------
permissões). Por exemplo, todos os usuários precisam ser capazes de ler/etc/passwd
. Com sua configuração, somente o root pode ler agora/etc/passwd
. Muitas coisas vão quebrar se você quebrar as permissões nos arquivos de/etc/
maneiras imprevisíveis.Você pode tentar reconstruir as permissões (supondo que você ainda possa mudar para o root) com base em um servidor ativo, mas isso é propenso a erros.
Sugiro restaurar a
/etc/
partir do backup se você tiver um (verifique se a restauração recupera as permissões ou, se sua solução de backup suportar, restaure apenas as permissões).fonte