2

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

  • Добавление команды монтирования в .login/.profile. Это не работает, потому что эти сценарии выполняются при запуске оболочки, а не при обычном входе пользователя в систему.
  • Добавление LoginHook к com.apple.loginwindow. Это ничего не делает, кроме как замедлить процесс входа в систему. В файлах системного журнала ничего нет, поэтому я не уверен, как это отладить.
  • Я посмотрел на /etc /fstab, но в Mountain Lion этот файл пуст, за исключением предупреждения о том, что этот файл не имеет никакого эффекта, поэтому добавление чего-либо к нему не поможет.

Для тех, кто не знаком с encfs, но знаком с работой над OSX, по сути, мне нужно запустить команду монтирования зашифрованной файловой системы:

echo password | encfs -S encrypted_dir mount_point

Любая помощь на всех приветствуется.

2 ответа2

3

Правильный способ сделать это - создать сервис launchctl. У вас не будет никаких окон терминала, открытых при входе в систему.

Создайте скрипт /usr/local/bin/encfs-mount для загрузки encfs с желаемыми аргументами. Это будет похоже на скрипт, который вы уже загружаете. Например:

#!/bin/bash
/usr/local/bin/encfs -f --ondemand --extpass="security 2>&1 >/dev/null find-generic-password -gl encfs | grep password | cut -d \\\" -f 2" -i 15 ~/.sync ~/sync

Обратите внимание, что в приведенном выше сценарии используется OSX Keychain через команду безопасности для предоставления пароля, а не для сохранения его в этом сценарии. Чтобы добавить пароль, откройте инструмент доступа к цепочке для ключей и добавьте приложение с именем encfs в одну из ваших цепочек для ключей. Используйте вашу цепочку ключей для входа, если вы никогда не хотите запрашивать пароль, Системную цепочку для ключей, если вы хотите, чтобы пароль encfs запрашивался каждый раз, когда она монтирует файловую систему с помощью --ondemand , или новую цепочку для ключей, если вы хотите, чтобы она имела свой пароль. собственный пароль. Смотрите http://widerin.org/blog/secure-your-dropbox.

Создайте файл службы в ~/Library/LaunchAgents/com.arg0.encfs.plist для загрузки этого скрипта. Замените YOUR_USERNAME своим именем пользователя:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
   <key>Label</key>
   <string>com.arg0.encfs</string>
   <key>Program</key>
   <string>/usr/local/bin/encfs-mount</string>
   <key>KeepAlive</key>
   <true/>
   <key>UserName</key>
   <string>YOUR_USERNAME</string>
</dict>
</plist>

Убедитесь, что encfs еще не запущен (если нет, размонтируйте и остановите его). Затем запустите новый сервис:

launchctl load ~/Library/LaunchAgents/com.arg0.encfs.plist

Ваша файловая система encfs должна быть смонтирована. Проверьте /var/log/system.log для устранения неполадок.

1

Вы можете запустить любой исполняемый файл при входе в систему (включая сценарии), добавив его через Системные настройки -> Пользователи и группы -> Элементы входа. Не давайте сценарию расширение; используйте имя как foo не foo.sh Поскольку нет связанных окон для отображения сообщений об ошибках, если что-то пойдет не так, я советую перенаправить stdout и stderr в файл в /tmp.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .