Perché chmod 777 -R / lascia il sistema inutilizzabile?

52

Concedo solo il permesso a tutti di fare qualsiasi cosa, ma perché il sistema si arresta in modo anomalo dando solo le autorizzazioni? Sto solo modificando l'autorizzazione senza cambiare i file.

    
posta Brij Raj Kishore 17.07.2016 - 22:48

4 risposte

103

Ci sono un paio di motivi.

In primo luogo oltre alle solite autorizzazioni di lettura / scrittura / esecuzione ci sono altri bit che i permessi dei file contengono. In particolare setuid e setgid . Quando viene eseguito un programma con uno di questi bit di autorizzazione viene eseguito, ottiene "UID efficace" e / o "GID efficace" del proprietario del programma anziché dell'utente che lo ha eseguito. Ciò consente ai programmi di funzionare con più autorizzazioni rispetto all'utente che li ha eseguiti. È utilizzato da molte utilità di sistema cruciali tra cui su e sudo . Il tuo comando chmod cancella questi bit lasciando le utilità inutilizzabili.

In secondo luogo alcuni programmi (in particolare ssh ) eseguono un controllo di integrità sui permessi dei file e si rifiutano di usare file con permessi che considerano insicuri. Ciò riduce il rischio che amministratori disattenti lascino casualmente i buchi di sicurezza, ma rende ancora più doloroso il trattamento dei permessi dei file cancellati.

    
risposta data Peter Green 18.07.2016 - 04:37
39

Una risposta breve.

Il sistema Linux richiede autorizzazioni specifiche per alcuni programmi come sudo , ecc.

Quando esegui chmod 777 -R / cancelli tutte le autorizzazioni e sostituiscile con 777 . Ciò rende il sistema inutilizzabile a meno che non si ripristinino manualmente tutte le autorizzazioni.

In pratica è molto più facile e veloce da reinstallare.

Il problema è che molti programmi di sistema sono progettati in modo che non vengano avviati se "non mi piacciono" le autorizzazioni. Questo è fatto per ragioni di sicurezza.

Penso che sia più importante spiegare come gestire la progettazione del sistema in pratica, piuttosto che spiegare perché ciascun programma non riesce a funzionare con permisson errati.

Se si desidera veramente che tutti gli utenti dispongano di autorizzazioni illimitate in Ubuntu, è possibile aggiungere tutti gli utenti al gruppo sudo invece di modificare le autorizzazioni per file e directory. Ciò avrà lo stesso effetto, ma non rovinerà il sistema.

Un altro modo (molto brutto) è di attivare l'account di root e consentire a tutti di accedere come root.

    
risposta data Pilot6 17.07.2016 - 22:54
32

chmod ha sfumature sottili.

chmod 0777 si comporta diversamente da chmod u+rwx,g+rwx,o+rwx in quanto il setuid e setgid sono azzerati dal primo e conservati da quest'ultimo.

Ecco perché il sistema è diventato inutilizzabile. Hai rimosso setuid necessario da alcuni programmi.

Ecco una lista di file setuid o setgid sul mio 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]]# 

Ho rimosso dozzine di voci di rumore in cache e log.

    
risposta data wallyk 18.07.2016 - 19:21
15

Oltre alle altre risposte: hai rimosso anche il "bit appiccicoso" da /tmp (che di solito ha le autorizzazioni 1777), e questo potrebbe causare altri problemi imprevisti, dato che i programmi sarebbero in grado di scrivere o eliminare gli altri 'file temporanei.

Il bit appiccicoso è un permesso speciale che, pur consentendo a chiunque di creare file in /tmp , consente solo alla persona che lo ha creato di spostarlo o rimuoverlo.

    
risposta data Ben XO 19.07.2016 - 15:01

Leggi altre domande sui tag