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

时间:2012-09-07 04:57:30

标签: c unix

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

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

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

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

Q2)我甚至可以捕获文件。我捕获文件时不应该出错。 [root @ dev] #cat test 这是一个测试文件。 [根@ dev的]#

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

1 个答案:

答案 0 :(得分:4)

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

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