c - 即使没有权限,open() 调用也会成功

标签 c unix

我有一个名为 test 的文件没有 rwx 权限(我已经使用 chmod 删除了所有权限)

[root@dev]# ls -l 测试 ------------。 1 root root 21 Sep 7 22:22 测试

Q1) 我正在尝试运行以下代码来检查文件是否可以打开。返回给 fd 的值是正数。 fd 不应该是 -1。 ?

    fd = open(fname, O_RDONLY);
    if (fd == -1) {
        /* Print error message */
        return (-1);
    }
    close(fd);

Q2) 我什至能够 cat 文件。我cat文件的时候不应该有错误吗? [root@dev]#猫测试 这是一个测试文件。 [root@dev]#

注意:我使用的是 root 帐户。

最佳答案

简短回答:root 可以做任何事情。

更长的答案:通常,要以给定模式打开文件,POSIX 要求基于您的 uid 和 gid 的权限允许您请求的访问类型,或者您具有“适当的权限”,一个由实现定义的短语。在大多数现实世界的实现中,满足“适当权限”的条件之一是 root 用户 (uid 0)。

关于c - 即使没有权限,open() 调用也会成功,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12311953/

相关文章:

c - Erlang nif不升级

c - 错误的 TCP 客户端实现

linux - 移动到另一个目录时可以有 .bashrc 吗?

linux - 为什么 Unix 通配符 "*"不包括 ".*"?

bash - 查找和移动所有文件,同时保持目录完整

c - 如何让我的随机函数工作?

c - 调频合成算法

text-processing - 替换文本文档中一行的最有效方法?

c - 在C中随机时间生成随机线程

ruby-on-rails - 如何在 .irbrc 中需要 gem,而不需要将其添加到 Rails Gemfile 中?