Предотвратить несанкционированный доступ на запись к части файловой системы или раздела - PullRequest
1 голос
/ 29 ноября 2011

Привет всем! У меня есть несколько очень важных системных файлов, которые я хочу защитить от случайного удаления даже пользователем root.Я могу создать для этого новый раздел и смонтировать его с доступом только для чтения, но проблема в том, что я хочу, чтобы мое приложение, которое обрабатывает эти системные файлы, имело права на запись в эту часть и могло изменять их.Это возможно с помощью VFS?Поскольку VFS обрабатывает доступ к файлам, я мог бы вставить модуль, вставленный в слой VFS, который может видеть, есть ли доступ на запись к этой части, затем увидеть авторизацию и разрешить ее или иным образом отклонить.Если нет, пожалуйста, дайте мне предложения относительно того, как такая система может быть реализована, что мне нужно в этом случае.Если существует такая система, пожалуйста, сообщите о них.Я использую Linux и хочу реализовать это в C, я думаю, что это было бы возможно только в C.

Редактировать: Есть такие программы, реализованные в Windows, которые могут ограничить доступ даже администратора, для некоторых важныхпапки, это будет возможно в Linux?Мое приложение - это программа резервного копирования и восстановления системы, которая должна хранить информацию о резервном копировании в целости и сохранности.Поэтому я хотел бы иметь защищенную часть раздела, которая не может быть случайно удалена.Существуют методы блокировки флэш-накопителя. Можем ли мы использовать некоторые из этих методов для блокировки раздела в Linux?так что крепление защищено паролем?Я не пишу вирусное приложение, мое приложение предоставит пользователю возможность удалять резервные копии, но я не хочу, чтобы они были удалены любым другим приложением.Редактировать: я пишу программу восстановления системы и резервного копирования для Ubuntu, я студент компьютерных технологий.

Редактировать: Поскольку у меня есть мнение от Бэзил Старынкевич, что я совершу худший грех программирования, если я сделаю что-то подобное, но вы могли бы дать мне предложения, рассматривая это как экспериментальный проект, я мог бы внести некоторые измененияв слое VFS, чтобы это могло работать.

Ответы [ 3 ]

2 голосов
/ 29 ноября 2011

Вы можете использовать chattr , например,

chattr +i yourfile

Но я не думаю, что это хорошая вещь.Люди, использующие доступ root, должны быть осторожны.Те, у кого есть доступ с правами root, могут по-прежнему выдавать команду, отменяющую вышеуказанное.

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

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

По определению root в Linux он может делать все что угодно... Вы не сможете запретить ему стирать или изменять данные ... Люди с доступом root могут записывать произвольные байты в произвольных местах на диске.

И на машине, которой я владею(или, возможно, просто физический доступ), я, слава Богу, всегда смогу удалить файл (даже под Windows: я мог бы, например, загрузить компакт-диск с Linux и удалить файл из Linux с доступом к NTFS, а затем перезагрузитьWindows ...).

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

ФИЛОСОФСКИЙ РАНТ

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

И системные администраторы Unix понимают этот факт: это часть их культуры.(Это, вероятно, противоречит культуре администрирования Windows).Они знают, когда следует соблюдать осторожность, они не ожидают, что программное обеспечение предотвратит ошибки с правами root.

1 голос
/ 29 ноября 2011

Похоже, вы пытаетесь написать вирус.

Без сомнения, вы не согласны.

Но я готов поспорить, что бедные люди, которые устанавливают ваше программное обеспечение, будут чувствовать, что это вирус, потому что он будет вести себя как вирус, делая себя трудным для удаления.

Достаточно просто установить флаги r / w для всего остального.

1 голос
/ 29 ноября 2011

Чтобы использовать сжатие root (что делает его недоступным даже для локального пользователя), вы можете настроить локальный nfs. На этой странице форума объясняется, как монтировать nfs локально. Команда:

mount -t nfs nameofcomputer: / directory_on_that_machine / directory_you_should_have_already_created

У nfs по умолчанию включена квакшинг, что должно решить вашу проблему. Оттуда вы просто убедитесь, что ваша программа хранит свои файлы на монтировании nfs.

...