我想通过在C ++中执行“ ecryptfs-mount-private”终端命令并从同一C ++脚本中提供密码/密码来解密和安装默认的eCryptfs专用目录。
我尝试分叉然后执行shell(/ bin / sh),并使用sh打开I / O的管道,但是当我尝试通过管道写入时,出现以下错误:
stty:标准输入:设备不适当的ioctl
我猜这是因为ecryptfs-mount-private仅接受来自键盘的密码输入。
如何实现这种解密和挂载机制?可能的方法或任何变通方法将很有帮助。
PS。在我的方案中,将密码短语存储在C ++代码中的安全性问题不是问题。
谢谢!
答案 0 :(得分:0)
ecryptfs-mount-private
是/bin/sh
的Shell脚本(相对较短,只有65行,没有注释),因此您可以尝试运行将其中一些“转换”为C ++和/或运行其余的shell命令与system()
一次一行。
答案 1 :(得分:-1)
ecrypt-mountfs-private
应该附加到终端。
一种解决方案是使用forkpty
(2)而不是fork
,这将确保子进程可以访问pty(伪tty)。然后,您可以写入和读取主文件描述符以提供输入响应。读取子进程的输出。