01-编写安全的特权程序
第38章 编写安全的特权程序
特权程序能够访问普通用户无法访问的特性和资源(文件设备等)。一个程序可以通过下面两种方式以特权方式运行。
- 程序在一个特权用户ID下启动,很多daemon和网络服务器通常以root身份运行,它们就属于这种类别。
- 程序设置了set-user-ID或set-group-ID权限位。当一个set-user-ID(set-group-ID)程序被执行之后,它会将进程的有效用户(组)ID修改为与程序文件的所有者(组)一样的ID。(在9.3节中首次对set-user-ID和set-group-ID程序进行了介绍。)在本章中有时候会使用术语set-user-ID-root区分将超级用户权限赋给进程的set-user-ID程序与赋给进程另一个有效身份的程序。
如果一个特权程序包含bug或可以被恶意用户破坏,那么系统或应用程序的安全性就会受到影响。从安全的角度来讲,在编写程序的时候应该将系统受到安全威胁的可能性以及受到安全威胁时产生的损失降到最小。本章将对这些课题进行讨论,并提供了一组编写安全程序的推荐实践,同时介绍了在编写特权程序时应该避免的各种陷阱。