使用隔离系统。绝不应在生产系统中调试特权应用程序,因为不完整的特权应用程序可能会危及安全。
正确设置 ID。调用进程的有效集合中需要具备 proc_setid 特权,以更改其用户 ID、组 ID 或补充组 ID。
使用特权包围。应用程序使用特权时,将覆盖系统安全策略。应该包围特权任务并仔细进行控制,以确保不会破坏敏感信息。有关如何包围特权的信息,请参见Privilege Coding Example。
使用基本特权启动。基本特权是最基本的操作所必需的。特权应用程序应该使用基本集合启动。然后,该应用程序应该适当地删除和添加特权。
以下是典型的启动方案。
守护进程以 root 身份启动。
守护进程启用基本特权集合。
守护进程禁用不必要的所有基本特权,例如 PRIV_FILE_LINK_ANY。
守护进程添加需要的所有其他特权,例如 PRIV_FILE_DAC_READ。
守护进程切换到守护进程 UID。
请避免 shell 转义序列。shell 转义序列中的新进程可以使用父进程的可继承集合中的任何特权。因此,最终用户可以通过 shell 转义序列违反信任。例如,某些邮件应用程序可能会将 !command 行解释为命令并执行该行。因而,最终用户可以创建脚本,以充分利用所有邮件应用程序特权。建议删除不必要的 shell 转义序列。