Linux与Unix安全编程:临时文件、锁机制及信任通道的使用指南
1. 临时文件管理
在管理系统时,用户若想为特定应用设置一个特殊的临时目录,可在运行该应用时专门设置环境变量。不过,若这些环境变量可能由不可信源设置,就应忽略它们。
当使用NFS版本2(NFSv2)远程挂载临时目录时,上述方法可能失效,因为NFSv2不能很好地支持O_EXCL。而NFS版本3及更高版本能正确支持O_EXCL,简单的解决办法是确保临时目录为本地目录,或者若使用NFS挂载,要使用NFS版本3或更高版本。对于NFS v2,虽有通过link(2)和stat(2)来安全创建临时文件的技术,但较为复杂。
值得一提的是,FreeBSD最近对mk*temp()系列函数进行了修改,去除了文件名中的PID部分,改用base - 62编码的随机数替代。这大大增加了使用6个X作为“默认”文件名时可能的临时文件数量,意味着即使是使用6个X的mktemp(3),在不频繁使用的情况下,从概率上来说也能有效防止被猜测。
Openwall Linux补丁包含一个可选的“临时文件目录”策略,可抵御许多基于临时文件的攻击。Linux安全模块(LSM)项目中的“owlsm”模块实现了部分OpenWall的理念,使得带有LSM的Linux内核能快速将这些规则应用到运行系统中。启用该策略后,有以下两种保护机制:
- 硬链接 :在某些情况下,进程不能对文件创建硬链接。在LSM版本中,若进程的uid和fsuid(通常与euid相同)与被链接文件的uid不同,进程uid不是root,且进程不具备FOWNER能力,那么创建硬链接将被禁止。未来可能会取消对进程uid的检查,届时规则将
超级会员免费看
订阅专栏 解锁全文
1845

被折叠的 条评论
为什么被折叠?



