检查文件权限

发布于 2024-07-05 05:53:43 字数 90 浏览 8 评论 0原文

如何检查文件权限,而无需通过passthru()exec() 运行操作系统特定命令?

How can I check file permissions, without having to run operating system specific command via passthru() or exec()?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

橘寄 2024-07-12 05:53:44

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

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

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

因此,不要检查文件权限,只要执行权限检查成功后要做的任何事情,并优雅地处理错误即可。

What do you want to do by checking file permissions?

When writing secure code, it's almost always incorrect to "check, then do" anything. The reason is that between the checking whether you can do something and actually doing it, the state of the system could change such that doing it would have a different result.

For example, if you check whether a file exists before writing one, don't check whether you wrote the file successfully (or don't check in a detailed-enough fashion), and then later depend on the contents of the file you wrote, you could actually be reading a file written by an attacker.

So instead of checking file permissions, just do whatever it was you were going to do if the permissions check succeeded, and handle errors gracefully.

千笙结 2024-07-12 05:53:44

decot(fileperms($dir) & 0777) 获取文件权限。
示例: var_dump(decot(fileperms($dir) & 0777)); //返回值为'755'

decoct(fileperms($dir) & 0777) to get file permission.
Example: var_dump(decoct(fileperms($dir) & 0777)); //return is '755'

べ映画 2024-07-12 05:53:44

使用 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__< /code> 和 __DIR__ 与您的路径或变量

Use fileperms() function and substring:

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

For file:

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

Replace __FILE__ and __DIR__ with your path or variable

明月夜 2024-07-12 05:53:44

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

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

Real coders use bitwise operations, not strings ;) This is much more elegant way of handling permissions:

function checkPerms($path)
{
    clearstatcache(null, $path);
    return decoct( fileperms($path) & 0777 );
}
月亮邮递员 2024-07-12 05:53:44

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

You can use the is_readable(), is_executable() etc.. commands.

沧笙踏歌 2024-07-12 05:53:43

使用 fileperms() 函数

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

Use fileperms() function

clearstatcache();
echo substr(sprintf('%o', fileperms('/etc/passwd')), -4);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文