Ai fini del normale funzionamento, solo root e il proprietario possono farlo chmod
. Inoltre, root può chown
e chgrp
, e inoltre, il proprietario può chgrp
fintanto che il proprietario è un membro del gruppo target.
Per motivi di sicurezza, esiste un altro caso: qualsiasi utente con autorizzazione in scrittura alla directory contenente il file può sostituire il file con una copia e quindi diventare il proprietario, acquisendo la possibilità di modificare autorizzazioni e contenuti.
Così:
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
Abbiamo creato una directory e scritto un file come root. Poiché root possiede il file, non possiamo scrivere su di esso, né possiamo 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
Tuttavia, abbiamo l'autorizzazione di scrittura per la directory, quindi possiamo sostituire il file per ottenere la proprietà:
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
E ora che siamo il proprietario, possiamo ovviamente fare quello che vogliamo con quel file:
14:15 mybox:mydir echo bar > yourfile
14:15 mybox:mydir chmod a+x yourfile
14:16 mybox:mydir cat yourfile
bar
Allo stesso modo, qualsiasi utente con autorizzazione in scrittura a qualsiasi directory nel percorso completo che porta al file può sostituire la struttura della directory da quel punto in poi, acquisendo così la proprietà del file con il nome specificato. La proprietà o le autorizzazioni del file originale effettivo (che abbiamo rinominato in "yourfile2") non sono cambiate, ovviamente.
14:17 mybox:mydir ls -l yourfile2
-rw-r--r-- 1 root staff 4 Apr 11 14:14 yourfile2