Монтирование HFS+ и UDF с гибридного видео-DVD

Я разработал программное обеспечение для Mac (используя DiscRecordingFramework и IOKit), которое создает гибридный Video-DVD. Полученный DVD полностью совместим со спецификациями Video-DVD. Гибридный диск содержит файловые системы HFS+, UDF и ISO. Теперь проблема заключается в том, что система Mac автоматически монтирует файловую систему HFS+, но DVD-плеер по умолчанию на Mac не может воспроизводить фильм, защищенный CSS, из файловой системы HFS+. В качестве обходного пути я разработал скрипт, который монтирует файловую систему UDF вместе с файловой системой HFS+. Этот скрипт фактически загружает расширение ядра UDF2.1 и монтирует файловую систему UDF. Это решение сработало, но нежелательно, так как требует паролей root.

Можно ли разработать решение, которое автоматически определяет гибридный диск и монтирует файловые системы HFS+ и UDF? Это решение не должно ставить под угрозу безопасность системы. Если он требует пароли root один раз в жизни, это нормально, но если он требует пароли root каждый раз, когда используется диск, это нежелательно.

Любая помощь будет высоко оценен.


person Farooq Zaman    schedule 26.03.2012    source источник
comment
Я ничего не знаю о видео-DVD, так что это может быть полезно, а может и нет: все ли файловые системы HFS+/UDF/ISO находятся на одном и том же блочном устройстве, то есть /dev/diskXsY, или они находятся на разных разделах? Если есть несколько разделов, вы можете получить один HFS +, используя структуру арбитража диска, чтобы предотвратить его монтирование. Другие идеи: 1. запросите у пользователя пароль только один раз и используйте его для установки бита setuid в вашем скрипте загрузки kext. Или 2. создайте и установите расширение ядра, которое обнаруживает эти специальные диски и представляет их операционной системе таким образом, чтобы она могла их обрабатывать.   -  person pmdj    schedule 27.03.2012
comment
Спасибо за ваш быстрый ответ. Гибридный диск фактически содержит два раздела. Один раздел ISO и другой раздел HFS+. Важно, чтобы раздел HFS+ монтировался первым из соображений удобства использования. Оба варианта, которые вы упомянули, звучат великолепно. Каковы последствия для безопасности обоих этих вариантов. Какой из них безопаснее другого?   -  person Farooq Zaman    schedule 27.03.2012
comment
Написание собственного расширения ядра сложно, трудоемко и представляет собой угрозу безопасности, поэтому я не советую это делать, если есть решение, не связанное с ядром. Так что остается дисковый арбитраж и явное монтирование. Просто чтобы уточнить мое понимание того, что происходит: на данный момент OSX автоматически монтируется, например. /dev/diskXs1 с HFS+, но вам дополнительно нужно смонтировать /dev/diskXs2 с UDF/ISO? Для монтирования через утилиту mount нужен root, а как насчет diskutil mount /dev/diskXs2? Обычно это работает без прав root.   -  person pmdj    schedule 27.03.2012
comment
Что касается безопасности пометки вашего скрипта с помощью setuid root: это определенно проблема безопасности; вам нужно быть очень строгим в отношении ввода, который принимает ваш сценарий. Сократите до минимума то, что скрипт фактически делает от имени root, и вызовите его из другого скрипта без setuid root. Также убедитесь, что скрипт доступен для записи только пользователю root.   -  person pmdj    schedule 27.03.2012
comment
Спасибо за вашу большую помощь. Утилита diskutil решила мою проблему.   -  person Farooq Zaman    schedule 29.03.2012
comment
Круто, рад, что ты разобрался!   -  person pmdj    schedule 29.03.2012
comment
fz300: Я только что получил электронное письмо от кого-то, кто интересуется разрабатываемым вами программным обеспечением, но у него недостаточно репутации SO, чтобы написать здесь комментарий. Напишите мне или добавьте контактную информацию в свой профиль, и я свяжусь с вами. Сообщение: Планируете ли вы выпускать программное обеспечение для Mac на коммерческой основе или в другой форме? Нужны ли вам бета-тестеры для программного обеспечения?   -  person pmdj    schedule 27.03.2013


Ответы (1)


Сводка ветки комментариев:

  • diskutil mount не требует root-прав, поэтому предпочтительнее использовать их, если это возможно.
  • Фреймворк Disk Arbitration можно использовать для предотвращения монтирования файловых систем, если это необходимо.
  • Если вам нужно многократно выполнять действие от имени пользователя root и вы не хотите постоянно спрашивать пароль, вы можете поместить команды в сценарий, пометить его как принадлежащий пользователю root и установить бит setuid. Для этого вам понадобятся права root только один раз.
  • Для серьезного обмана файловой системы и диска иногда нельзя избежать перехода на уровень ядра. Преимущество установленного kext заключается в том, что это самый ранний способ ответа на вставленный диск.
person pmdj    schedule 29.03.2012