Pourquoi chmod 777 -R / laisse-t-il le système inutilisable?

52

Je n'autorise que tout le monde à faire quoi que ce soit, mais pourquoi le système plante-t-il uniquement en donnant des autorisations? Je ne fais que modifier la permission sans changer les fichiers.

    
posée Brij Raj Kishore 17.07.2016 - 22:48
la source

4 réponses

103

Il y a plusieurs raisons.

Outre les autorisations habituelles de lecture / écriture / exécution, il existe d’autres bits que les autorisations de fichiers contiennent. Plus particulièrement setuid et setgid . Lorsqu'un programme avec l'un de ces bits d'autorisation est défini, il obtient le "UID effectif" et / ou le "GID effectif" du propriétaire du programme plutôt que l'utilisateur qui l'a exécuté. Cela permet aux programmes de s'exécuter avec plus d'autorisations que l'utilisateur qui les a exécutés. Il est utilisé par de nombreux utilitaires système essentiels, notamment su et sudo . Votre commande chmod efface ces bits, laissant les utilitaires inutilisables.

Deuxièmement, certains programmes (notamment ssh ) effectuent un contrôle de santé sur les autorisations de fichiers et refusent d'utiliser des fichiers avec des autorisations qu'ils jugent non sécurisées. Cela réduit le risque que des administrateurs peu scrupuleux quittent accidentellement des failles de sécurité, mais cela rend encore plus difficile le traitement des autorisations de fichiers supprimés.

    
réponse donnée Peter Green 18.07.2016 - 04:37
la source
39

Une réponse courte.

Le système Linux requiert des autorisations spécifiques pour certains programmes comme sudo , etc.

Lorsque vous exécutez chmod 777 -R / , vous effacez toutes les autorisations et les remplacez par 777 . Cela rend le système inutilisable sauf si vous restaurez manuellement toutes les autorisations.

En pratique, il est beaucoup plus rapide et facile à réinstaller.

Le problème est que de nombreux programmes système sont conçus de manière à ne pas démarrer s'ils "n'aiment pas" les autorisations. Ceci est fait pour des raisons de sécurité.

Je pense qu’il est plus important d’expliquer comment gérer la conception du système en termes concrets que d’expliquer pourquoi chaque programme ne fonctionne pas avec de mauvaises autorisations.

Si vous voulez vraiment que tous les utilisateurs aient des autorisations illimitées dans Ubuntu, vous pouvez ajouter tous les utilisateurs au groupe sudo au lieu de modifier les autorisations de fichiers et de répertoires. Cela aura le même effet, mais ne ruinera pas le système.

Une autre méthode (très mauvaise) consiste à activer le compte root et à permettre à tout le monde de se connecter en tant que root.

    
réponse donnée Pilot6 17.07.2016 - 22:54
la source
32

chmod a des nuances subtiles.

chmod 0777 se comporte différemment de chmod u+rwx,g+rwx,o+rwx en ce que les setuid et setgid sont mis à zéro par les premiers et conservés par ces derniers.

C'est pourquoi le système est devenu inutilisable. Vous avez supprimé setuid de quelques programmes.

Voici une liste de fichiers setuid ou setgid sur mon ordinateur portable 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]]# 

J'ai supprimé des dizaines d'entrées de bruit dans les caches et les journaux.

    
réponse donnée wallyk 18.07.2016 - 19:21
la source
15

En plus des autres réponses: vous avez également supprimé le "sticky bit" de /tmp (qui a généralement les permissions 1777), ce qui pourrait causer d’autres problèmes inattendus, car les programmes pourraient écrire ou supprimer les uns les autres 'fichiers temporaires.

Le bit sticky est une autorisation spéciale qui, tout en permettant à quiconque de créer des fichiers dans /tmp , permet uniquement à la personne qui l'a créée de la déplacer ou de la supprimer.

    
réponse donnée Ben XO 19.07.2016 - 15:01
la source

Lire d'autres questions sur les étiquettes