Veja também:
Por que “chmod -R 777 /” é destrutivo?
Alterei as permissões de arquivo recursivamente no diretório raiz /
executando sudo chmod -R / 777
e, depois disso, meu sistema não inicializa (estou recebendo muitos erros de "permissão negada").
Por favor ajude.
permissions
ubuntu-10.04
boot
Marcin
fonte
fonte
Respostas:
Você está olhando para uma causa perdida. Salve os dados necessários e reinstale o sistema operacional.
fonte
/etc
,/var/www
conteúdo do servidor da web e bancos de dados. Pegue outro disco rígido, ative-o como primário e instale. Isso preserva sua outra unidade como backup até que você possa transferi-la.Eu sei que o dpkg armazena as permissões nos bancos de dados e encontrei o seguinte script google, que pode ajudar.
Edit: Na verdade, dei uma olhada rápida no script e parece que falta um pouco de mágica que vai de PERMS a MODE, por exemplo, dpkg -c fornece, por exemplo, "-rw-r - r--", mas você deseja 0644, estou no trabalho agora, então não tenho certeza de que tenho tempo para fazer a conversão nesse instante, mas posso voltar mais tarde se mais ninguém tiver entrado para adicionar essa parte.
Há um script aqui que parece interessante
fonte
É possível voltar de uma situação tão confusa , sem reinstalar o sistema. Bem, mais exatamente, executando um novo sistema a partir de uma chave USB ou em um Virutal Box (mais ou menos) se você tiver um sistema de inicialização dupla.
Corri novamente o mesmo tipo de problema (algum bug em um script que estava escrevendo) e o resolvi, mas você precisa pedir a ajuda de algum especialista. Seja muito cauteloso!
Primeiro, minha situação foi mais fácil de resolver porque eu tinha um sistema de inicialização dupla (ubuntu e meu antigo fedora instalado), mas executar o sistema com uma chave USB (ou talvez um CD / DVD) deve fazer a mesma coisa.
MPOINT = / mount / ubuntu
Primeiro montei meus sistemas de arquivos assim (não esqueça de criar os pontos de montagem): mount / dev / ubuntu / root $ MPOINT mount / dev / ubuntu / home $ MPOINT / home
Em seguida, executei o seguinte comando (meu problema estava apenas em alguns diretórios críticos) para copiar as permissões do sistema em execução para o mais complicado (de fato, no meu caso, instalei um sistema ubuntu no Virtual Box no fedora e obteve as permissões lá):
encontre / etc / usr / bin -exec stat --format "chmod% a $ {MPOINT}% n" {} \; > /tmp/restoreperms.sh
E então eu executei o script restoreperms.sh.
Consegui novamente inicializar no ubuntu.
O conteúdo do restoreperms.sh será algo como:
Não testei, mas também deve funcionar para proprietários e grupos de proprietários. Algo como:
encontre / etc / usr / bin -exec stat --format 'chown% U:% G $ {MPOINT}% n' {} \; > /tmp/restoreperms.sh^
Obviamente, você deve tomar cuidado aqui, que o UID e o GID são iguais nos dois sistemas, mas para os usuários e grupos relacionados ao sistema, isso não deve ser um problema.
Rk:
Uma coisa importante para isso é manter um disco de instalação sincronizado com a versão que você está usando, ou pelo menos trabalhar com a versão atual do ubuntu. Agora, eu tenho esses comandos em um cronjob, executando todos os dias (pode demorar semanas) para manter essas informações. Isso facilitará a solução da próxima vez, mas, é claro, como eu tenho isso agora, isso nunca acontecerá novamente. ;-) Algo assim:
EDIT: para oferecer suporte a links, o comando combinado é:
/usr/bin/find / -exec /usr/bin/stat --format="[ ! -L {} ] && /bin/chmod %a %n" {}
fonte
Eu modifiquei o script de cima e fica assim:
fonte
Concorde com o blueben, apenas a reinstalação pode ser mais rápida do que analisar qual arquivo / diretório precisa de qual permissão. Mas se a reinstalação não for uma opção, eis uma idéia:
find / | xargs stat -c 'chmod %a "'%n'"' > /tmp/chmod.sh
chmod.sh
para o computador com as permissões incorretaschmod +x /tmp/chmod.sh && /bin/bash /tmp/chmod.sh
fonte
ERRATUM para minha postagem postada como usuário user100740: para oferecer suporte a links, o comando combinado é:
fonte
Se você ainda pode iniciar
/usr/sbin/synaptic
, geralmente é corrigível.Classifique os pacotes por status (pacotes instalados na parte superior), selecione todos os pacotes instalados, clique com o botão direito do mouse e selecione reinstalar. Em seguida, aplique, que solicitará
dpkg
a extração novamente de todos os arquivos desses pacotes. (Você perderá quaisquer modificações locais (mas não as alterações no arquivo de configuração).)Talvez não consiga tudo corrigido.
A outra coisa é que, se você entrar
/var/cache
, poderá chamardpkg -x <package name> /
todos os pacotes instalados e, em seguida, ligardpkg --reconfigure -a
. Além disso, se você estiver usando o Ubuntu, poderá fazer uma atualização dist que geralmente corrige muitos erros (supondo que você ainda não esteja na versão mais recente). Geralmente, quando estou tentando corrigir um erro como esse, tento essas correções simples e, se não o fizerem funcionar novamente, é hora de reinstalar.fonte
inicialize a partir do CD ao vivo. depois inicie o shell, depois sudo -s. Em seguida, chmod 777 / * e, em seguida, chmod 600 / etc / passwd. O kernel entrará em pânico se o init falhar, o que acontecerá se os scripts / lib / init não forem executáveis. inicialize no modo de usuário único, para o Lilo Linux 1, e execute o script do user102453 acima. Isso faz com que a inicialização do sistema seja solicitada. Ainda precisa fazer o X rodar.
fonte
Definir a permissão de / para 755 funcionou para mim.
Portanto, verifique primeiro com
As permissões devem ser "drwxr-xr-x" (755).
fonte