在Linux系统中,“ 系统” 根首选项节点位于下方/etc
。这是由于历史原因,并且是Linux Standard Base规范的标准。任何非系统首选项都可以进入其他位置,但是将系统首选项转到其他位置违反了操作系统的设计。
奇怪的是,您的定义在Linux系统中无效,因为它无法从/ etc开始。显然,在您决定重新建立首选项根的基础上,Java代码中的某些内容符合操作系统的规范。
通常,此类文件通过不可全局(甚至大多数用户)可写性来防止修改。这意味着,对于要访问首选项的用户,他们应该进入
Preferences.userRoot()
它将把它们放置在主目录附近的隐藏目录中(它们将具有修改权限)。
如果您希望任何用户阅读其他用户的首选项(描述听起来可能像您一样),那么您将需要具有以足够授权的用户身份运行(通常为root)的安装程序,以在其下创建所需的目录/etc
并将其权限更改为世界可写的。
通常,/ etc下的文件不可在世界范围内写入,因为用户可以更改其他用户的设置,并且被认为是违反用户预期环境的一种安全类型。例如,一个粗心的员工(或心怀不满的员工)可以一击就抹去所有其他用户的偏好。