Permissions

使用 udisks2 掛載使用者可讀的映像

  • April 17, 2014

循環設備,即用於掛載原始磁碟映像的設備,可以在沒有 root 權限的情況下使用 udisk 進行管理。

出於測試目的,可以像這樣創建和格式化圖像:

dd if=/dev/urandom of=img.img bs=1M count=16
mkfs.ext4 img.img

然後使用 udisks 進行設置

udisksctl loop-setup -f img.img

這會為映像創建一個循環設備並將其掛載到 下的新目錄/run/$USER,就像任何由 udisk 管理的本地硬碟驅動器一樣。只有權限不是我所期望的。

# ls -l /run/media/$USER/
drwxr-xr-x 3 root  root   1024 Apr 10 11:19 [some id]
drwx------ 1 auser auser 12288 Oct 30  2012 [a device label]

列出的第一個是循環設備,由 root 擁有,其他任何人都不能寫。第二個是本地硬碟驅動器或安裝的USB筆設備進行比較,屬於安裝它的使用者。我知道我可以通過簡單chmod的以 root 身份執行來解決這個問題。

但是為什麼 udisks 分配不同的權限和所有者呢?可以將其配置為以其他方式執行嗎?

我詳細查看了 udisks2 原始碼並在那裡找到了解決方案。

在使用者權限下正確掛載的設備使用舊文件系統進行格式化,例如fat. 這些接受uid=gid=掛載選項來設置所有者。Udisks 自動將這些選項設置為發出掛載請求的使用者的使用者和組 ID。

現代文件系統,如 ext 系列,沒有這樣的選項,而是記住根節點的所有者和模式。所以chown auser /run/media/auser/[some id]確實持續有效。另一種方法是將新創建的文件系統的 uid 和 gid 傳遞-E root_usermkfs.ext4它的創建者。

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