我正在为学校开发一个 OSX 应用程序,其中同一个 mac 的多个用户将能够基于共享配置(即数据库连接信息)启动该程序。按照设计,不应允许没有管理权限的普通用户修改配置。
根据 unix 约定,我将配置文件存储在 /usr/shared/ 下,但这导致了另一个问题: - 即使以管理员身份登录,应用程序也无法写入上述位置。如果用户需要更改配置文件,他们必须以提升的权限(使用 sudo)启动应用程序。
我的问题是,使用“sudo”写入受限区域是否是 mac osx 中的常见做法?
我正在为学校开发一个 OSX 应用程序,其中同一个 mac 的多个用户将能够基于共享配置(即数据库连接信息)启动该程序。按照设计,不应允许没有管理权限的普通用户修改配置。
根据 unix 约定,我将配置文件存储在 /usr/shared/ 下,但这导致了另一个问题: - 即使以管理员身份登录,应用程序也无法写入上述位置。如果用户需要更改配置文件,他们必须以提升的权限(使用 sudo)启动应用程序。
我的问题是,使用“sudo”写入受限区域是否是 mac osx 中的常见做法?
我想说的是,在 Mac 上使用“sudo”只是某些类型用户的常见做法,例如网络管理员和喜欢做的不仅仅是使用标准应用程序的用户。
我当然不希望学生和老师使用终端和 sudo。
在开发 OSX 应用程序时,Apple 会从安全框架中提供授权服务,以便应用程序能够将特权功能与标准功能区分开来,并在需要时提示用户提供凭据。
您将在“系统偏好设置”窗格中看到这一点,您可以在其中看到挂锁图标。任何应用程序都可以调用这些服务,但我不确定 Java 是否可以。这是 Apple 推荐的处理此类问题的方法,除了将特权任务分解到具有他们称为“SMJobBless”的功能的单独应用程序之外。
有趣的是,您问题的领域直接映射到Apple 所描述的将该系统用于“简单、自我限制的应用程序”的场景。
话虽如此,如果只有您自己或其他网络管理员要修改配置文件,那么我建议您在应用程序中省略任何用于修改它的功能,并直接使用 sudo 和文本编辑器(如 vi)进行修改,在需要的时候。
当然,除非您使用 sudo(root) 对其权限进行 chmod