首页 > 解决方案 > 从 root 特权进程创建可访问文件

问题描述

我有一堆来自不同权限的进程,所有进程都运行一个共享代码,该代码使用带有“a+”标志的 fopen_s 打开(并在需要时创建)一个用于写入的文件。

但是,由于没有提供给该命令的权限,并且根进程首先创建该文件,因此其他非根进程无法访问该文件。

我可以使用int open(const char *pathname, int flags, mode_t mode);并因此控制文件权限(由 mode_t 表示)以允许所有人访问,但我需要文件描述符 ( FILE *) 而不是 fileID。所以我可以FILE *fdopen(int fd, const char *mode);用来进行转换。

也许有更直接的方法可以做到这一点?

标签: c++clinuxfilefopen

解决方案


不,您描述的技术(open后跟fdopen)是实现您想要做的事情的正确方法。正如一些程序员老兄指出的那样,您可以chmod在程序创建后调用以更改文件权限,但这是一种更迂回的方式。


推荐阅读