在 Linux 中使用外部 C++ 脚本解密并挂载 eCryptFS 加密目录

Decrypt and mount an eCryptFS encrypted directory using an external C++ script in Linux

我想通过在 C++ 中执行 "ecryptfs-mount-private" 终端命令并从同一 C++ 脚本提供 passphrase/password 来解密和安装默认的 eCryptfs 私有目录。

我已经尝试分叉然后执行 shell (/bin/sh) 并使用 sh 打开 I/O 的管道但是当我尝试通过管道写入时出现以下错误:

stty: standard input: Inappropriate ioctl for device

我猜这是因为 ecryptfs-mount-private 只接受来自键盘的密码输入。

如何实现这种解密和挂载机制?这样做的可能方法或任何变通方法都会有所帮助。

PS。在我的场景中,将密码短语存储在 C++ 代码中的安全问题不是问题。

谢谢!

ecrypt-mountfs-private 期望连接到终端。 一种解决方案是使用 forkpty(2) 而不是 fork,这将确保子进程可以访问 pty(伪 tty)。然后,您可以写入和读取主文件描述符以提供输入响应。读取子进程的输出。

ecryptfs-mount-private 是一个 /bin/sh shell 脚本(相对较短,只有大约 65 行没有注释)所以你可以尝试 运行 "converting" 一些将其转换为 C++ and/or 运行 剩余的 shell 命令行一次一个 system().