Используйте EncFS для шифрования файлов так, чтобы конкретный пользователь или процесс могли получить доступ к ним, но корень не может

Linux отдельно не очень полезен, потому что нет никаких приложений: это - просто ядро. На самом деле, когда ядро заканчивает загружаться, первая вещь, которую оно делает, запускают названное приложение init. Если то приложение не там, Вы получаете большое сообщение об ошибке, и Вы ничего не можете сделать с it*.

Дистрибутивы так называют, потому что они распределяют ядро Linux наряду с рядом приложений.

Аналогично, утилиты GNU собой не полезны без ядра. Вы могли поместить их на носитель и включить компьютер, но нет ничего там для запущения тех программ. Кроме того, даже если было что-то, что запустилось init, init и все другие программы полагаются на ядро для сервисов. Например, первая вещь, что программа, которую обычно называют init делает открыть файл /etc/inittab; для открытия того файла это вызывает функцию open(); та функция обеспечивается ядром.

Теперь, можно создать распределение, которое имеет не (или немногие) приложения GNU. См. альпийский Linux для примера. Поэтому я не называю Linux GNU/Linux; когда я говорю, что Linux, не обращаюсь к подмножеству систем Linux, которые имеют утилиты GNU.

*Технически, существуют некоторые вещи, которые можно сделать только с ядром.

4
09.10.2013, 04:34
3 ответа

То, что сказал Gilles, корректно, Вы не можете препятствовать тому, чтобы корень получил доступ к монтированию. Это не может получать доступ к монтированию непосредственно (без предохранителя allow_other опция), но это может всегда переключаться на того пользователя.

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


Пример

encfs /enc/source /enc/target
( cd /enc/target && some_long_running_process) &
fusermount -uz /enc/target

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


Обратите внимание, что существует краткое окно, где точка монтирования доступна, в котором что-то еще может изменить каталог в него, но окно является очень маленьким, если задано сценарием.

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

3
27.01.2020, 20:51
  • 1
    Это точно, в чем я нуждаюсь. Простой и эффективный, в моих целях.Спасибо! –  Jomasi 09.10.2013, 21:03

Только монтирующийся пользователь может получить доступ к encfs файловой системе. Даже процессы, работающие как корень, добираются, “разрешение отклонило” ошибку; конечно, они могут переключиться на монтирующегося пользователя и затем получить доступ к данным.

Невозможно сделать данные недоступными корню. По определению корень всесилен и имеет доступ ко всему. Вы больше не можете препятствовать тому, чтобы корень получил доступ к файлам, чем можно предотвратить родителей God/Santa/your / … ¹ от знания, что Вы сделали вчера ночью. Если Вы не доверяете пользователю, не давайте им полномочие командам выполнения как корень.

¹ Выбор, какой бы ни применимо.

2
27.01.2020, 20:51

Хорошо согласно этому названные Вопросы и ответы: encfs с ожидают доступ запрещен, он кажется, что даже корень не может получить доступ к EncFS, если конкретный пользователь сделал монтирование.

выборка

Но похоже на использование обычного пользователя для монтирования зашифрованного каталога, и затем Вы пытаетесь видеть смонтированные файлы с корнем с помощью sudo. Это не будет работать и является смыслом encfs.

В Вашем примере каталог cr является устройством хранения данных, используемым encfs. Содержание этого не является никаким большим секретом, это - зашифрованные данные. Вы монтируете эти данные по млн, так, чтобы Вы видели его содержание человекочитаемым способом как файлы менее чем млн.

Только пользователь, который монтирует cr, сможет считать то, что является внутренними млн. Даже корень не может.

Но большему количеству опытного пользователя, нет ничего сохраняющего корень от просто выполнения a su - <user> и становление тем пользователем, так, чтобы они могли получить доступ к смонтированной доле EncFS.

Как много раз говорился на этом сайте, нет ничего, что можно сделать, чтобы мешать корню получить доступ к чему-либо, что это локально для системы. Это, как система работает. То же может быть сказано для Администратора в Windows System.

2
27.01.2020, 20:51
  • 1
    я смог получить доступ к каталогу путем выполнения "su <пользователь>" от корня. –  Jomasi 09.10.2013, 04:19
  • 2
    Да нет ничего, что можно сделать для остановки этого. Но пользователь root или любой другой пользователь не должны мочь получить доступ к смонтированному каталогу. Я понимаю, что мы крохоборствуем, но это действительно блокирует доступ, как я заявил. –  slm♦ 09.10.2013, 04:38

Теги

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