代码之家  ›  专栏  ›  技术社区  ›  UnkwnTech

检查文件权限

  •  15
  • UnkwnTech  · 技术社区  · 16 年前

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

    5 回复  |  直到 9 年前
        1
  •  20
  •   Željko Živković    16 年前

    使用 fileperms() 功能

    clearstatcache();
    echo substr(sprintf('%o', fileperms('/etc/passwd')), -4);
    
        2
  •  11
  •   Huppie    16 年前

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

        3
  •  6
  •   Maciej Sz    11 年前

    真正的编码人员使用位操作,而不是字符串;)这是一种更优雅的处理权限的方式:

    function checkPerms($path)
    {
        clearstatcache(null, $path);
        return decoct( fileperms($path) & 0777 );
    }
    
        4
  •  1
  •   OzzyCzech    12 年前

    使用 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__ 使用您的路径或变量

        5
  •  0
  •   Chris Hanson    16 年前

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

    在编写安全代码时,几乎总是不正确地“检查,然后做”任何事情。原因是,在检查是否可以做某件事情和实际做某件事情之间,系统的状态可能会发生变化,这样做会产生不同的结果。

    例如,如果在编写文件之前检查文件是否存在,不要检查是否成功地编写了文件(或者没有以足够详细的方式签入),然后取决于所编写文件的内容,您实际上可能正在读取攻击者编写的文件。

    因此,不要检查文件权限,只要在权限检查成功的情况下做您要做的任何事情,并优雅地处理错误。