Permissions

Sudo 對 EncFS 中的腳本說“找不到命令”(沒有對 EncFS 掛載的 root 訪問權限?)

  • September 30, 2017

當以普通使用者身份使用EncFS掛載加密目錄時,您無法使用 sudo(以 root 身份)在其中執行腳本:

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

這是一項安全功能,但我怎樣才能仍然授予此掛載目錄的 root 權限(不以 root 身份掛載)?

更多細節

我正在使用Arch Linux ,並且我有一個使用EncFS的加密目錄:

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 可以是無密碼的。因此,此安全功能只會妨礙您。但是,我也不想以 root 身份掛載加密目錄(因為那樣我也需要以 root 身份執行我的文件管理器和其他應用程序)。

作為解決此問題的方法,我將文件複製到加密目錄 ( cp "$usbpath/encfs/test.sh" /tmp/test.sh) 之外,然後以 root ( sudo /tmp/test.sh) 身份執行。

除了為可能遇到相同問題的其他人記錄這個問題之外,我仍然留下的問題是:有沒有更好的方法來做到這一點?

Encfs 在引擎蓋下使用保險絲。它包括一個將-o選項傳遞給 fuse 的選項。除了使用者掛載之外,添加-o allow_root將允許 root 訪問文件系統(還要注意類似但排他的allow_others標誌)。要使用此選項,您需要在 fuse config 中啟用它。在/etc/fuse.conf中,添加user_allow_other指令

參見mount.fuse(8)encfs(1)

引用自:https://unix.stackexchange.com/questions/395276