特权分离 在计算机编程和计算机安全中特权分离亦可称作权限分离是一种用于实现最小权限原则的防御式编程方法在实践特权分离的程序中程序被按职责分为多个部分每个部分仅被授予执行特定任务所需的特定特权以此减轻安全漏洞可能带来的危害 特权分离的常见实践是将计算机程序分叉为两个进程主程序放弃特权而较小的辅助程序保留特权以执行特定任务然后这两部分通过一对套接字或其他安全的方法进行通信在此实践下这对程序可以照常执行特权操作而即使较大的主程序被攻击者利用攻击者也无法获得特权 在传统的 POSIX 系统如 Linux 或是其他类 UNIX 操作系统上权限分离可以通过使用 POSIX 标准中定义的setuid   setgid  及相关系统调用将真实的用户 ID  组 ID 与有效的用户 ID  组 ID 区分开来完成如果这些调用的触发顺序或是位置不正确则有可能使程序暴露在网络攻击者的威胁之中让攻击者有机会渗透进其他系统中 许多面向网络的守护进程都必须执行特定的特权操作例如在特权端口上建立套接字而用于系统管理和维护的实用程序在运行期间也可能需要特定的特权出于安全考量此类程序经常在特权操作完成后通过完全撤销自身特权并转而以某个低权限用户的身份运行来实践特权分离 此操作在类 Unix操作系统下常被称为解除 root程序不需要特权的部分通常在 nobody 用户或等效的单独用户帐户下运行 此外特权分离还可以通过将单个程序拆分为多个较小的程序然后将各个小程序所需的权限以文件系统权限授予来实现在此实现下不同的小程序必须通过操作系统相互通信即使子程序被利用攻击者也仅能促成拒绝服务而无法提升权限由此便可限制漏洞被利用可能导致的后果 许多操作系统和应用程序在设计时都重点考虑了利用特权分离来提高安全性在 OpenBSD 中特权分离是主要安全功能之一而作为面向网络的邮件服务器软件Postfix 和 Dovecot 的设计也都体现了权限分离的思想