Pourquoi `rm` peut supprimer des fichier en lecture seule ?

Traduit grossièrement de l’anglais :

rm a seulement besoin des permissions d’écriture et d’exécution sur le répertoire parent. Les permissions du fichier lui-même ne sont pas importantes.

Toute tentative d’accès aux données d’un fichier nécessite une autorisation de lecture. Toute tentative de modification des données d’un fichier nécessite une autorisation d’écriture. Toute tentative d’exécution d’un fichier (un programme ou un script) nécessite l’autorisation d’exécution…

Comme les répertoires ne sont pas utilisés de la même manière que les fichiers ordinaires, les autorisations fonctionnent légèrement (mais seulement légèrement) différemment. Une tentative de lister les fichiers d’un répertoire nécessite une autorisation de lecture pour le répertoire, mais pas pour les fichiers qu’il contient. Une tentative d’ajout d’un fichier à un répertoire, de suppression d’un fichier d’un répertoire ou de renommage d’un fichier nécessite l’autorisation d’écriture pour le répertoire, mais (ce qui peut surprendre) pas pour les fichiers qu’il contient. L’autorisation d’exécution ne s’applique pas aux répertoires (un répertoire ne peut pas être un programme). Mais celui-ci est réutilisé pour les répertoires à d’autres fins.

L’autorisation d’exécution est nécessaire sur un répertoire pour pouvoir y accéder (c’est-à-dire pour faire d’un répertoire donné votre répertoire de travail actuel).

L’autorisation d’éxécution est nécessaire sur un répertoire pour accéder aux informations « inode » des fichiers qu’il contient. Vous en avez besoin pour rechercher un répertoire et lire les inodes des fichiers qu’il contient. C’est pourquoi l’autorisation d’exécution sur un répertoire est souvent appelée autorisation de recherche.

StackOverflow – ire_and_curses