Aux fins d'un fonctionnement normal, seuls root et le propriétaire peuvent chmod
. En outre, root peut chown
etchgrp
, et en outre, le propriétaire peut chgrp
aussi longtemps que le propriétaire est membre du groupe cible.
Pour des raisons de sécurité, il existe cependant un autre cas: tout utilisateur disposant d'une autorisation d'écriture dans le répertoire contenant le fichier peut remplacer le fichier par une copie et devenir ainsi le propriétaire, ce qui lui permet de modifier les autorisations et le contenu.
Ainsi:
14:14 mybox:~ mkdir mydir
14:14 mybox:~ cd mydir/
14:14 mybox:mydir echo foo | sudo tee yourfile
foo
14:14 mybox:mydir ls -ld . yourfile
drwxr-xr-x 3 me staff 102 Apr 11 14:14 .
-rw-r--r-- 1 root staff 4 Apr 11 14:14 yourfile
Nous avons créé un répertoire et écrit un fichier en tant que root. Étant donné que root possède le fichier, nous ne pouvons pas y écrire, ni chmod:
14:15 mybox:mydir echo bar > yourfile
-bash: yourfile: Permission denied
14:15 mybox:mydir chmod a+x yourfile
chmod: Unable to change file mode on yourfile: Operation not permitted
Cependant, nous avons une autorisation d'écriture sur le répertoire, nous pouvons donc remplacer le fichier pour en devenir propriétaire:
14:15 mybox:mydir mv yourfile yourfile2
14:15 mybox:mydir cp yourfile2 yourfile
14:15 mybox:mydir ls -ld . yourfile
drwxr-xr-x 4 me staff 136 Apr 11 14:15 .
-rw-r--r-- 1 me staff 4 Apr 11 14:15 yourfile
Et maintenant que nous sommes le propriétaire, nous pouvons bien sûr faire ce que nous voulons avec ce fichier:
14:15 mybox:mydir echo bar > yourfile
14:15 mybox:mydir chmod a+x yourfile
14:16 mybox:mydir cat yourfile
bar
De même, tout utilisateur disposant d'une autorisation d'écriture sur n'importe quel répertoire du chemin complet menant au fichier peut remplacer la structure du répertoire à partir de ce moment, obtenant ainsi la propriété du fichier avec le nom donné. La propriété ou les autorisations du fichier d'origine réel (que nous avons renommé «votrefichier2») ne sont bien sûr pas modifiées.
14:17 mybox:mydir ls -l yourfile2
-rw-r--r-- 1 root staff 4 Apr 11 14:14 yourfile2