Из поста Почему rm может удалять файлы только для чтения? Я понимаю, что rm
просто нужно разрешение на запись в каталог, чтобы удалить файл. Но мне трудно переварить поведение, когда мы можем легко удалить файл, владелец и группа которого отличаются.
Я попробовал следующее
MTK: мое имя пользователя
ABC: создал нового пользователя
$ ls -l file
-rw-rw-r-- 1 mtk mtk 0 Aug 31 15:40 file
$ sudo chown abc file
$ sudo chgrp abc file
$ ls -l file
-rw-rw-r-- 1 abc abc 0 Aug 31 15:40 file
$ rm file
$ ls -l file
<deleted>
Я думал, что это не должно было быть позволено. Пользователь должен иметь возможность удалять только файлы, находящиеся в его собственности? Может кто-то пролить свет на то, почему это разрешено? и как этого избежать? Я могу думать только об ограничении разрешения записи родительского каталога, чтобы запретить неожиданное удаление файла.
источник
-rw-rw-rw- 1 root root 0 Sep 1 11:11 /tmp/foo
как своего обычного пользователя («/tmp
липкий»), потому что мне разрешено это писать? Все же я не могу.me
/you
становится более ясным, если вы предположите, что пользователь (тот, кто не владеет файлом) создал ссылку. Местоимения трудно использовать; допустим, Ал создает/home/al/file1
, а Боб, у которого есть доступ для выполнения (и, возможно, чтения)/home/al
, жестко связывает файл/home/bob/als_file
. Если Боб не допускать удаления ссылки , что он создал? И следует ли разрешить Al удалять (отменять связь),/home/bob/als_file
когда у него нет прав на запись/home/bob
? Эта дорога ведет к хаосу.Чтобы удалить файл, вам просто нужно иметь возможность записать в каталог, в котором находится файл.
Если вам это не нравится, вы можете установить «липкий» бит,
chmod +t dir
если вы используете половинную ОС (эта функция была введена в 1986 году в SunOS).Если вы хотите быть более детализированными, вам нужна файловая система с современной реализацией ACL, такой как ZFS. Стандартные списки ACL для NFSv4, основанные на NTFS, включают в себя поддержку разрешений на удаление файлов для каждого пользователя и разрешение «delete_child» для каталогов.
источник
t
бита вам необходимо иметь каталог. И если у вас есть каталог, вы всегда можете удалить файлы независимо от того, установленt
бит или нет. Если вы свяжете файл с чьим-либо другим каталогом, вы должны быть готовы к тому, что кто-то другой сможет его удалить. В качестве альтернативы можно было бы сначала создать свой подкаталог и вместо этого добавить туда свой файл, поскольку владелец не сможет удалить этот подкаталог, если он не пустой.rm
является операцией над каталогом, а не над файлом. Файл удаляется при удалении последней ссылки на него, но технически это побочный эффект.Логика аналогична логике дома: владелец или арендатор решает, кого из гостей выбрасывать, независимо от того, кому принадлежат гости. Кроме того, выселенный гость, которого можно встретить в другом доме (имеет другую жесткую ссылку в чужом каталоге), не замерзнет на улице.
источник