当前位置:嗨网首页>书籍在线阅读

02-是否需要一个Set-User-ID或Set-Group-ID程序

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

38.1 是否需要一个Set-User-ID或Set-Group-ID程序

有关编写set-user-ID和set-group-ID程序的最佳建议中的一条就是尽量避免编写这种程序。在执行一个任务时如果存在无需赋给程序权限的方法,那么一般来讲应该采用这种方法,因为这样就消除了发生安全性问题的可能。

有时候可以将需要权限才能完成的功能拆分到一个只执行单个任务的程序中,然后在需要的时候在子进程中执行这个程序。对于库来讲,这项技术是特别有用的。64.2.2 节中介绍的pt_chown程序就采用了这种技术。

即使有时候需要set-user-ID或set-group-ID权限,对于一个set-user-ID程序来讲也并不总是需要赋给进程root身份。如果赋给进程其他一些身份已经足够,那么就应该采用这种方法,因为以root权限运行可能会引起安全性问题。

假设一个set-user-ID程序需要允许用户更新一个它没有写权限的文件,那么解决这个问题的一种更加安全的方式是为这个程序创建一个专用组账号(组ID),然后将文件所属的组修改为那个组(即使得该组中的成员能够写入该文件),接着编写一个将进程的有效组ID设置为该专用组ID的set-user-ID程序。由于这个专用的组ID没有其他权限,因此能够极大地限制程序包含Bug或被破坏时所造成的损失。