Назад | Перейти на главную страницу

Кто может удалить файл?

Я создал файл, сделал для него команду chmod 000, а затем сменил владельца и группу на root: root. Я все еще смог удалить файл как его первоначальный создатель (не root).

У кого есть разрешение на удаление файла?

Разрешения содержащего каталог определить возможность переименовывать и удалять файлы.

В частности, чтобы удалить / переименовать файл, пользователю необходимо иметь записывать и выполнять (т.е. прохождение) разрешений на содержащий каталог, и рассматриваемый файл должен не быть неизменным. (В этих обстоятельствах непривилегированный пользователь может даже удалить файлы, принадлежащие пользователю root.)

Ограниченное удаление:

Можно ограничить удаление файлов только владельцем файлов (и привилегированными пользователями), установив «липкий бит» (также известный как «флаг ограниченного удаления») в содержащем каталоге, используя: chmod +t directory. Каталог с установленным липким битом отображает 't' в последней позиции (например, drwxr-xr-t) - это также можно установить в восьмеричной форме, добавив к трехзначному восьмеричному коду префикса '1' (например, chmod 1755 directory). (Linux игнорирует липкий бит в файлах - хотя некоторые другие операционные системы придают ему значение.)

Разрешения на чтение:

Вы должны отметить, что разрешение на чтение в содержащем каталоге не требуется. Без него вы все равно сможете удалить файл, если знаете его имя, хотя вы не сможете «читать» содержимое каталога (например, без разрешений на чтение вы не можете запустить ls).

Неизменяемые файлы:

В качестве дополнительной точки, сделав файл неизменяемым (т.е. chattr +i) ни владелец, ни другие пользователи (включая привилегированных пользователей) не смогут удалить (или переименовать, связать или изменить) файл, даже если у них есть права на запись в каталог (только суперпользователь может удалить это).

Владелец папки, в которой находится файл, сможет, если у него есть права на запись в папку, удалить файл, даже если его маска равна 000 или файл принадлежит другому пользователю. если ты действительно хотите создать файл, который никто не может коснуться / удалить, вы должны изучить команду chattr и его неизменный флаг.

Из документация:

Файл с атрибутом i не может быть изменен: его нельзя удалить или переименовать, нельзя создать ссылку на этот файл, и в файл нельзя записать данные. Только суперпользователь или процесс, обладающий CAP_LINUX_IMMUTABLE Возможность может установить или сбросить этот атрибут.