open()文件包含(rw-r - r - )

时间:2016-12-05 09:43:56

标签: c permissions system-calls

对于文件所有者00700,系统调用open ()仅允许将所有者S_IRWXU的模式设置为rwx(根据我的手册页)。我想删除所有者通过我的C程序执行这个新建文件的权利。

不幸的是,chmod无法改变所有者的权利(据我所知,正确理解了man-page)所以我认为有一种方法可以通过一些参数魔术直接指定所需的行为。< / p>

int out;
out = open(cmd->outFile, O_WRONLY | O_TRUNC | O_CREAT, /*set the rights correctly to (rw-r--r--)*/

1 个答案:

答案 0 :(得分:1)

  

对于文件所有者00700,系统调用open ()仅允许为所有者S_IRWXU将模式设置为rwx(根据我的手册页)。

这将是一个奇怪的手册页;请参阅man open - O_CREAT的描述指向<sys/stat.h>,其中S_IRWXU只是访问权限位宏列表中的第一个。

  

我想删除所有者通过我的C程序执行这个新建文件的权利。

如果您在创建文件时指定了所需权限,则无需在以后删除其中一个 要使用rw-r--r--创建文件,open调用可以是:

out = open(cmd->outFile, O_WRONLY|O_TRUNC|O_CREAT, S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH);