检查文件权限

时间:2008-08-21 08:06:07

标签: php file-permissions

如何检查file permissions,而无需通过passthru()exec()运行特定于操作系统的命令?

5 个答案:

答案 0 :(得分:20)

使用fileperms()功能

clearstatcache();
echo substr(sprintf('%o', fileperms('/etc/passwd')), -4);

答案 1 :(得分:12)

您可以使用is_readable()is_executable()等命令。

答案 2 :(得分:6)

真正的编码器使用按位运算,而不是字符串;)这是处理权限的更优雅方式:

function checkPerms($path)
{
    clearstatcache(null, $path);
    return decoct( fileperms($path) & 0777 );
}

答案 3 :(得分:1)

使用fileperms()函数和子字符串:

substr(decoct(fileperms(__DIR__)), -4); // 0777
substr(decoct(fileperms(__DIR__)), -3); // 777

对于档案:

substr(decoct(fileperms(__FILE__)), -4); // 0644
substr(decoct(fileperms(__FILE__)), -3); // 644

__FILE____DIR__替换为您的路径或变量

答案 4 :(得分:0)

通过检查文件权限,您想要做什么?

在编写安全代码时,“检查​​,然后执行”几乎总是不正确的。原因是在检查您是否可以执行某些操作并实际执行操作之间,系统的状态可能会发生变化,从而使其执行的操作会有不同的结果。

例如,如果在编写文件之前检查文件是否存在,则不要检查是否成功写入文件(或者不要以足够详细的方式检查),然后再根据文件的内容进行检查。你写的文件,你实际上可能正在阅读攻击者写的文件。

因此,如果权限检查成功,只需执行您要执行的任何操作,而不是检查文件权限,并正常处理错误。