使用 C++ 设置目录的权限

Setting permissions to a directory using C++

本文关键字:权限 C++ 设置 使用      更新时间:2023-10-16

我尝试创建新目录并设置其权限(最多使用 c++11 并且没有 boost(,以便用户、组和其他人可以列出其中的文件读取它们并写入新文件(Linux环境(。

#include <sys/stat.h>
#include <sys/types.h>
int main(void) {
const char* path = "/tmp/newDir";
mode_t process_mask = umask(0);
int syscall_status = mkdir(path, S_IRWXU | S_IRWXG | S_IRWXO);
umask(process_mask);
return syscall_status;
}

此代码基于 mkdir(和 umask(的 man (2( 页面。 但是,创建的目录具有rwxr-xr-x权限(没有组和其他目录的写入权限(。 我也尝试在目录上使用chmod系统调用,但它没有解决问题。stackoverflow 中的其他源处理了文件(而不是文件夹(,并且尝试在我的目录上应用文件方法

也不起作用。另外,我想避免从 stdlib 调用 system((,如果我找不到解决方案(安全考虑(,这是我将使用的最后一个选项。

>
char* path = "/tmp/newDir";

除了语法错误之外,自 C++11 年以来格式不正确。在此之前,这将使用已弃用的转换。字符串文字在 C++ -> 中使用指向 const 的指针中是常量。

除此之外,假设使用POSIX系统,该程序是正确的。如果失败,则可以检查errno以了解原因。如果您没有获得所有权限:检查父目录是否具有默认 ACL;这将覆盖 umask。

std::filesystem::create_directoryC++中创建目录的便携式方法,std::filesystem::permissions设置权限的方法