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

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

У меня есть процесс, которому я хотел бы предоставить доступ к зашифрованной файловой системе. Это очень просто сделать с помощью EncFS, но для этого требуется, чтобы пользователь монтировал зашифрованную файловую систему, поэтому любой пользователь, имеющий доступ к монтируемому пользователю, получает доступ к данным, например, root.

Возможно ли, чтобы процесс монтировал файловую систему так, чтобы только он имел доступ к данным? Если нет, есть ли другой способ запретить тем, кто не знает пароль, получить доступ к данным?

решение1

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

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


Пример

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

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


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

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

решение2

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

Невозможно сделать данные недоступными для root. По определению root всемогущ и имеет доступ ко всему. Вы не можете помешать root получить доступ к файлам, как не можете помешать Богу/Санте/вашим родителям/…¹ узнать, что вы делали вчера вечером. Если вы не доверяете пользователю, не давайте ему привилегию запускать команды от имени root.

¹ Выберите подходящий вариант.

решение3

Ну, согласно этому вопросу и ответу под названием:encfs с ожидаемым отказом в доступепохоже, что даже root не может получить доступ к EncFS, если монтирование выполнил определенный пользователь.

выдержка

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

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

Только пользователь, смонтировавший cr, сможет прочитать содержимое mn. Даже root не сможет.

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

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

Связанный контент