GNU/Linux >> Tutoriels Linux >  >> Linux

Ai-je vraiment besoin d'un chmod récursif pour restreindre l'accès à un dossier ?

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.)


Linux
  1. Comment supprimer un répertoire et un dossier sous Linux ?

  2. Erreur Accès refusé nécessite le privilège PROCESS [MySQL]

  3. Statistiques récursives sur les types de fichiers dans le répertoire ?

  4. git clone sans dossier de projet

  5. sudo -i mais conserve le répertoire de travail actuel

Comment restreindre l'accès au répertoire et aux sous-répertoires sur Nginx

Comment accéder rapidement à un dossier que vous souhaitez ?

Gérer les autorisations de répertoire et de fichier avec chmod Recursive

Linux / Dossier et dossier /racine

PSCP :Télécharger un dossier entier, Windows vers Linux

Mon DBA Oracle a-t-il besoin d'un accès root ?