Для нормальной работы только root и владелец могут chmod
. Кроме того, root может chown
и chgrp
, и, кроме того, владелец может chgrp
, если владелец является членом целевой группы.
В целях безопасности существует еще один случай, хотя :любой пользователь с разрешением на запись в каталог, содержащий файл, может заменить файл копией и, таким образом, стать владельцем, получив возможность изменять разрешения и содержимое.
Вот так:
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
Мы создали каталог и записали файл как root. Так как root владеет файлом, мы не можем ни писать в него, ни 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
Однако у нас есть разрешение на запись в каталог, поэтому мы можем заменить файл, чтобы получить право собственности:
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
И теперь, когда мы являемся владельцами, мы, конечно, можем делать с этим файлом все, что захотим:
14:15 mybox:mydir echo bar > yourfile
14:15 mybox:mydir chmod a+x yourfile
14:16 mybox:mydir cat yourfile
bar
Точно так же любой пользователь с разрешением на запись в любой каталог в полном пути, ведущем к файлу, может изменить структуру каталога с этого момента, таким образом получив право собственности на файл с данным именем. Владелец или права доступа к фактическому исходному файлу (, который мы переименовали в «yourfile2» ), конечно же, не изменились.
14:17 mybox:mydir ls -l yourfile2
-rw-r--r-- 1 root staff 4 Apr 11 14:14 yourfile2