Pour un répertoire, l'accès "lecture" vous permet d'en lister le contenu, et l'accès "exécution" vous permet de parcourir le répertoire pour ouvrir l'un de ses enfants (fichier ou sous-répertoire). Donc, si vous supprimez :
- juste l'accès en lecture, les gens peuvent toujours accéder aux sous-répertoires en devinant leurs noms
- juste le drapeau d'exécution, les gens peuvent toujours lister les noms des contenus même s'ils ne peuvent pas y accéder, et cela peut toujours être révélateur
- les privilèges de lecture et d'exécution sur un répertoire, tout ce qui se trouve en dessous devient inaccessible et vous n'avez pas besoin d'effectuer de modification récursive.
Bien sûr, si vous faites une modification récursive, une réinitialisation accidentelle non récursive des droits d'accès au répertoire supérieur aura moins de conséquences.
Il va sans dire que, si vous avez créé un fichier il y a deux jours (avec un mode lisible publiquement), et que quelqu'un a lu le fichier hier, ou en a fait une copie, alors vous ne pouvez rien faire aujourd'hui pour rendre ce fichier privé.
xenoid dit (de manière quelque peu simpliste) que, si vous supprimez le groupe et les autres autorisations de votre répertoire (aujourd'hui, maintenant), "tout ce qui se trouve en dessous devient inaccessible et vous n'avez pas besoin de faire de changement récursif". Je suis d'accord que, si vous chmod
votre répertoire (de niveau supérieur) de manière appropriée, personne d'autre que vous-même ne pourra y accéder à l'avenir (c'est-à-dire à partir de maintenant). Mais il y a des pièges.
Liens physiques
Vous souvenez-vous de ce fichier que vous avez créé il y a deux jours ? Supposons que votre adversaire ait créé un lien physique vers ce fichier hier (au lieu de le copier). Si vous chmod
uniquement votre répertoire (de niveau supérieur), alors ce fichier continuera d'avoir les autorisations lisibles publiquement que vous avez attribuées lorsque vous l'avez créé, et ainsi le méchant pourra toujours le lire à l'avenir - (potentiellement) même si vous modifiez par la suite ce. Si vous faites un chmod
récursif , qui sécurisera les autorisations sur le fichier,ce qui affectera le lien. Le méchant pourra toujours faire ls -l
dessus, afin qu'ils puissent voir quand vous le modifiez et quelle est sa taille, mais ils ne pourront pas le lire à nouveau.
Répertoire de travail
Supposons que, sous votre secret
répertoire, vous avez un plans
répertoire, et il est également lisible publiquement. Et supposons qu'il y a cinq minutes, le méchant ouvre une fenêtre de terminal et dit
cd /home/clemisch/secret/plans
Maintenant, après avoir fait le chmod
le secret
, le répertoire de travail du méchant est toujours /home/clemisch/secret/plans
, et ils peuvent continuer à répertorier ce répertoire et à accéder aux fichiers qui s'y trouvent, potentiellement pour toujours. Bien sûr, une fois qu'ils cd
ailleurs, ou fermer cette fenêtre, ou se déconnecter, ou la machine est redémarrée, alors ils perdent l'accès.
Si vous faites un chmod
récursif , qui sécurisera les autorisations sur tous les fichiers et tous les répertoires, ce qui fera perdre immédiatement l'accès au squatter.
Ce risque n'est peut-être pas très important si la machine est un ordinateur personnel accessible uniquement via la console. Mais, si le méchant a pu laisser un screen
ou tmux
session en arrière-plan, alors ils pourraient utiliser cette attaque. Et, si la machine prend en charge ssh
(ou autre accès à distance ; peut-être même FTP suffirait), cette attaque peut être utilisée.
Erreur humaine
Comme xenoid l'a souligné dans sa réponse :si vous faites un chmod
récursif le secret
aujourd'hui, puis après-demain vous avez accidentellementchmod
(uniquement) le répertoire de niveau supérieur à 755, alors vous serez toujours protégé par le chmod
récursif d'aujourd'hui —tous les fichiers et répertoires sous secret
sera toujours illisible. (Bien sûr, si vous créez un nouveau fichier en secret
demain, et vous l'autorisez à être publiquement lisible, alors il sera exposé lorsque vous ouvrirez les permissions sur le secret
annuaire. Mais ce serait vrai, peu importe si le chmod
d'aujourd'hui était récursif ou non.)
mazunki a fait un commentaire :"Je crois que cp
porte des autorisations. Je ne sais pas ce qu'ils voulaient dire, mais considérez ce scénario. Vous voulez faire un diff
entre deux fichiers :
secret/plans/the/quick/brown/fox/file1
secret/jumps/over/the/lazy/dog/file2
Mais vous ne savez pas exactement où se trouvent ces fichiers et vous devez fouiller pour les trouver. Vous pourriez être tenté de le faire
cd plans
cd the/quick # looking for file1
cd brown/fox # found it!
cp file1 /tmp
cd ../../../../..
cd jumps/over
cd the # looking for file2
cd lazy/dog # found it!
diff /tmp/file1 file2
Si vous faites cela, alors /tmp/file1
aura la même protection que secret/plans/the/quick/brown/fox/file1
-donc c'est une autre raison de faire le chmod
récursif aujourd'hui.
UNE dernière chose
Si le méchant a ouvert l'un de vos fichiers secrets il y a cinq minutes et qu'il le garde ouvert, il pourra le lire à l'avenir— potentiellement même si vous le modifiez. La bonne nouvelle est qu'il s'agit d'une attaque quelque peu délicate à exécuter - le méchant doit y avoir réfléchi avant de faire le chmod
. La mauvaise nouvelle est qu'il est très difficile de se défendre contre cette attaque - un chmod récursif n'aidera pas.
__________
et, bien sûr, les utilisateurs / processus privilégiés
PS Vous pouvez raccourcir un peu votre commande :chmod go=
est équivalent à chmod g=,o=
. (Cela ne fera pas le chmod
récursif plus rapide, bien sûr.)