Permissions
Sudo 對 EncFS 中的腳本說“找不到命令”(沒有對 EncFS 掛載的 root 訪問權限?)
當以普通使用者身份使用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
指令