【发布时间】:2011-12-17 00:46:51
【问题描述】:
我一直在做一些 shell 编写,遇到了一个建议 access() 检查文件是否存在、是否可以读取等。似乎超级容易实现并且比 stat() 更快。当我开始查看它的手册页时,我注意到不建议使用它,因为它可能导致安全漏洞。手册页是这样说的:
使用 access() 检查用户是否被授权,例如打开一个文件 在实际这样做之前使用 open(2) 创建一个安全漏洞, 因为用户可能会利用 检查并打开文件以对其进行操作。
有谁知道如何利用它,或者它是否仅与检查文件后使用 open() 有关?我知道很多人说要改用stat(),但是access() 很容易实现,尤其是对于我使用它的shell。
【问题讨论】:
-
毋庸置疑,stat() 存在与上述 access() 引用中描述的相同类型的潜在安全漏洞。