【问题标题】:linux file creation and umask()linux文件创建和umask()
【发布时间】:2014-03-07 01:53:35
【问题描述】:

我有一个写入日志文件的程序。当然必须创建这个日志文件和文件夹,我的程序必须以 root 身份运行,所以它总是创建具有 rw------- 权限的文件夹,并且不能作为普通用户读写。我不要这个,所有用户都应该有读写权限。

我的在线搜索将我带到了 umask(000);但是它仅适用于文件而不适用于文件夹。创建的文件夹对root只有rw权限,对所有其他人没有权限,而文件具有我设置的umask权限。

有人知道这是为什么吗?

【问题讨论】:

  • 您只想使用程序来修复它吗?如果没有,你可以使用 shell。
  • 对目录拥有600 权限是一种惯例;使用700500 会更明智。使用600 权限,您可以读取目录以查看其中有哪些文件,但您无法访问目录中的文件(除非您是 root)。除非您拥有x(搜索)权限,否则您甚至不能在目录中创建文件(root 用户除外)。您的 mkdir() 调用应指定 0755 或类似于第二个参数的内容。
  • 谢谢你的工作!您应该将其添加为答案!

标签: c linux file-io fopen


【解决方案1】:

我会尝试使用<sys/stat.h> 库中的chmod(),其中“[...] 使用指定的权限位并忽略文件创建掩码。”,请参阅here 了解更多信息信息。

#include <sys/stat.h> 
#include <stdio.h>

int main(void) {
  if(chmod("test", 0777) != 0)
    printf("Error while setting permissions on directory.");

  return 1;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-13
    • 1970-01-01
    • 1970-01-01
    • 2011-08-18
    • 2012-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多