Peu importe si les fichiers /bin
(ou tout autre répertoire standard où les exécutables sont conservés) sont accessibles en écriture par root ou non. Sur un serveur Linux que j'utilise, ils sont accessibles en écriture par root, mais sur ma machine OpenBSD, ils ne le sont pas.
Tant qu'ils ne sont pas accessibles en écriture par le groupe ou par "autre"!
Il n'y a pas de problème de sécurité, par exemple
-rwxr-xr-x 1 root root 126584 Feb 18 2016 /bin/ls
Si quelqu'un voulait l'écraser, il faudrait qu'il soit root, et si c'est le cas root
et l'écraser, alors ils sont soit
- l'installation d'une nouvelle version, ou
- maladroit, ou
- un attaquant disposant déjà des droits root .
Une autre chose à considérer est que root peut écrire dans le fichier, qu'il soit protégé en écriture ou non, car ... root.
Notez également qu'un "script" est autant un exécutable qu'un fichier binaire. Un script n'a pas besoin d'être accessible en écriture "car il s'agit d'un fichier texte". Si quoi que ce soit, il devrait probablement avoir la même autorisation que les autres exécutables du même répertoire.
N'allez pas changer les autorisations sur tout maintenant! Cela peut provoquer toutes sortes de ravages et potentiellement confondre les gestionnaires de packages qui pourraient vérifier que les autorisations sont correctement définies. Cela peut également rendre le système vulnérable si vous modifiez accidentellement les autorisations de manière incorrecte sur une application critique pour la sécurité.
Supposons simplement que les autorisations sur les exécutables sont définies correctement, sauf si vous trouvez quelque chose qui semble vraiment étrange, auquel cas vous devriez probablement contacter le responsable du package pour vérifier plutôt que de commencer à changer des choses.
D'après les commentaires et sur le chat , il y a eu un appel pour un peu d'histoire.
L'historique des autorisations sur les binaires sous Linux n'est pas quelque chose que je sache. On peut supposer qu'ils ont simplement hérité des autorisations du répertoire, ou simplement de la valeur par défaut umask
de Linux, mais je ne sais vraiment pas.
Ce que je sais, c'est qu'OpenBSD installe les binaires dans le système de base 1 avec le mode d'autorisation 555 par défaut ( -r-xr-xr-x
). Ceci est spécifié dans un fragment Makefile dans /usr/share/mk/bsd.own.mk
lequel est défini BINMODE
sur 555 (sauf s'il est déjà défini). Ceci est utilisé plus tard lors de l'installation des exécutables pendant make build
dans /usr/src
.
J'ai jeté un œil au journal CVS annoté de ce fichier et j'ai constaté que cette ligne du fichier était inchangée depuis son importation depuis NetBSD en 1995.
Sur NetBSD, le fichier a été placé pour la première fois dans CVS en 1993, avec BINMODE
la valeur 555.
Le projet FreeBSD semble avoir utilisé exactement le même fichier que NetBSD depuis au moins 1994 , et avec une validation ultérieure ajoute un indice dans le message de validation que les anciens fichiers provenaient de la version 4.4BSD de Berkeley Software Distribution.
Au-delà, le CSRG de Berkeley a conservé les sources dans SCCS, mais leur référentiel est disponible sous forme Git sur GitHub 2 . Le dossier que nous traitons ici semble avoir été commis par Keith Bostic (ou quelqu'un à proximité de lui) en 1990.
Voilà donc cette histoire. Si vous voulez le pourquoi , je suppose que nous devrons demander à Keith. J'espérais un peu voir un message de validation d'un changement disant " cela doit être 555 parce que ... ", mais non.
1 Les systèmes BSD ont une division plus stricte en "système de base" et "packages tiers" (ports / packages) que Linux. Le système de base est une unité cohérente qui fournit un ensemble complet de fonctionnalités pour exécuter le système d'exploitation, tandis que les ports ou packages sont considérés comme des "logiciels locaux" et sont installés sous /usr/local
.
2 Un référentiel GitHub plus complet des versions Unix à partir des années 70 est également disponible .
root
a la permission d'écrire sur un fichier binaire? Si rien d'autre ne serait utile lors de la mise à niveau de ce package.