Je faisais donc un peu de 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 la suivante: comment ai-je pu supprimer un fichier appartenant à root et disposant d'autorisations -rw-r--r--
, alors que je ne suis pas root?
linux
security
permissions
Carl Bennett
la source
la source
Réponses:
Les autorisations, le contenu et tous les attributs font partie de l'inode. Le nom est dans l'entrée du répertoire. Les autorisations ne sont pas héritées de manière récursive (sauf lorsque vous utilisez des ACL par défaut dans Posix).
Lorsque vous supprimez un fichier, vous supprimez en interne un lien physique de l’entrée du 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érera 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.
la source
sudo touch test_file;sudo chattr +i test_file;rm -f test_file
voir:man chattr
Lorsque vous êtes propriétaire du répertoire, vous êtes autorisé à y faire quoi que ce soit et son contenu en fonction des autorisations du répertoire. Par conséquent, même si 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.
la source
vi
fichier est d'abord sauvegardé dans une copie temporaire, puis il supprime le fichier d'origine et renomme la copie en original (ou quelque chose comme ça).