受这个问题的启发,下面是后续行动:
正如你们中的一些人可能知道的,setuid-二进制文件是危险的,因为一些漏洞利用这些来将他们的权利提升到根。
现在似乎有了一个有趣的想法,用不同的、更安全的方法来代替setuid。
多么?
发布于 2012-11-09 16:07:13
Linux中的文件系统功能是为了允许比setuid本身所允许的更细粒度的控制。使用setuid,它将有效权限完全提升到用户(通常是根用户)。功能(7)手册提供了以下描述:
为了执行权限检查,传统的Unix实现区分了两类过程:特权进程(其有效用户ID为0,称为超级用户或超级用户)和非特权进程(其有效UID为非零)。特权进程绕过所有内核权限检查,而未私密的进程则根据进程的凭据(通常为:有效UID、有效GID和补充组列表)接受完全权限检查。从内核2.2开始,Linux将传统上与超级用户相关的特权划分为不同的单元,称为功能,这些单元可以独立启用和禁用。功能是每个线程的属性。
如果应用程序需要调用chroot() (通常只允许根用户)的能力,则可以在二进制(而不是setuid )上设置CAP_SYS_CHROOT。这可以使用setcap命令来完成:
setcap CAP_SYS_CHROOT /bin/mybin从RPM 4.7.0版开始,可以使用%caps在打包文件上设置功能。
Fedora 15有一个删除在此释放目标中跟踪的所有setuid二进制文件的错误报告。根据错误报告,这一目标已经实现。
维基百科关于基于能力的安全的文章对任何感兴趣的人来说都是很好的读物。
https://unix.stackexchange.com/questions/55306
复制相似问题