Se você executou o comando chmod -777 /foo
, ele pode ter algumas funcionalidades estranhas. Muito provavelmente, negará os bits que você está passando na negação octal de 777 (que é 111111111 em binário, o que é importante), o que não é realmente possível representar, pois chmod
está usando um conjunto de 9 bits para permissões de arquivo (1 bit por permissão para leitura, gravação, execução * proprietário, grupo, usuário), que é um número não assinado (não pode ser negativo).
Vamos supor que você possa representar números assinados (valores negativos e positivos). Se você encontrar o complemento de 2 de 777 (0b111111111), então você pode descobrir o comportamento exato de (e o número para o qual você está passando) o comando:
111111111
-000000000
----------
111111111
+000000001
----------
1000000000 #this number will cause an overflow because it is 512
#since our range is only -256 -> 255
O que tudo isso significa? Você disse ao kernel "Ei, faça as permissões para esta pasta 1000000000". O kernel respondeu com "Ok" e fez o que você pediu. Agora as permissões do seu sistema de arquivos são exatamente isso, --------- root root /
. Isso tudo está assumindo que eu (e seu kernel / CPU) fiz a matemática corretamente.
Recuperação
As permissões padrão do sistema de arquivos raiz (qual /
é) são geralmente 755. A maneira mais fácil de corrigir isso é efetuar login e alternar para tty usando Ctrl + F1 (que irá levá-lo para tty1, tty2-6 também estão abertos, com tty7 sendo a localização da atual sessão X). Você pode logar como root (ou como usuário regular, mas use sudo
antes de cada comando abaixo) e execute este comando:
chmod 755 /
Isso deve corrigir o problema que você está tendo.