可以 std::filesystem::permissions 更改安全文件权限

Can std::filesystem::permissions change secure file permissions

我一直在试验 std::filesystem,我发现了权限功能,它允许您更改用户对文件的访问权限。这看起来几乎像是一件坏事,因为任何人都可以 运行 一个程序并获得他们不应该访问的文件。这是它的工作原理吗?任何程序都可以访问任何文件并更改其权限。或者程序只能更改它 'owns'?

的文件的权限

操作系统内核负责实施访问控制,这种实施适用于所有程序,无论它们使用什么 API。在 Unix-like 操作系统上,进程只能在以下情况下更改文件权限:

  • 进程的有效用户 ID 与文件的所有者匹配,或者
  • 该进程具有 CAP_FOWNER 能力(通常仅由 root 持有)。

因此,当你编译和运行一个使用std::filesystem::permissions的程序时,它受到上述限制,并且不能乱用其他用户文件的权限willy-nilly。试图违反上述限制的对 std::filesystem::permissions 的调用不会成功,并且(希望)会报告错误 as described here.