53 votes

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

Je n'autorise que tous les utilisateurs à faire quoi que ce soit, mais pourquoi le système se bloque-t-il en n'accordant que des autorisations ? Je ne modifie que les autorisations, pas les fichiers.

107voto

John Babb Points 60

Il y a plusieurs raisons à cela.

Tout d'abord, outre les autorisations habituelles de lecture, d'écriture et d'exécution, les autorisations de fichiers contiennent d'autres éléments. Les plus importants sont les suivants setuid y setgid . Lorsqu'un programme doté d'un de ces bits de permission est exécuté, il reçoit l'"UID effectif" et/ou le "GID effectif" du propriétaire du programme plutôt que de l'utilisateur qui l'a exécuté. Cela permet aux programmes de s'exécuter avec plus de permissions que l'utilisateur qui les a lancés. Il est utilisé par de nombreux utilitaires système essentiels, notamment su y sudo . Votre chmod efface ces bits, ce qui rend les utilitaires inutilisables.

D'autre part, certains programmes (notamment ssh ) vérifient les autorisations des fichiers et refusent d'utiliser des fichiers dont les autorisations ne leur semblent pas sûres. Cela réduit le risque que des administrateurs négligents laissent accidentellement des failles de sécurité, mais cela rend la gestion des autorisations de fichiers effacées d'autant plus pénible.

41voto

user167850 Points 230

Une réponse courte.

Le système Linux requiert des autorisations spécifiques pour certains programmes tels que 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 à moins que vous ne restauriez manuellement toutes les autorisations.

Dans la pratique, il est beaucoup plus rapide et plus facile de réinstaller.

Le problème est que de nombreux programmes système sont conçus de telle sorte qu'ils ne démarrent pas 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 pratique que d'expliquer pourquoi chaque programme ne fonctionne pas avec de mauvaises permissions.

Si vous voulez vraiment que tous les utilisateurs aient des permissions illimitées dans Ubuntu, vous pouvez ajouter tous les utilisateurs à la section sudo au lieu de modifier les droits d'accès aux fichiers et aux répertoires. Cela aura le même effet, mais ne ruinera pas le système.

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

32voto

Richard Points 21

chmod a des nuances subtiles.

chmod 0777 se comporte différemment de chmod u+rwx,g+rwx,o+rwx en ce sens que le setuid y setgid sont mis à zéro par le premier et préservés par le second.

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

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

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

15voto

Ben XO Points 276

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

Le point sensible est une autorisation spéciale qui, tout en permettant à n'importe qui de créer des fichiers en /tmp L'article 2 de la loi sur la protection des données, ne permet qu'à la personne qui l'a créé de le déplacer ou de le supprimer.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X