Можно ли создать зашифрованный контейнер, не требующий пароля для записи?

В качестве альтернативы без проблем с пробелами (POSIX):

$ sed -n '$=' ~/myfile.txt

Захвачено в переменной:

$ nl=$(sed -n '$=' ~/myfile.txt)
$ echo "1-$nl-"
1-100-

Обратите внимание, что sed считает последнюю строку, даже если она не заканчивается символом новой строки (, как это должно быть в правильно отформатированном текстовом файле ). В более общем случае sed может не напечатать количество символов новой строки в текстовых файлах, отличных от -.


Другой вариант:

$ nl=$(grep -v. ~/myfile.txt | tr '\n' 'x')
$ echo "1-${#nl}"
1-100

Обратите внимание, что grep также будет печатать недопустимые символы (в дополнение к символам новой строки )в используемой локали.

0
25.12.2020, 04:09
1 ответ

Контейнер защищает внешнюю часть контейнера изнутри. Он не защищает внутреннюю часть контейнера от внешней среды. Если вы хотите, чтобы пользователь Алиса не мог получить доступ к данным пользователя Боба, у Алисы не должно быть привилегированного доступа к хосту. Это означает, что у Алисы не должно быть доступа root («sudo» )к хост-компьютеру, и что она не должна физически контролировать хост-компьютер (, если она физически находится перед ним, должны быть каким-то образом помешать ей делать такие вещи, как извлечение жесткого диска ).

Если Алиса имеет доступ только на уровне пользователя -к хост-компьютеру, обычных разрешений Unix достаточно для защиты данных Боба. Просто дайте каждому отдельный аккаунт. Контейнеры и шифрование не имеют значения.

Если у Алисы есть привилегированный доступ к хост-компьютеру, контейнеры и шифрование вам не помогут, поскольку Алиса может сделать все, что может сделать Боб, включая чтение данных Боба. Неважно, как Боб получает доступ к своим данным :, поскольку Алиса имеет привилегированный доступ, она тоже может это сделать.

Похоже, вы хотите, чтобы пользователи могли использовать клиентские машины (с одним пользователем, использующим каждую машину одновременно )и не видеть данные других пользователей. Так что не храните их данные локально :храните их на каком-то центральном сервере. Контейнеры бесполезны для этого с точки зрения безопасности, но они могут упростить развертывание (, что в любом случае является основной мотивацией для контейнеров ). Шифрование не особенно полезно, но если вы ничего не храните локально, кроме временных файлов, которые не переживут сессию пользователя,вы можете получить некоторую выгоду от шифрования. Создайте два раздела :системный раздел и раздел данных. Монтируйте системный раздел только для чтения -, за исключением случаев, когда выполняется обновление. Зашифруйте раздел данных случайно -сгенерированным ключом, который повторно -создается в начале каждого сеанса (или во время загрузки, и перезагружайте машину, когда пользователь выходит из системы ).

1
18.03.2021, 22:40

Теги

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