fusermount 的使用者特定 fstab
我想知道 fusermount 是否有類似“使用者特定 /etc/fstab”的東西?~/.fstab、~/.config/fstab 之類的東西,可以與 FUSE 配合使用。
我用了
sshfs foo.bar: foo.bar/
從主目錄連接到遠端目錄(有 foo.bar 目錄,我相應地設置了 .ssh/config)。但我不喜歡 foo.bar 的重複,想用簡單的命令
$$ cmd $$foo.bar/ 掛載遠端目錄。經過一番Google搜尋後,我發現簡單的“mount foo.bar/”可以與 /etc/fstab 中的以下行一起使用(還需要在 /etc/fuse.conf 中啟用“user_allow_other”)
login@foo.bar: /home/user/foo.bar fuse.sshfs user,IdentityFile=/home/user/.ssh/id_rsa,port=12345,allow_other 0 0
現在“mount foo.bar”按預期工作(並且“umount”也可以工作)。但是為了使用者特定的目的編輯系統範圍的文件似乎有點奇怪。.ssh/config 中的設置也在那裡重複(埠),必須指定身份文件。為更多站點(使用者)維護這個似乎很不方便,而且顯然不是 /etc/fstab 的用途。另一個奇怪的地方 - 使用此解決方案時,FUSE 由 root (afaictl) 執行。
我更喜歡帶有使用者特定 fstab 的“fusermount foo.bar/”之類的東西。
有這樣的事嗎?
沒有每個使用者等效的
/etc/fstab
. 您可以編寫一個 shell 腳本來讀取您選擇的文件並呼叫適當的掛載命令。請注意,從參數foo.bar
中,您必須推斷出多條資訊:伺服器位置foo.bar
、伺服器上的目錄(這裡是您的主目錄),首先是它是 SSHFS 掛載的事實。#!/bin/bash #### if [ -e ~/.fstab ]; then args=("$@") ((i=${#args[@]}-1)) target=${args[$i]} while read filesystem mount_point command options comments; do if [[ $filesystem = \#* ]]; then continue; fi if [[ $mount_point = "$target" || $filesystem = "$target" ]]; then if [[ -n $options ]]; then args[$((i++))]=-o args[$((i++))]=$options fi args[$((i++))]=$filesystem args[$((i++))]=$mount_point exec "$3" "${args[@]}" fi done fi ## Fall back to mount, which looks in /etc/fstab mount "$@"
(警告:未經測試的程式碼。)
這個片段解析一個文件
~/.fstab
,其語法讓人聯想到/etc/fstab
:“設備”、掛載點、文件系統類型、選項。請注意,這裡的文件系統類型是要執行的命令,而“設備”是文件系統相關的。並非所有 FUSE 文件系統命令都使用這種語法,“設備”後跟一個掛載點,儘管這是一個常見的約定。身份文件、遠端使用者名等 SSH 選項可以保留在
~/.ssh/config
. 放入它們的唯一原因/etc/fstab
是允許所有使用者使用這些選項。