Para fins de operação normal, somente root e o proprietário podem chmod
. Além disso, o root pode chown
e chgrp
e, além disso, o proprietário pode chgrp
, desde que o proprietário seja um membro do grupo-alvo.
Por motivos de segurança, há outro caso: qualquer usuário com permissão de gravação para o diretório que contém o arquivo pode substituir o arquivo por uma cópia e, assim, tornar-se o proprietário, obtendo a capacidade de modificar as permissões e o conteúdo.
Assim:
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
Criamos um diretório e escrevemos um arquivo como root. Como a raiz é proprietária do arquivo, não podemos escrevê-lo, nem podemos 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
No entanto, temos permissão de gravação no diretório, para que possamos substituir o arquivo para obter a propriedade:
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 agora que somos o proprietário, podemos, claro, fazer o que quisermos com esse arquivo:
14:15 mybox:mydir echo bar > yourfile
14:15 mybox:mydir chmod a+x yourfile
14:16 mybox:mydir cat yourfile
bar
Da mesma forma, qualquer usuário com permissão de gravação para qualquer diretório qualquer no caminho completo que leva ao arquivo pode substituir a estrutura de diretório daquele ponto em diante, ganhando assim a propriedade do arquivo com o nome fornecido. A propriedade ou as permissões do arquivo original real (que renomeamos para "yourfile2") não são alteradas, é claro.
14:17 mybox:mydir ls -l yourfile2
-rw-r--r-- 1 root staff 4 Apr 11 14:14 yourfile2