在 Ubuntu 9.10(Karmic Koala)机器上,我使用以下命令从命令提示符刻录了 CD:
cdrecord -v speed=16 dev=0,1,0 /FPS.iso
CD 现在包含一个可执行文件和一些文件。我通过将 CD 加载到另一台计算机(Red Hat 5.3)上来测试它,当我尝试运行该程序时,我收到以下消息:
bash: ./FPS1_1: Permission denied
我可以打开其他文件,例如文本文档(可执行文件也带有共享库)。我意识到我已经以 root 身份刻录了 CD,因此我以其他用户身份刻录了另一张 CD,但仍然遇到同样的问题。我该如何删除此权限或问题出在哪里?
PS 如果有帮助的话,图片就在里面/
。
我用来生成图像的命令是:
mkisofs -frvJL -o /buffer/mycd.iso /temp/mydirectory/
代表-r
“生成合理化的 Rock Ridge 目录信息”。我应该使用-R
(“生成 Rock Ridge 目录信息”)吗?
答案1
问题不在于你如何刻录光盘,而在于你如何创建映像。如果你没有启用岩脊延伸生成 ISO 时,它将使用挂载操作期间指定的任何选项,而不是它最初拥有的权限。
答案2
作为Ignacio 的回答表明,这与生成 ISO 和挂载文件系统的关系比将 ISO 刻录到光盘的关系更密切。
您可以使用umask选项以确保文件在已挂载的文件系统中具有可执行位。例如,umask=022将授予所有文件权限755,也称为rwxr-xr-x。
mount -t iso9660 -o umask=022 /dev/cdrom /path/to/mount/point
这将修复权限问题一次;如需永久修复,请添加umask系统安装系统的选项(/etc/fstab或任何正在使用的自动挂载程序),或者修复 ISO 映像。
在 Ubuntu 上,基尼索夫是指向geniso图像. 根据genisoimage 手册页, 这-R可能比你想要的更接近-r(重点是我的):
-R 使用 Rock Ridge 协议生成 SUSP 和 RR 记录以进一步描述 ISO9660 文件系统上的文件。
-r 这与 -R 选项类似,但文件所有权和模式设置为更有用的值。uid 和 gid 设置为零,因为它们通常仅在作者的系统上有用,而对客户端无用。所有文件读取位都设置为 true,以便文件和目录在客户端上全局可读。如果为文件设置了任何执行位,则设置所有执行位,这样可执行文件在客户端上是全局可执行的。如果为目录设置了任何搜索位,则设置所有搜索位,这样目录在客户端上是全局可搜索的。所有写入位都将被清除,因为文件系统在任何情况下都将以只读方式挂载。如果设置了任何特殊模式位,则清除它们,因为文件锁在只读文件系统上没有用,并且 set-id 位对于 uid 0 或 gid 0 来说是不合适的。