更多细节

更多细节

当使用安装加密目录时编码文件系统作为普通用户,您无法使用 sudo (以 root 身份)执行其中的脚本:

$ sudo /run/media/yeti/usbdrive/encfs/test.sh
sudo: /run/media/yeti/usbdrive/encfs/test.sh: command not found

这是一项安全功能,但我如何仍向此安装目录授予 root 权限(无需以 root 身份安装)?

更多细节

我在用架构Linux,我有一个加密目录,使用编码文件系统

sudo pacman -S encfs
usbpath="/run/media/yeti/usbdrive"
encfs "$usbpath/.encfs" "$usbpath/encfs"
echo 'echo hello world' > "$usbpath/encfs/test.sh"
sudo chmod +x "$usbpath/encfs/test.sh"

然后这个命令就像预期的一样工作:

$ /run/media/yeti/usbdrive/encfs/test.sh
hello world

但是当我使用 sudo 时,出现错误:

$ sudo /run/media/yeti/usbdrive/encfs/test.sh
sudo: /run/media/yeti/usbdrive/encfs/test.sh: command not found

后来我意识到这是EncFS的一个安全特性,其实还是不错的。当我将目录列表为root(之后su)时,我发现以下内容:

$ ls /run/media/yeti/usbdrive/encfs/
ls: cannot access '/run/media/yeti/usbdrive/encfs': Permission denied
[...]
d?????????? ? ?    ?        ?            ?  encfs
drwxrwxrwx  1 yeti yeti     0 Sep 30 00:31  .encfs
[...]

但就我而言,我所在的系统实际上是 root,并且 sudo 可以是无密码的。因此,此安全功能只会造成阻碍。但是,我也不想将加密目录安装为根目录(因为那样我也需要以根目录身份运行我的文件管理器和其他应用程序)。

我对此问题的解决方法是将文件复制到加密目录 ( cp "$usbpath/encfs/test.sh" /tmp/test.sh) 之外,然后以 root 身份执行它 ( sudo /tmp/test.sh)。

除了为可能遇到同样问题的其他人记录这个问题之外,我仍然剩下的问题是:是否有更好的方法来做到这一点?

答案1

Encfs 在底层使用了保险丝。它包括一个-o将选项传递给融合的选项。添加-o allow_root将允许 root 除了用户挂载之外还可以访问文件系统(另请注意类似但独占的allow_others标志)。要使用此选项,您需要在熔断器配置中启用它。在 中/etc/fuse.conf,添加user_allow_other指令

安装.保险丝(8)环境文件系统(1)

相关内容