当使用安装加密目录时编码文件系统作为普通用户,您无法使用 sudo (以 root 身份)执行其中的脚本:
$ sudo /run/media/yeti/usbdrive/encfs/test.sh
sudo: /run/media/yeti/usbdrive/encfs/test.sh: command not found
这是一项安全功能,但我如何仍向此安装目录授予 root 权限(无需以 root 身份安装)?
更多细节
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
)。
除了为可能遇到同样问题的其他人记录这个问题之外,我仍然剩下的问题是:是否有更好的方法来做到这一点?