“MyDir/Library/Application Support/Games” 里面有一个目录,我希望允许所有用户读取。但是,我不希望他们能够读取 MyDir 中的任何其他目录。
实现这一目标的最佳方法是什么?
谢谢。
答案1
没有真正好的方法来做到这一点,因为为了进入该目录,其他用户需要能够进入 MyDir、MyDir/Library 等。也就是说,有几种方法可以实现它:
您可以设置 MyDir、MyDir/Library 等的权限以允许遍历,但不允许读取。这种方法的问题在于:其他用户无法正常导航到该文件夹,他们必须使用 Finder 的“转到文件夹”选项(或Cmd+ Shift+ G)并输入路径。此外,尽管他们无法看到 MyDir、MyDir/Library 等的内容,但如果他们知道(/可以猜出)名称,他们就可以访问那里的文件。由于 Libraries 的内容往往非常可预测,这意味着他们能够访问 MyDir/Library/Preferences、MyDir/Library/Keychains 等,除非您也妥善保护了它们。假设您想这样做,以下是相关的设置命令(警告:这些命令不易逆转,请在执行前仔细考虑):
chmod og= MyDir/* MyDir/Library/* MyDir/Library/Application\ Support/* chmod og=x MyDir MyDir/Library MyDir/Library/Application\ Support chmod og=rx MyDir/Library/Application\ Support/Games
您实际上可以将内容放在更易于访问的地方,并将 MyDir/Library/Application Support/Games 作为其符号链接。这种做法的潜在问题来自不遵循符号链接的程序(尤其是安装程序可能会将其替换为实际目录 - 您必须手动清理该目录)。以下是使用 /Users/Shared/Games 作为公共位置的示例:
mkdir /Users/Shared/Games ln -s /Users/Shared/Games MyDir/Library/Application\ Support/Games