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

52

Estou apenas concedendo permissão a todos para fazer qualquer coisa, mas por que o sistema falha apenas com permissões? Estou apenas modificando a permissão para não alterar os arquivos.

    
por Brij Raj Kishore 17.07.2016 / 22:48

4 respostas

103

Existem algumas razões.

Primeiro, além das habituais permissões de leitura / gravação / execução, existem alguns outros bits que as permissões de arquivo contêm. Mais notavelmente setuid e setgid . Quando um programa com um desses bits de permissão é definido é executado, 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. Ele é usado por muitos utilitários de sistema cruciais, incluindo su e sudo . Seu comando chmod limpa esses bits deixando os utilitários inutilizáveis.

Em segundo lugar, alguns programas (principalmente ssh ) fazem uma verificação de sanidade nas permissões de arquivo e se recusam a usar arquivos com permissões que eles consideram inseguras. Isso reduz o risco de os administradores descuidados acidentalmente deixarem brechas de segurança, mas faz com que lidar com as permissões de arquivos aniquiladas seja ainda mais doloroso.

    
por Peter Green 18.07.2016 / 04:37
39

Uma resposta curta.

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

Quando você executar chmod 777 -R / , limpe todas as permissões e substitua-as 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 forma que eles não iniciam se eles "não gostarem" das permissões. Isso é feito por motivos de segurança.

Eu acho que é mais importante explicar como lidar com o design do sistema em paratice do que explicar por que cada programa falha em trabalhar com permissons errados.

Se você realmente deseja que todos os usuários tenham permissões ilimitadas no Ubuntu, você pode adicionar todos os usuários ao grupo sudo 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.

    
por Pilot6 17.07.2016 / 22:54
32

chmod tem nuances sutis.

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

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

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

[[email protected]]# 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
[[email protected]]# 

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

    
por wallyk 18.07.2016 / 19:21
15

Adicional às outras respostas: você também removeu o "sticky bit" de /tmp (que geralmente tem permissões 1777), e isso poderia causar outros problemas inesperados, pois os programas poderiam gravar ou excluir uns aos outros. 'arquivos temporários.

O bit pegajoso é uma permissão especial que, embora permita que qualquer pessoa crie arquivos em /tmp , permite que apenas a pessoa que o criou mova ou remova.

    
por Ben XO 19.07.2016 / 15:01

Tags