Por que chmod 777 -R / deixa o sistema inutilizável?

52

Estou concedendo permissão a todos para que façam qualquer coisa, mas por que o sistema falha ao fornecer apenas permissões? Só estou modificando a permissão para não alterar os arquivos.

Brij Raj Kishore
fonte
2
Eu acho que não está falhando, mas sim abortar o processo de inicialização em algum momento. Se você olhar /var/log/syslog, descobrirá o motivo.
Hi-Angel
7
É importante saber que, mesmo que isso não estrague as coisas, não "concederá permissão para que todos façam alguma coisa". Ainda haveria um grande número de ações que apenas "raiz" (mais precisamente, um processo com zero UID efetivo) poderia executar.
Zwol 18/07
6
@Glen se por "relacionado", você quer dizer "duplicata exata que mostra por que devemos ser capazes de sinalizar como enganadores nos sites", então com certeza! ótimo link. ;)
underscore_d
4
Eu realmente adoraria ouvir a história sobre você.
Dewi Morgan

Respostas:

104

Existem algumas razões.

Primeiro, além das permissões habituais de leitura / gravação / execução, existem outros bits que as permissões de arquivo contêm. Mais notavelmente setuide setgid. Quando um programa com um desses bits de permissão é definido, ele obtém o "UID efetivo" e / ou "GID efetivo" do proprietário do programa, em vez do usuário que o executou. Isso permite que os programas sejam executados com mais permissões do que o usuário que os executou. É usado por muitos utilitários cruciais do sistema, incluindo sue sudo. Seu chmodcomando limpa esses bits, deixando os utilitários inutilizáveis.

Em segundo lugar, alguns programas (principalmente ssh) fazem uma verificação de integridade nas permissões de arquivo e se recusam a usar arquivos com permissões que consideram inseguras. Isso reduz o risco de administradores descuidados deixarem falhas de segurança acidentalmente, mas torna mais difícil lidar com permissões de arquivo eliminadas.

Peter Green
fonte
41

Uma resposta curta.

O sistema Linux requer permissões específicas para determinados programas sudo, como etc.

Ao executar, chmod 777 -R /limpe todas as permissões e as substitua por 777. Isso torna o sistema inutilizável, a menos que você restaure manualmente todas as permissões.

Na prática, é muito mais rápido e fácil reinstalar.

O problema é que muitos programas do sistema são projetados de uma maneira que eles não iniciam se "não gostarem" das permissões. Isso é feito por razões de segurança.

Eu acho que é mais importante explicar como lidar com o design do sistema em parática do que explicar por que cada programa falha em trabalhar com permissões erradas.

Se você realmente deseja que todos os usuários tenham permissões ilimitadas no Ubuntu, você pode adicionar todos os usuários ao sudogrupo em vez de alterar as permissões de arquivo e diretório. Isso terá o mesmo efeito, mas não arruinará o sistema.

Outra maneira (muito ruim) é ativar a conta root e permitir que todos façam login como root.

Pilot6
fonte
11
Talvez alguém vai levar tempo e fazer uma resposta detalhada ;-)
Pilot6
11
Eu poderia apontar uma maneira melhor de permitir que todos façam tudo neste sistema - mas escrever um artigo detalhado sobre por que cada binário precisa de suas permissões, configurações e sinalizadores específicos é um pouco demais, imho. ;-)
Phillip -Zyan K Lee- Stockmann
4
Os sistemas Linux não são projetados para permitir que todos façam tudo. Você pode ativar a conta root e todos podem fazer logon como root para isso. É estúpido, mas é assim.
Pilot6
9
Então, Pilot6, você quer dizer que os programas do sistema foram projetados de tal maneira que, se a permissão der errado, eles não terão permissão / poderão funcionar corretamente? E Por favor Pilot6 se possível forneça resposta mais profunda com exemplos e explicações por que certas aplicações requerem permissões limitadas. Obrigado.
Brij Raj Kishore
13
@Goldname O acidente é o erro - é um número inteiro de programas dizendo "Eu não pode executar funções críticas com o sistema neste estado, por isso estou abortando"
Shadur
32

chmod tem nuances sutis.

chmod 0777se comporta de maneira diferente de chmod u+rwx,g+rwx,o+rwxque setuid e setgid são zerados pelo primeiro e preservados pelo último.

É por isso que o sistema se tornou inutilizável. Você removeu o setuid necessário de alguns programas.

Aqui está uma lista dos arquivos setuid ou setgid no meu laptop Linux Fedora 23:

[root@fedora23lnvr61]# find / -perm /g+s,u+s
/var/log/journal
/var/log/journal/75e870eb13c74fbf97556a32ecf80ea2
/opt/google/chrome/chrome-sandbox
/usr/bin/rogue
/usr/bin/gnuchess
/usr/bin/locate
/usr/bin/umount
/usr/bin/lbrickbuster2
/usr/bin/gpasswd
/usr/bin/crontab
/usr/bin/fusermount
/usr/bin/su
/usr/bin/at
/usr/bin/newuidmap
/usr/bin/sudo
/usr/bin/pkexec
/usr/bin/mount
/usr/bin/chsh
/usr/bin/newgrp
/usr/bin/passwd
/usr/bin/chage
/usr/bin/chfn
/usr/bin/write
/usr/bin/newgidmap
/usr/sbin/mount.nfs
/usr/sbin/lockdev
/usr/sbin/netreport
/usr/sbin/userhelper
/usr/sbin/usernetctl
/usr/sbin/unix_chkpwd
/usr/sbin/pam_timestamp_check
/usr/libexec/kde4/kdesud
/usr/libexec/kde4/kpac_dhcp_helper
/usr/libexec/dbus-1/dbus-daemon-launch-helper
/usr/libexec/qemu-bridge-helper
/usr/libexec/openssh/ssh-keysign
/usr/libexec/spice-gtk-x86_64/spice-client-glib-usb-acl-helper
/usr/libexec/utempter/utempter
/usr/libexec/abrt-action-install-debuginfo-to-abrt-cache
/usr/libexec/Xorg.wrap
/usr/lib/polkit-1/polkit-agent-helper-1
/usr/lib64/vte-2.90/gnome-pty-helper
/usr/lib64/virtualbox/VBoxSDL
/usr/lib64/virtualbox/VirtualBox
/usr/lib64/virtualbox/VBoxNetNAT
/usr/lib64/virtualbox/VBoxHeadless
/usr/lib64/virtualbox/VBoxNetDHCP
/usr/lib64/virtualbox/VBoxNetAdpCtl
/usr/lib64/virtualbox/VBoxVolInfo
/usr/lib64/vte/gnome-pty-helper
[root@fedora23lnvr61]# 

Eu removi dezenas de entradas de ruído em caches e logs.

Wallyk
fonte
3
Ouso me perguntar por que gnuchess e ladino estão nessa lista?
WiseOldDuck 18/07/2016
2
@WiseOldDuck: Espero que os jogos tenham o mínimo possível para que possam atualizar seu arquivo "high score", mas não permitam que usuários sem privilégios o façam.
21716 wallyk
3
@WiseOldDuck Como wallyk diz, mais, lembre-se setuid não nessecarially tem que usar raiz (e afaik setgid não é realmente útil para root)
StarWeaver
5
Adequado por se preocupar em explicar o que chmodestá fazendo e fornecer evidências de exemplo, algo que falta muito em outros lugares.
underscore_d
11
Isso significa que chmod u+rwx,g+rwx,o+rwx -R /não irá quebrar o sistema?
Dennis Jaheruddin
15

Adicional às outras respostas: você também removeu o "bit pegajoso" de /tmp(que normalmente possui permissões 1777) e isso pode causar outros problemas inesperados, pois os programas podem gravar ou excluir arquivos temporários uns dos outros.

O bit adesivo é uma permissão especial que, embora permita a criação de arquivos por qualquer pessoa /tmp, permite apenas que a pessoa que o criou a mova ou remova.

Ben XO
fonte
4
"e isso impediria que alguém, exceto o root, usasse o diretório system / tmp." - Isso não parece certo. Ainda permitiria que qualquer pessoa usasse o diretório system / tmp. Não é necessário nada complicado se usuário, grupo e outros tiverem todos os direitos. No entanto, isso permitiria que qualquer pessoa removesse os arquivos de outras pessoas.
hvd
11
então Ben Se eu rodar o chmod 1777 -R /, não deverá haver problema, pois não estou limpando o bit pegajoso? -
Brij Raj Kishore
Obrigado @hvd - você está certo e eu mudei um pouco o post para refletir isso.
Ben XO
@BrijRajKishore, permanece a pergunta de por que você está fazendo isso em primeiro lugar. O Ubuntu e os programas que o compõem não foram projetados para serem executados "sem permissão", por muitos motivos. Seria mais sensato "su" fazer root.
Ben XO
11
Não se sabe se isso resultará em um acidente. É totalmente possível que sim, porque de repente os aplicativos poderão fazer coisas entre si com arquivos temporários - talvez acidentalmente - e isso pode causar uma falha. Como o Ubuntu nunca é testado assim, você provavelmente será a primeira pessoa a descobrir. :-) Por outro lado, definir o adesivo em todas as pastas do sistema pode causar muitos outros problemas, com aplicativos que esperavam poder manipular programas devido a permissões de grupo na pasta (ou seja, pastas com permissões 2777).
Ben XO