Там какой-либо путь состоит в том, чтобы предотвратить удаление определенных файлов из пользовательского каталога?

Во всех системах Unix, что я видел, что это совпадает с синглом /, но стандарт Unix указывает это

Путь, который начинается с двух последовательных наклонных черт, может быть интерпретирован определенным реализацией способом, хотя больше чем две ведущих наклонных черты нужно рассматривать как единственную наклонную черту.

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

43
06.09.2011, 02:30
4 ответа

(Мне не нравится внедрять дом пользователей, я думаю, что им нужно позволить сделать независимо от того, что они хотят сделать с, они размещают …, но так или иначе …),

Это должно работать над Linux (по крайней мере). Я принимаю user уже член группы user. Решение состоит в том, чтобы изменить владение Directory1 и набор липкий бит на каталоге:

chown root:user Directory1
chmod 1775 Directory1

Затем использование:

chown root Directory1/CantBeDeletedFile

Теперь, user не сможет удалить этот файл из-за липкого бита ¹. user все еще может добавить/удалить их собственные файлы в Directory1. Но заметьте, что они не смогут удалить Directory1 потому что это никогда не будет освобождаться.


1. Когда липкий бит включен на каталоге, пользователи (кроме владельца) могут только удалить свои собственные файлы в каталоге. Это используется на каталогах как /tmp чьи полномочия 1777=rwxrwxrwt.

41
27.01.2020, 19:35
  • 1
    , который я не люблю также, но пользователи являются новичками к миру Linux. ЕСЛИ они удаляют средство запуска по совпадению, они начинают массово рассылать нашу техническую поддержку :) –  bakytn 05.09.2011, 10:30
  • 2
    Благодарность, это работает! Не уверенный, как я продолжу двигаться. С болтовней или этим путем. Если делают на Вашем пути. Я все еще могу удалить Каталог как корень. С верхним решением (болтовня) даже базируются, не может удалить папку. –  bakytn 05.09.2011, 10:39
  • 3
    @bakytn: это - просто предосторожность, или Вы на самом деле получили обращение за поддержкой? Поскольку большинство новичков, вероятно, будет также бояться смешивать с файлами, они не знают. –  Lie Ryan 06.09.2011, 08:08
  • 4
    @Lie Ryan, уверенных, что они призвали бы к поддержке. Но да, в настоящее время это - просто предосторожность. –  bakytn 08.09.2011, 21:40
  • 5
    Рано или поздно учебные колеса должны оторваться... и если они не учились ездить на велосипеде, несчастный случай будет чем-то для созерцания. Я соглашаюсь с ответом, вероятно, добавился, withcopious онлайн помогают и консервированный спам, "Если Вы 'случайно' удалили ThisDesktopFile, сначала перейдите к ближайшей стене и ударьте головой трудно о нее 3 раза (для удачи) и затем сделайте cp /here/is/the/master/ThisDesktopFile $HOME. Подписанный: BOfH" –  vonbrand 24.01.2013, 02:39

Сделайте файл неизменным с i атрибут.

chattr +i file.desktop

посмотрите man chattr для получения дополнительной информации.

63
27.01.2020, 19:35
  • 1
    я добавляю это примечание, когда я не мог вывести его из упомянутой страницы справочника: chattr только работы над ext2/ext3/ext4 файловыми системами. –  manatwork 05.09.2011, 10:17
  • 2
    Это настолько прохладно! Это работало! Спасибо сэр! Изящное решение, но одно ограничение. Даже корень не может удалить те файлы без первого создания его изменяемый. Но это настолько прохладно на самом деле. Не было уверено, которые отвечают для принятия. Принятый больше универсального пути, но менее быстрый –  bakytn 05.09.2011, 10:42
  • 3
    @manatwork это также работает над XFS, по крайней мере, я предположил бы, что некоторые другие файловые системы также поддерживают эти атрибуты. –  Ruslan 17.03.2017, 09:04
  • 4
    Для 'отменения' этой команды просто сделайте chattr -i file.desktop –  GreenRaccoon23 20.04.2017, 08:02

Я не думаю, что существует способ предотвратить удаление отдельного файла с полномочиями файла Unix, но я могу думать об обходном решении: запишите демону, который заменяет его, когда это удалено. inotify-tools идеально подходит для этого вида вещи, если Вы находитесь на Linux.

Существует несколько способов, которыми можно заменить удаленный объект: скопируйте новый на месте, или сохраните реальный файл в безопасном месте и просто скопируйте ссылку в каталог пользователя. Для ссылки можно или использовать символьную ссылку или жесткую ссылку. Я запустил бы с символьной ссылки, но немного (очень немного) программы не обрабатывают символьные ссылки правильно. Если Вы находите, что пользователь встречается с программой как это, используйте жесткую ссылку вместо этого.

2
27.01.2020, 19:35

Простой

chmod -i filename

как бы «защитит» этот файл от удаления.

rm filename
rm: remove write-protected regular file 'filename'?

Вы все еще можете удалить его, но, по крайней мере, вы должны быть достаточно уверены в том, что делаете.

0
20.08.2021, 13:33

Теги

Похожие вопросы