Donc, je faisais de la maintenance sur mon serveur plus tôt dans la journée et j'ai remarqué que je pouvais supprimer un fichier appartenant à root dans mon répertoire personnel.
J'ai pu reproduire un échantillon:
[cbennett@nova ~/temp]$ ls -al
total 8
drwxrwxr-x. 2 cbennett cbennett 4096 Oct 5 20:59 .
drwxr-xr-x. 22 cbennett cbennett 4096 Oct 5 20:58 ..
-rw-rw-r--. 1 cbennett cbennett 0 Oct 5 20:58 my-own-file
[cbennett@nova ~/temp]$ Sudo touch file-owned-by-root
[cbennett@nova ~/temp]$ ls -al
total 8
drwxrwxr-x. 2 cbennett cbennett 4096 Oct 5 21:00 .
drwxr-xr-x. 22 cbennett cbennett 4096 Oct 5 20:58 ..
-rw-r--r--. 1 root root 0 Oct 5 21:00 file-owned-by-root
-rw-rw-r--. 1 cbennett cbennett 0 Oct 5 20:58 my-own-file
[cbennett@nova ~/temp]$ rm file-owned-by-root
rm: remove write-protected regular empty file ‘file-owned-by-root’? y
[cbennett@nova ~/temp]$ ls -al
total 8
drwxrwxr-x. 2 cbennett cbennett 4096 Oct 5 21:00 .
drwxr-xr-x. 22 cbennett cbennett 4096 Oct 5 20:58 ..
-rw-rw-r--. 1 cbennett cbennett 0 Oct 5 20:58 my-own-file
[cbennett@nova ~/temp]$
Ma question est de savoir comment j'ai pu supprimer un fichier appartenant à root et disposant des autorisations -rw-r--r--
, alors que je ne suis pas root?
Les autorisations, le contenu et tous les attributs font partie de l'inode. Le nom est dans l'entrée de répertoire. Les autorisations ne sont pas héritées récursivement (sauf lorsque vous utilisez la valeur par défaut dans les listes de contrôle d'accès Posix).
Lorsque vous supprimez un fichier, en interne, vous supprimez simplement un lien dur de l'entrée de répertoire vers l'inode. Lorsque tous les liens physiques sont supprimés et que l'inode n'est pas utilisé, le système de fichiers récupère l'espace. Vous n'avez besoin que d'une autorisation d'écriture sur le dossier, quelles que soient les autorisations définies sur le fichier (à l'exception de l'autorisation ext immuable). Idem pour un dossier vide.
Lorsque vous supprimez un dossier qui n'est pas vide, vous devez disposer d'une autorisation d'écriture sur le dossier que vous supprimez et son parent.
Lorsque vous êtes propriétaire du répertoire, vous êtes autorisé à faire quoi que ce soit et à son contenu en fonction des autorisations du répertoire. Par conséquent, bien que vous ne possédiez pas le fichier, vous pouviez toujours le supprimer car vous disposiez d'une autorisation de lecture/écriture sur le répertoire dans lequel le fichier résidait.