題 可以鎖定sparsebundles以使它們只讀嗎?


使用sparseimage文件,我可以在“獲取信息”中設置“鎖定”屬性,以防止修改其內容。使用sparsebundles這樣做似乎沒有效果。

目前我將sparsebundle存儲在sparseimage中以獲得這種易鎖功能。

我是否忽略了一種簡單的方法來使我的稀疏捆綁卷只讀?


5
2018-01-29 13:16


起源




答案:


似乎Finder不適用 鎖定 標誌(或權限的變化) 獲取信息 這個問題的對話框)遞歸地為整個包。如果這是您經常需要的,您可能需要考慮為以下建議編寫服務,因此您可以從Finder而不是終端執行此操作。


您可以通過運行刪除命令行上的包的寫入權限 chmod

chmod -R a-w 

鍵入此命令(包括尾隨空格字符),然後將稀疏包的圖標拖到“終端”窗口中。它應該看起來像這樣,取決於稀疏包的名稱和存儲位置:

chmod -R a-w /path/to/container.sparsebundle

chmod -R u+w /path/to/container.sparsebundle 再次獲得寫入權限。對於大型稀疏包,這些命令可能需要一段時間。


或者,您可以設置 鎖定 通過運行命令標記捆綁中的所有文件 chflags

chflags -R uimmutable /path/to/container.sparsebundle

要恢復,請運行 chflags -R nouimmutable /path/to/container.sparsebundle


您也可以始終以只讀方式掛載捆綁包,僅暫時阻止更改。為此,請在終端中運行以下命令:

hdiutil attach /path/to/container.sparsebundle -readonly

請注意,您需要始終像這樣安裝它以防止更改。


如果您可以使用與平常不同的安裝點來容忍映像,則可以運行配置系統以始終以只讀方式安裝此映像。

首先,確定卷UUID。掛載稀疏包,然後運行 diskutil list 在命令行上。查找與您的捲名稱相同的條目,如下所示:

/dev/disk8
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     Apple_partition_scheme                        *102.4 MB   disk8
   1:        Apple_partition_map                         32.3 KB    disk8s1
   2:                  Apple_HFS Disk Image              102.4 MB   disk8s2

在此示例中,卷在Finder中顯示為“磁盤映像”。請注意右側的標識符(disk8s2)。您需要在以後輸入以下命令 /dev/

diskutil info /dev/disk8s2

尋找以...開頭的行 卷UUID,並註意其右側的值,例如 D7C6180C-2178-32EF-98E6-7FB71AED2ABC

現在我們只需要創建一個自定義掛載點。通常,每個卷都安裝在 /Volumes,但卸載時會刪除這些掛載點,並在下一次掛載卷的安裝嘗試中刪除 fstab 將失敗,因為掛載點不存在。因此,只需在主目錄中創建一個名為“Image”的文件夾即可。

現在我們可以將OS X始終以只讀方式掛載。在終端,運行 sudo vifs 並輸入您的密碼。我假設你已經足夠熟悉了 vi/vim如果沒有,現在是閱讀它的好時機。

添加如下所示的行,替換適用於您的系統的UUID和掛載點的正確值:

UUID=D7C6180C-2178-32EF-98E6-7FB71AED2A56 /Users/danielbeck/Image hfs ro

然後保存並關閉。現在您可以雙擊安裝圖像,它將顯示在Finder中,並且是只讀的。


5
2018-01-29 13:51



哇,謝謝你這個徹底的回复!原則上,您如何看待我將sparsebundle存儲在我可以鎖定的稀疏圖像中?我正在使用稀疏捆綁,因此我可以逐步備份對網絡卷的更改。這樣做有什麼危險嗎? - noop
@noop這取決於您的用例。 CPU使用率可能存在問題,因為您要經歷兩層虛擬磁盤而不是一層。此外,在修改稀疏包內容時,您需要確保稀疏圖像在大小限制(以及> 2TB時的相關分區映射)方面始終與包匹配。如果您正在大量更改圖像內容,由於解決方案的嵌套特性,壓縮(即恢復稀疏包中當前未使用的磁盤空間)將會更加省力。 - Daniel Beck♦
我現在無法決定繼續使用我的sparseimage / sparsebundle方法,還是使用hdiutil -readonly。無論如何,謝謝您的見解。 - noop