由 cron 作业挂载的加密文件夹不会保持挂载状态

由 cron 作业挂载的加密文件夹不会保持挂载状态

我有一个 A.sh 脚本,用于查询服务器;检索挂载密码并在客户端中挂载私人文件夹。

然后我有一个 Init.sh 脚本,它首先检查互联网连接状态,然后执行 A.sh。

如果我手动执行 A.sh,则 Private 文件夹将在所有用户会话中可用。但如果我通过 cron 作业执行 Init.sh 或 A.sh,输出将显示该文件夹已挂载,但这不会反映在其他地方。

  • A.sh检索文件夹的挂载密码
  • 将其添加到钥匙圈printf "%s" "$PASS" | sudo ecryptfs-add-passphrase --fnek -
  • 从输出中检索签名和 fnek 哈希。
  • 最后使用以下命令挂载文件夹sudo mount -t ecryptfs -o ecryptfs_cipher=aes,ecryptfs_key_bytes=16,ecryptfs_sig="$SIGNATURE",ecryptfs_fnek_sig="$FNEK",ecryptfs_unlink_sigs,ecryptfs_passthrough=no,no_sig_cache,key=passphrase:passphrase_passwd="$PASS" "$PRIVATE_FOLDER" "$MOUNT_POINT"

我知道它已挂载,因为日志中的输出Mounted eCryptfs显示了该行。我不知道为什么它在脚本结束时被卸载。

cron 作业在该用户 crontab 下运行。

答案1

根据https://wiki.archlinux.org/index.php/ECryptfs

自动挂载、自动卸载 [空文件] - 如果存在,pam_ecryptfs.so 模块将(假设已加载)在用户登录/注销时自动挂载/卸载此加密目录

“如果它们存在”是指~/.ecryptfs/目录中的文件。

如果您想在 ssh 或本地会话结束时自动卸载私人文件夹touch ~/.ecryptfs/auto-umount就足够了。

但似乎这种自动卸载行为将一直持续下去加密文件系统像 cron 作业一样,在非交互式会话中加载到内存中。即使没有~/.ecryptfs/auto-umount设置文件。

注释掉此行

session optional        pam_ecryptfs.so unwrap

on/etc/pam.d/common-session-noninteractive将停止在非交互式会话(如 cron 作业)上自动卸载。

相关内容