Як створити файл, навіть користувач root не може його видалити


13

Як створити файл, навіть користувач root не може його видалити?


9
Хоча відповідь танте повинен охоплювати ваше запитання, один мета-коментар до нього: Було б набагато простіше відповісти, якби ви додали своє обґрунтування до свого питання. Можливо, існує вирішення вашої проблеми, яка не полягає у запобіганні видалення файлів?
fschmitt

Відповіді:


33

Проста відповідь: Ви не можете, root може все.

Ви можете встановити атрибут "i" за допомогою chattr (принаймні, якщо у вас є ext {2,3,4}), що робить файл незмінним, але root може просто скасувати атрибут та видалити файл у будь-якому випадку.

Більш складний (і некрасивий хакітський спосіб вирішення): Покладіть каталог, який ви хочете незмінити для root, на віддалений сервер і змонтуйте його через NFS або SMB. Якщо сервер не пропонує дозволу на запис, що блокує локальний кореневий рахунок. Звичайно, локальний кореневий обліковий запис може просто скопіювати файли локально, відключити віддалений матеріал, поставити копію на місце та змінити це.

Ви не можете заблокувати корінь від видалення файлів. Якщо ви не можете довіряти вашому root, щоб зберегти файли недоторканими, у вас виникає соціальна проблема, а не технічна.


Це запитання мені задає інтерв'юер. Я не знаю відповіді. Я попросив його відповіді. Він сказав, що це можливо, і знайти рішення самостійно.
Кумар

12
колись ти теж станеш інтерв'юером і зможеш задати власні безглузді запитання: "чи можна створити файл настільки великий, що він не може mv?" (який жартівливий жарт на основі християнської теософії та страшний жарт, якщо ви не знайомі з полем)
msw

5
@msw: Можна стверджувати, що це жахливий жарт, навіть якщо ви знайомі з полем.
Меттью Крамлі

@matthew crumley: винні, як звинувачували :)
msw

@msw: Я щойно помітив, що ти навіть визнав, що це кульгавий жарт. І FWIW, мені подобаються (деякі) кульгаві жарти, тому мені це справді сподобалось. Це стає досить далеко від теми :)
Меттью Крамлі,

34

Покладіть його на компакт-диск! ;)

(це має бути коментар, але я не можу робити коментарі ...)


Існує сенс за межею репутації коментарів ;-) Просто невеликий порив, що провокує думку. полум'я не призначене ;-)
відлуння

6
+1 Але це спрацювало б.
Річард Холлоуей

1
Це та відповідь @mouviciel - єдине правильне рішення. Навіть всемогутній @root все ще пов'язаний правилами, встановленими апаратними засобами.
Лі Лі Райан

15

Помістіть свій файл у файлову систему, що лише читається. Це може бути віддалений FS, де root більше не є кореневим, компакт-диск чи знімний пристрій, який може бути захищений від запису, наприклад, SD-карта.


2

Давно я написав патч ядра (до 2.2.ancient), де спроба видалити файл під назвою SELFDESTRUCT вбила процес виклику. Це захищало від випадкового "rm -rf *".


давно і далеко. Як ви насправді це зробили (команди)?
Майкл Дюрант

1

Ви можете використовувати chattr +iфайл, щоб зробити непорушним файл.

Звичайно, кмітливий користувач із кореневим доступом все-таки може використати chattr -iдля видалення незмінного атрибута, а потім видалити файл, але вони також можуть скасувати будь-яку іншу спробу блокувати доступ, вказаний тут.

Я б стверджував, що chattr - це правильний спосіб Unix зробити це.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.