2012-02-26 91 views
0

我在系统首选项(使用授权锁)中使用了预发送。我需要将我的偏好写入/Library/Preferences。但是,每当我尝试将首选项同步到kCFPreferencesAnyUserkCFPreferencesCurrentHost时,即使我的锁已解锁,它也会失败。有没有办法在不创建帮助程序的情况下将我的偏好设置写入/Library/Preferences?我想避免这种情况,因为它是多余的。CF首选项/库/首选项

注意修改“任何用户”首选项需要root权限(或管理员权限之前的Mac OS X v10.6中) - 见Authorization Services Programming Guide.

我读的授权服务编程指南,它确实甚至没有提到偏好。

回答

1

CFPreferences使用您的进程的euid来确定“当前用户”的含义。您可以将您的euid设置为0,但这并不推荐,因为这意味着您的整个程序现在是特权升级攻击的可能来源,前提是它包含漏洞,而不仅仅是特定于目的的辅助程序。这对你的用户不利,并且延长对你不利。

另外,XPC和seteuid()并不总是很好玩,CFPreferences使用XPC。我相信,从euid 0切换到非0应该工作,但我不会指望其他方向正常工作。