【问题标题】:Mounting HFS+ and UDF from a Hybrid Video-DVD从混合视频 DVD 安装 HFS+ 和 UDF
【发布时间】:2012-03-26 05:34:06
【问题描述】:

我开发了一个 Mac 软件(使用 DiscRecordingFramework 和 IOKit)来创建混合 Video-DVD。生成的 DVD 与 Video-DVD 规范完全兼容。混合磁盘托管 HFS+、UDF 和 ISO 文件系统。现在的问题是 Mac 系统自动挂载 HFS+ 文件系统,但 Mac 上的默认 DVD 播放器无法从 HFS+ 文件系统播放受 CSS 保护的电影。作为一种解决方法,我开发了一个脚本,它可以将 UDF 文件系统与 HFS+ 文件系统一起安装。该脚本实际加载 UDF2.1 内核扩展并挂载 UDF 文件系统。该解决方案有效,但不可取,因为它需要 root 密码。

是否可以开发一种自动检测混合磁盘并同时安装 HFS+ 和 UDF 文件系统的解决方案?此解决方案不应损害系统安全性。如果它在生命周期中需要 root 密码,那是可以的,但如果每次使用磁盘时都需要 root 密码,则不可取。

任何帮助将不胜感激。

【问题讨论】:

  • 我对视频 DVD 一无所知,所以这可能有帮助,也可能没有帮助:HFS+/UDF/ISO 文件系统是否都驻留在同一个块设备上,即 /dev/diskXsY 或者它们是否在不同的“分区”?如果有多个分区,您可以使用磁盘仲裁框架“抓取”HFS+ 一个,以防止它被挂载。其他想法: 1. 只向用户询问一次密码,然后使用它在您的 kext 加载脚本上设置 setuid 位。或者 2. 创建和安装一个内核扩展来检测这些特殊的光盘并以操作系统可以处理的方式将它们呈现给操作系统。
  • 感谢您的快速回复。混合磁盘实际上包含两个分区。一个 ISO 分区和另一个 HFS+ 分区。出于可用性原因,首先安装 HFS+ 分区很重要。你提到的两个选项听起来都很棒。这两种选择的安全含义是什么。哪个比另一个更安全?
  • 编写自己的内核扩展是困难、费力和安全风险,所以如果有非内核解决方案,我不建议这样做。这样就剩下磁盘仲裁和显式安装了。只是为了澄清我对发生了什么的理解:目前,OSX 会自动挂载,例如/dev/diskXs1 与 HFS+,但您还需要安装 /dev/diskXs2 与 UDF/ISO?您需要 root 才能通过 mount 实用程序安装它,但是 diskutil mount /dev/diskXs2 呢?这通常在没有 root 权限的情况下工作。
  • 关于使用 setuid root 标记脚本的安全性:这绝对是一个安全问题;您需要对脚本接受的输入非常严格。将脚本以 root 身份实际执行的数量减少到最低限度,并从另一个没有 setuid root 的脚本中调用它。还要确保脚本只能由 root 写入。
  • 感谢您的大力帮助。 diskutil 实用程序解决了我的问题。

标签: filesystems user-defined-functions iokit dvd-burning hfs+


【解决方案1】:

评论主题摘要:

  • diskutil mount 不需要 root 权限,所以如果可能的话最好使用它
  • 如有必要,磁盘仲裁框架可用于防止文件系统被挂载。
  • 如果您需要以root 身份重复执行某项操作并且不想一直询问密码,您可以将命令放入脚本中,将其标记为root 拥有并设置setuid 位。为此,您只需要一次 root 权限。
  • 对于严重的文件系统和磁盘欺骗,您有时无法避免下降到内核级别。已安装的 kext 的一个优点是它是响应插入磁盘的最早可能方式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-01
    • 1970-01-01
    • 2014-06-04
    • 1970-01-01
    • 1970-01-01
    • 2012-11-19
    • 2013-05-22
    • 1970-01-01
    相关资源
    最近更新 更多