web-dev-qa-db-fr.com

Pourquoi ai-je pu supprimer un fichier appartenant à root dans mon répertoire personnel sans être root?

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:

[[email protected] ~/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
[[email protected] ~/temp]$ Sudo touch file-owned-by-root
[[email protected] ~/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
[[email protected] ~/temp]$ rm file-owned-by-root
rm: remove write-protected regular empty file ‘file-owned-by-root’? y
[[email protected] ~/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
[[email protected] ~/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?

41
Carl Bennett

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.

35
Mircea Vutcovici

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.

19
inetknght