Mount
如何讓 udisks-glue 在啟動時執行並以特定使用者身份安裝驅動器?
我正在嘗試使udisks-glue在我的 Raspbian Raspberry Pi 上工作。如果我
udisks-glue
通過 ssh 手動啟動,這工作正常。但是,我希望在啟動時自動啟動它。因此,在為我啟動守護程序的腳本
/etc/init.d/udisks-glue
(按照此處的說明)。這工作正常,但磁碟是使用 root 權限 (drwx------
) 安裝的。是否可以讓這個腳本以使用者身份啟動守護程序pi
,不是root
嗎?我試過的
1)修改上面的腳本,替換
DAEMON="/usr/bin/udisks-glue"
和
DAEMON="exec su - pi -c /usr/bin/udisks-glue"
這未能執行。
- 將此行替換為對自定義腳本的引用,然後呼叫
exec su - pi -c /usr/bin/udisks-glue
. 當我連接硬碟驅動器時,它們沒有安裝。但是,出現了正確執行的程序。看著ps aux | grep [u]disks
,我可以看到以 root 身份udisks-glue
執行pi
(和兩個udisks-daemon
以 root 身份執行);ps
如果我手動啟動,我會得到相同的輸出udisks-glue
,如上所述。3)我嘗試編輯
/etc/rc.local
,添加行su pi -c "/usr/bin/udisks-glue &"
這與 (2) 中的結果相同,
udisks-glue
執行為pi
,但不起作用。
- 根據此頁面,以 root 身份執行 udisks-glue,但將掛載權限授予所有人。這適用於 FAT 文件系統,但甚至無法掛載 ext4。
pi
(無論如何,我更希望坐騎歸使用者所有。)
不久前我遇到了同樣的問題。
解決方案:
- *修復您的配置:*創建
/etc/polkit-1/localauthority/50-local.d/50-mount-as-pi.pkla
包含以下內容的文件:[Media mounting by pi] Identity=unix-user:pi Action=org.freedesktop.udisks.filesystem-mount ResultAny=yes
- 修復你的初始化腳本:
- 添加一個包含您要執行的使用者的變數
udisks-glue
:NAME=udisks-glue PIDFILE=/var/run/udisks.pid DAEMON="/usr/bin/udisks-glue" DAEMONUSER=pi <-- add this line
修改`start-stop-daemon`呼叫以使用`$DAEMONUSER`變數:
art) g_daemon_msg "Starting Automounter" "$NAME" > start-stop-daemon --start --exec $DAEMON --chuid $DAEMONUSER g_end_msg $? op) g_daemon_msg "Stopping Automounter" "$NAME" > start-stop-daemon --stop --exec $DAEMON --user $DAEMONUSER g_end_msg $? -f $PIDFILE
注意:我`-- -p $PIDFILE`從第一次呼叫中刪除了該部分。您的普通使用者帳戶可能沒有寫入權限`/var/run`,因此您可以執行我在上面所做的操作,或者將`$PIDFILE`變數更改為普通使用者可寫的路徑。)* ### 對您已採取的步驟的評論: 1. 這不可能奏效。該`$DAEMON`變數用作呼叫`--exec`中的參數`start-stop-daemon`。該參數應該是一個**執行檔**,而`exec`它是一個[內置的 shell](http://en.wikipedia.org/wiki/Shell_builtin)。 2. 這樣做會破壞您的初始化腳本。雖然以`udisks-glue`這種方式開始工作,但停止它不會像`start-stop-daemon`嘗試停止`/path/to/your/helper/script.sh`而不是實際的守護程序 ( `/usr/bin/udisks-glue`)。撇開這一點不談,當您`udisks-glue`以守護程序模式啟動時,它不會生成調試消息。如果您在互動式 shell 中執行以下命令:
su pi -c “/usr/bin/udisks-glue -f”
你可能會看到類似的東西:
Device file /dev/sdb1 inserted Trying to automount /dev/sdb1… Failed to automount /dev/sdb1: Not Authorized Device file /dev/sdb inserted
這可以解釋為什麼您的驅動器沒有安裝。 3. 這實際上與 2 相同。另外一點:`&`末尾的 & 符號 ( ) 是多餘的,因為`udisks-glue`預設情況下是守護程序。 4. 同樣,`udisks-glue`在前台執行可以解釋非 FAT 文件系統的問題:
Device file /dev/sdb1 inserted Trying to automount /dev/sdb1… Failed to automount /dev/sdb1: Mount option dmask=0 is not allowed Device file /dev/sdb inserted
另請注意,如果您想更改 ext4 掛載點的所有者,則需要`chown`在掛載後進行。