我怎么可以检查 file permissions, ,而不具有运行的操作系统的具体指令通过 passthru()exec()?

有帮助吗?

解决方案

使用 fileperms() 功能

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

其他提示

你可以使用 is_readable(), is_executable() 等等.命令。

真正的编制使用按位的操作,不strings;),这是更优雅的方式处理权限:

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

使用 fileperms() 功能和substring:

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__ 你的路径或可变

什么你想要做的通过检查文件的权限?

当写入安全码,它几乎总是不正确的"检查,然后做"任何东西。其原因是,间检查是否可以做一些事情,实际上这样做,系统的状态可以改变这样的,这样做会有不同的结果。

例如,如果你检查文件是否存在之前编写一个不检查是否是你写的文件的成功(或不检查在一个详细的-足够的时),然后依赖于该文件的内容,你写道,你实际上可以阅读一个文件的书面通过攻击者。

因此,不是检查文件的权限,只是做不管它是什么你要做,如果该权限的检查成功,并处理错误的优雅。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top