如何在 OS X Mountain Lion 上登录时挂载 encfs

如何在 OS X Mountain Lion 上登录时挂载 encfs

我使用 encfs 加密我的 Dropbox 内容,因此我想在用户登录时而不是在系统启动时安装 encfs。但是,我无法做到这一点。我试过:

  • 将 mount 命令添加到 .login/.profile。这不起作用,因为这些脚本是在 shell 启动时执行的,而不是在用户正常登录时执行的。
  • 向 com.apple.loginwindow 添加 LoginHook。除了减慢我的登录过程外,这没有任何作用。系统日志文件中没有任何内容,因此我不确定如何调试它。
  • 我查看了 /etc/fstab,但在 Mountain Lion 上该文件是空的,除了警告说该文件没有任何作用,因此向其中添加任何东西都无济于事。

对于那些不熟悉 encfs 但熟悉在 OSX 上完成操作的人来说,本质上我必须运行这个命令来挂载加密文件系统:

echo password | encfs -S encrypted_dir mount_point

非常感谢您的帮助。

答案1

您可以通过“系统偏好设置”->“用户和组”->“登录项”添加任何可执行文件(包括脚本),从而在登录时运行它。不要给脚本添加扩展名;使用类似foonot 的名称foo.sh。由于如果出现问题,没有关联窗口来显示错误消息,我建议将 stdout 和 stderr 重定向到 /tmp 中的文件中。

答案2

正确的做法是创建一个 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

请注意,上述脚本通过 security 命令使用 OSX Keychain 来提供密码,而不是将其保存在此脚本中。要添加密码,请打开 Keychain Access 工具,并将名为 encfs 的应用程序添加到您的一个钥匙串中。如果您不想被提示输入密码,请使用您的登录钥匙串;如果您希望每次使用以下方式挂载文件系统时都提示输入 encfs 密码,请使用系统钥匙串--ondemand如果您希望它有自己的密码,请使用新钥匙串。请参阅http://widerin.org/blog/secure-你的-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以排除故障。

相关内容