Автоматическое монтирование cryfs при запуске

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

(
  case $dir in
    (/*) CDPATH= cd -P "$dir";;
    ("") CDPATH= cd -P "";;
    (*) CDPATH= cd -P "./$dir";;
  esac && pwd -P
)

Здесь дословно скопировано из этого текста для включения в следующую редакцию спецификации POSIX .

Как отмечалось там, для случая ""вы можете захотеть вывести ошибку вместо того, чтобы полагаться на неопределенное в настоящее время поведение cdили записать его:

(
  case "${dir:?directory cannot be empty}" in
    (/*) CDPATH= cd -P "$dir";;
    (*) CDPATH= cd -P "./$dir";;
  esac && pwd -P
)

Обратите внимание, что префикс $dirс ./, когда он не является абсолютным, не так важен для $dir, который не следует рассматривать как вариант, когда он начинается с -(, для которого CDPATH= cd -P -- "${dir:?cannot be empty}"было бы достаточно ). ], но для специального значения -, вместо которого cdинтерпретируется как означающее $OLDPWD, предыдущий рабочий каталогCDPATH= OLDPWD=- cd -P -- "${dir:?cannot be empty}"не может быть использован переносимым образом для его обхода ).

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

$ mkdir 1
$ cd 1
$ rmdir../1
$ cd -P.
$ ls -ld.
drwxr-xr-x 0 chazelas chazelas 0 Mar 27 06:53./
$ [ -d. ] && echo yes
yes

Все еще там, но:

$ pwd -P
.
$ realpath.
realpath:.: No such file or directory
$ readlink -ve.
readlink:.: No such file or directory

У него нет пути в файловой системе.

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

0
17.12.2019, 18:35
3 ответа

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

0
28.01.2020, 03:00

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

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

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

eCryptfs может монтироваться автоматически -, если пароль пользователя совпадает с выбранным паролем eCryptfs. Дополнительную информацию о том, как это сделать, можно найти здесь . Как только вы введете пароль gnome, ваш домашний каталог будет автоматически смонтирован.

0
28.01.2020, 03:00

Извините за некроскоп здесь, но с тех пор, как я начал работать над этим проектом, этот ответ всегда появляется первым. Мне удалось решить эту проблему без риска для безопасности (, насколько я знаю, я не эксперт ), используя следующий метод. Это, конечно, зависит от использования «связки ключей gnome» и основной связки ключей, использующей ваш пароль для входа в систему.

  • установить:libsecret-toolsиexpect

  • в терминале, запустите

    secret-tool store --label="cryfs" cryfs cryfs
    
  • введите cryfsпароль

  • написать первый скрипт (в моем случаеcryfs.sh)

    #!/usr/bin/expect -f
    
    set password [lindex $argv 0];
    
    spawn cryfs ~/Dropbox/cryfs-vault ~/cryfs-source
    expect "Password: "
    send "$password\r"
    expect eof
    
  • написать второй скрипт(autocryfs.sh)

    #!/bin/bash
    
    password=$(/usr/bin/secret-tool lookup cryfs cryfs)
    /path/to/script/cryfs.sh $password
    
  • сделать оба скрипта исполняемыми

    chmod +x /path/to/script/scriptname.sh
    

Наконец, отметьте сценарий для запуска при загрузке (в моем случае -Linux Mint -добавлено в системные настройки> приложения для запуска> добавить> пользовательская команда> имя :Cryfs, команда/path/to/script/autocryfs.sh startup delay: 5

0
22.08.2021, 17:31

Теги

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