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


52

Concedo l'autorizzazione a tutti per fare qualsiasi cosa, ma perché il sistema si arresta in modo anomalo dando solo autorizzazioni? Sto solo modificando l'autorizzazione, non cambiando i file.



2
Penso che non si blocchi, ma piuttosto interrompe il processo di avvio a un certo punto. Se guardassi /var/log/syslog, capiresti persino il motivo.
Hi-Angel,

7
È importante sapere che anche se ciò non ha rotto le cose, non "concederebbe il permesso a tutti di fare qualcosa". Ci sarebbe ancora un gran numero di azioni che solo "root" (più precisamente, un processo con UID zero efficace) poteva fare.
zwol,

6
@Glen se per "correlato" intendi "duplicato esatto che mostra perché dovremmo essere in grado di contrassegnare come duplicati su tutti i siti", allora certo! ottimo collegamento. ;)
underscore_d

4
Mi piacerebbe davvero sentire la storia di te che è arrivata a porre questa domanda.
Dewi Morgan,

Risposte:


104

Ci sono un paio di ragioni.

Innanzitutto oltre alle consuete autorizzazioni di lettura / scrittura / esecuzione, ci sono altri bit che contengono le autorizzazioni per i file. In particolare setuide setgid. Quando viene impostato un programma con uno di questi bit di autorizzazione, ottiene "UID effettivo" e / o "GID effettivo" del proprietario del programma anziché l'utente che lo ha eseguito. Ciò consente ai programmi di essere eseguiti con più autorizzazioni rispetto all'utente che li ha eseguiti. È utilizzato da molte utilità di sistema cruciali tra cui sue sudo. Il tuo chmodcomando cancella questi bit lasciando le utility inutilizzabili.

In secondo luogo, alcuni programmi (in particolare ssh) eseguono un controllo di integrità sulle autorizzazioni dei file e rifiutano di utilizzare i file con autorizzazioni che considerano non sicure. Ciò riduce il rischio che gli amministratori negligenti lascino accidentalmente falle di sicurezza, ma rende ancora più doloroso gestire le autorizzazioni dei file cancellate.


41

Una breve risposta

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

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

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

Il problema è che molti programmi di sistema sono progettati in modo tale da non avviarsi se "non gradiscono" le autorizzazioni. Questo è fatto per motivi di sicurezza.

Penso che sia più importante spiegare come gestire la progettazione del sistema in paracadute piuttosto che spiegare perché ogni programma non funziona con permessi sbagliati.

Se desideri davvero che tutti gli utenti dispongano di autorizzazioni illimitate in Ubuntu, puoi aggiungere tutti gli utenti al sudogruppo invece di modificare le autorizzazioni di file e directory. Ciò avrà lo stesso effetto, ma non rovinerà il sistema.

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


11
Forse qualcuno ci vorrà del tempo e farà una risposta dettagliata ;-)
Pilot6

1
Potrei indicare un modo migliore per consentire a tutti di fare tutto su questo sistema - ma scrivere un articolo approfondito sul perché ogni binario ha bisogno di permessi, impostazioni e flag specifici è un po 'troppo, imho. ;-)
Phillip -Zyan K Lee- Stockmann

4
I sistemi Linux non sono progettati per consentire a tutti di fare tutto. È possibile abilitare l'account root e tutti possono accedere come root per quello. È stupido, ma è così.
Pilota 6

9
Quindi Pilot6 intendi dire che i programmi di sistema sono stati progettati in modo tale che se l'autorizzazione va storta, allora non sono autorizzati / in grado di funzionare correttamente? E, per favore, Pilot6, se possibile, fornire una risposta più approfondita con esempi e spiegazioni sul perché alcune applicazioni richiedono autorizzazioni limitate. Grazie.
Brij Raj Kishore,

13
@Goldname Il crash è l'errore - è un numero intero di programmi che dice "Non riesco a svolgere funzioni critiche con il sistema in questo stato, quindi sto interrompendo"
Shadur,

32

chmod ha sfumature sottili.

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

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

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

Ho rimosso dozzine di voci di rumore nelle cache e nei registri.


3
Oserei chiedermi perché gnuchessa e canaglia sono in quella lista?
WiseOldDuck,

2
@WiseOldDuck: mi aspetto che i giochi abbiano un po 'in modo che possano aggiornare il loro file "high score" ma non consentire a nessun utente non privilegiato di farlo.
Wallyk,

3
@WiseOldDuck Come dice Wallyk, inoltre, ricorda che setuid non deve necessariamente usare root (e afaik setgid non è davvero utile per root)
StarWeaver,

5
Preparato a preoccuparsi di spiegare cosa chmodsta facendo e fornire prove di esempio, qualcosa che manca molto altrove.
underscore_d

1
Questo significa che chmod u+rwx,g+rwx,o+rwx -R /non romperà il sistema?
Dennis Jaheruddin,

15

In aggiunta alle altre risposte: hai rimosso anche il "bit appiccicoso" /tmp(che di solito ha i permessi 1777), e questo potrebbe causare altri problemi imprevisti, poiché i programmi sarebbero in grado di scrivere o eliminare i file temporanei degli altri.

La parte adesiva è un'autorizzazione speciale che, pur consentendo a chiunque di creare file /tmp, consente solo alla persona che lo ha creato di spostarlo o rimuoverlo.


4
"e questo avrebbe impedito a chiunque tranne root di utilizzare la directory system / tmp." - Non sembra giusto. Consentirebbe comunque a chiunque di utilizzare la directory system / tmp. Non è necessaria alcuna parte adesiva se l'utente, il gruppo e altri hanno tutti i diritti. Tuttavia, consentirebbe a chiunque di rimuovere i file altrui.
hvd,

1
così Ben Se eseguo chmod 1777 -R / allora non ci dovrebbero essere problemi in quanto non sto cancellando la parte adesiva? -
Brij Raj Kishore,

Grazie @hvd - hai ragione e ho modificato leggermente il post per riflettere questo.
Ben XO,

@BrijRajKishore, rimane la domanda sul perché lo stai facendo in primo luogo. Ubuntu e i programmi che lo compongono non sono progettati per essere eseguiti "senza permesso", per molte ragioni. Invece sarebbe più sensato "su" fare il root.
Ben XO,

1
Non è noto se provocherà un arresto anomalo. È del tutto possibile, perché all'improvviso le applicazioni saranno in grado di fare reciprocamente i file temporanei - forse accidentalmente - e ciò potrebbe causare un arresto anomalo. Dato che Ubuntu non è mai stato testato in questo modo, sarai probabilmente la prima persona a scoprirlo. :-) D'altra parte, impostare il bit appiccicoso su ogni singola cartella del sistema può causare molti altri problemi, con le applicazioni che si aspettavano di essere in grado di manipolare i programmi a causa delle autorizzazioni di gruppo sulla cartella (cioè cartelle con autorizzazioni 2777).
Ben XO,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.