Recuperando de “chmod -R 777 /” no Ubuntu [duplicado]

7

Estou usando o Ubuntu para fins de desenvolvimento.

Como eu trabalho no lado do banco de dados, há muitas coisas que requerem permissões de arquivo para acessar o diretório de dados ou outro, de acordo com o requisito.

Toda vez que recebo erros como:

[ERROR] path/to/directory/ permission denied

Para evitá-lo, preciso logar como raiz raiz no terminal e dar acesso a esse diretório com:

chmod -R 644 /path/to/directory

Para evitar completamente este problema, forneci privilégios de acesso total com o seguinte comando:

chmod -R 777 /

Agora meu sistema tem alguns problemas.

Não consigo fazer login como raiz nem nas contas do sistema operacional nem no terminal. E se eu reiniciar o sistema, não tenho certeza de que ele será inicializado sem problemas.

Acho que alguns dos arquivos que não devem receber acesso total recebem acesso total e não sei o que são esses arquivos.

Alguém pode me ajudar?

    
por vidyadhar 21.01.2013 / 12:02

3 respostas

8

chmod -R 777 /

Se você já se encontrar pensando em aplicar recursivamente o modo 777 em qualquer diretório, pare e reserve um momento para ter absoluta certeza de que é isso que deseja fazer. 777 é uma abreviação para:

  • permite ler, escrever e executar para o proprietário do arquivo
  • permite ler, escrever e executar para membros do grupo do arquivo
  • permite ler, escrever e executar para todos no sistema

(para simplificar, vou ignorar o problema de setuid , setgid e sticky bits)

Isso quase sempre não é o que você quer.

Aplicando-o recursivamente à raiz ( / ) do sistema de arquivos, esta permissão será configurada em todos os arquivos e diretórios da sua máquina. Isto é definitivamente não o que você quer .

Em termos de recuperação disto ... puramente hipoteticamente, se

  • Sua caixa do Ubuntu ainda está rodando sshd , e você pode logar em ssh como root

E você tem outra máquina que

  • Pode se conectar à sua máquina de desenvolvimento com mais de ssh
  • Tem um sistema de arquivos muito semelhante à sua máquina de desenvolvimento (digamos, uma instalação limpa da mesma versão do Ubuntu e do seu DBMS de escolha)

os seguintes comandos copiarão as permissões de arquivo da máquina na sua caixa de desenvolvimento:

sudo find / -print0 | \
xargs -0 stat -c "chmod %a '%n'; chown -h %U:%G '%n';" | \
ssh user@your-development-machine

Isso levará algum tempo para ser executado.

Isso tem uma boa chance de corrigir um grande número de permissões 777 'd na sua caixa Ubuntu. No entanto, mesmo no melhor dos casos, você deve esperar encontrar mais erros relacionados a permissões que precisará corrigir manualmente.

A outra opção, e a que eu recomendaria, seria começar de novo completamente. Faça backup de seus dados, reinstale o Ubuntu, seu DBMS e qualquer outro software necessário em sua caixa de desenvolvimento.

    
por 21.01.2013 / 12:45
2

Se você não tem mais acesso root, está sem sorte. A reinstalação é a melhor opção.

Existem arquivos com permissões sofisticadas, como 4755 , como o comando su e sudo , e sem isso eles não serão executados.

    
por 21.01.2013 / 12:40
2

Dar ao mundo inteiro leitura, escrever e executar o acesso ao seu sistema de arquivos geralmente é uma idéia muito ruim. De um lado todos com acesso ao seu computador podem fazer basicamente qualquer coisa com o sistema. E, além disso, existem vários daemons do sistema, como ssh , que verificam as permissões de diretórios e arquivos. Se eles não estiverem corretos, esses daemons geralmente não começam.

A melhor solução para sua situação atual seria restaurá-lo a partir de um backup. Assim, você recupera facilmente todos os arquivos com as permissões corretas.

Se você não tiver um backup, a próxima solução prática seria reinstalar o sistema. Então, primeiro faça um backup dos seus arquivos, salve o software instalado ( dpkg --get-selection > installed-software.txt ), instale um novo sistema e instale também o software que você usou ( apt-get update && dpkg --set-selection < installed-software.txt && apt-get -u dselect-upgrade ). Agora você tem um novo sistema e pode atualizar seus arquivos de configuração.

Outra solução seria escrever um script. Este script deve percorrer o seu sistema de arquivos de forma recursiva e comparar a permissão de cada arquivo e diretório com algum outro sistema. Pode alterar as permissões de acordo com o outro sistema. Talvez você precise alterar alguns valores, mas esse script pode fazer o trabalho principal para você. Essa solução também funcionará se você tiver acesso físico ao seu computador. Basta inicializá-lo a partir de um Live-CD ou pendrive e montar o sistema de arquivos. Ou você também pode remover seu disco rígido e montá-lo em outro computador.

No entanto, do meu ponto de vista, a maneira mais rápida de recuperar um sistema de trabalho seria fazer o backup e reinstalá-lo.

    
por 21.01.2013 / 12:34