Можно ли заблокировать sparsebundles, чтобы сделать их доступными только для чтения?

2726
noop

С файлами sparseimage я могу установить атрибут Locked в «Get Info», чтобы предотвратить изменение его содержимого. Делать это с разреженными пучками не имеет никакого эффекта, как кажется.

В данный момент я храню свой sparsebundle внутри sparseimage, чтобы получить эту функцию легкой блокировки.

Я упускаю из виду более простой способ сделать мой редкий том только для чтения?

5

1 ответ на вопрос

5
Daniel Beck

Похоже, что Finder рекурсивно не применяет флаг Locked (или изменения разрешений в диалоге Get Info ) для всего пакета. Если это то, что вам регулярно нужно, вы можете заняться написанием сервиса для следующих предложений, так что вы можете сделать это из 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 и будет доступен только для чтения.

Вау, спасибо за этот подробный ответ! В принципе, что вы думаете о моем хранении разреженного пакета в разреженном изображении, которое я могу заблокировать? Я использую sparsebundle, чтобы я мог постепенно создавать резервные копии изменений в сетевой том. Есть ли какая-то опасность, которую я упускаю из виду при этом? noop 11 лет назад 0
@noop Это зависит от вашего варианта использования. Могут быть проблемы с использованием процессора, так как вы проходите два слоя виртуальных дисков вместо одного. Кроме того, при изменении содержимого разреженного пакета необходимо убедиться, что разреженное изображение всегда соответствует комплекту с точки зрения ограничения размера (и соответствующей карты разделов при переходе> 2 ТБ). Если вы сильно изменяете содержимое изображения, сжатие (то есть восстановление дискового пространства, в настоящее время неиспользуемого в разреженном комплекте) будет более трудоемким из-за вложенного характера вашего решения. Daniel Beck 11 лет назад 0
я не могу сейчас решить, продолжать ли мой подход sparseimage / sparsebundle или использовать hdiutil -readonly. В любом случае, спасибо за ваши идеи. noop 11 лет назад 0