# cryptsetup luksOpen /dev/somedevice --key-file <(gpg2 somekeyfile.gpg)
总是失败Failed to open key file.
有没有办法让这项工作成功?--key-file -
也失败了。我唯一要做的就是使用命名管道。但这很烦人。
啊,问题其实是sudo命令无法打开/dev/fd/63
普通用户创建的。有什么解决办法吗?
更新
由于较新的 cryptsetup 已经推出多年了。该--key-file -
错误不再存在。现在这个问题对于大多数现代发行版来说是无效的。以下管道将仅工作文件:
gpg2 somekeyfile.gpg | sudo cryptsetup ... --key-file -
答案1
如果它像使用 sudo 时的权限问题一样简单,您可以通过将整个文件传递给 bash 来确保文件是由 sudo 的子进程而不是父进程打开的:
sudo bash -c 'cryptsetup luksOpen /dev/somedevice --key-file <(gpg2 somekeyfile.gpg)'
答案2
sudo
关闭除 0-2(stdin、stdout 和 srderr)之外的所有打开的文件描述符。例如:
$ ls -l /dev/fd/ 30</
total 0
lrwx------ 1 tim tim 64 Nov 4 20:08 0 -> /dev/pts/5
lrwx------ 1 tim tim 64 Nov 4 20:08 1 -> /dev/pts/5
lrwx------ 1 tim tim 64 Nov 4 20:08 2 -> /dev/pts/5
lr-x------ 1 tim tim 64 Nov 4 20:08 3 -> /proc/26165/fd
lr-x------ 1 tim tim 64 Nov 4 20:08 30 -> /
$ sudo ls -l /dev/fd/ 30</
total 0
lrwx------ 1 root root 64 Nov 4 20:09 0 -> /dev/pts/5
lrwx------ 1 root root 64 Nov 4 20:09 1 -> /dev/pts/5
lrwx------ 1 root root 64 Nov 4 20:09 2 -> /dev/pts/5
lr-x------ 1 root root 64 Nov 4 20:09 3 -> /proc/26170/fd