可以锁定 sparsebundle 以使其只读吗?

noo*_*oop 5 sparsebundle sparseimage macos

对于稀疏图像文件,我可以在“获取信息”中设置锁定属性以防止修改其内容。使用 sparsebundle 这样做似乎没有任何效果。

目前,我将我的 sparsebundle 存储在一个 sparseimage 中以获得这个容易锁定的功能。

我是否忽略了一种使我的 sparsebundle 卷只读的更简单方法?

Dan*_*eck 5

Finder 似乎没有为整个包递归应用锁定标志(或在获取信息对话框中的权限更改)。如果这是您经常需要的东西,您可能需要考虑为以下建议编写服务,因此您可以从 Finder 而不是终端中执行此操作。


您可以通过运行chmod以下命令在命令行上删除对包的写入权限:

chmod -R a-w 
Run Code Online (Sandbox Code Playgroud)

键入此命令(包括尾随空格字符),然后将稀疏包的图标拖到“终端”窗口中。它应该如下所示,具体取决于稀疏包的名称及其存储位置:

chmod -R a-w /path/to/container.sparsebundle
Run Code Online (Sandbox Code Playgroud)

chmod -R u+w /path/to/container.sparsebundle再次运行以获取写入权限。对于大型稀疏包,这些命令可能需要一段时间。


或者,您可以通过运行以下命令在包中的所有文件上设置锁定标志chflags

chflags -R uimmutable /path/to/container.sparsebundle
Run Code Online (Sandbox Code Playgroud)

要恢复,请运行chflags -R nouimmutable /path/to/container.sparsebundle


您也可以始终以只读方式安装捆绑包,以仅暂时防止更改。为此,请在终端中运行以下命令:

hdiutil attach /path/to/container.sparsebundle -readonly
Run Code Online (Sandbox Code Playgroud)

请注意,您需要始终像这样安装它以防止更改。


如果您可以容忍使用与平常不同的挂载点的映像,则可以运行配置系统以始终以只读方式挂载此映像。

首先,确定卷 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
Run Code Online (Sandbox Code Playgroud)

在此示例中,卷在 Finder 中显示为“磁盘映像”。请注意右侧的标识符 ( disk8s2)。您需要在以下命令中输入它/dev/

diskutil info /dev/disk8s2
Run Code Online (Sandbox Code Playgroud)

查找以Volume 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
Run Code Online (Sandbox Code Playgroud)

然后保存并关闭。现在您可以双击挂载图像,它将显示在 Finder 中,并且是只读的。