温馨提示×

Linux C++配置权限怎么改

小樊
41
2026-07-31 18:19:54
栏目: 编程语言

在 Linux 下用 C++ 修改文件/进程权限,常见有几种方式,取决于你想“改什么权限”。下面按最常见的场景给你说明。


一、修改文件/目录权限(最常用)

✅ 使用 chmod(推荐)

1️⃣ 在终端直接改

chmod 755 test.cpp
chmod +x program

2️⃣ 在 C++ 中调用 chmod

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

int main() {
    if (chmod("test.txt", S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH) == -1) {
        perror("chmod failed");
    } else {
        std::cout << "权限修改成功" << std::endl;
    }
    return 0;
}

常用宏:

含义
S_IRUSR 用户读
S_IWUSR 用户写
S_IXUSR 用户执行
S_IRGRP 组读
S_IROTH 其他读

等价于:

chmod("test.txt", 0644);

二、修改文件所有者(chown)

#include <unistd.h>

int main() {
    chown("test.txt", 1000, 1000);  // uid, gid
    return 0;
}

⚠️ 需要 root 权限


三、修改当前进程权限(切换用户)

setuid / setgid

#include <unistd.h>
#include <sys/types.h>

int main() {
    setuid(0);   // 切换到 root(需要程序有 SUID 位)
    return 0;
}

配合:

sudo chown root program
sudo chmod u+s program

⚠️ 非常危险,谨慎使用


四、修改程序自身运行权限(可执行)

g++ main.cpp -o main
chmod +x main

五、你可能问的「配置权限」含义

场景 方法
文件不能读写 chmod
程序无法执行 chmod +x
配置文件被拒绝访问 检查用户/组
需要 root 权限 sudo / setuid
systemd / 服务权限 修改 service 文件

六、常见错误

Permission denied ✅ 检查:

  • 当前用户
  • 文件属主
  • 是否加了 sudo

七、如果你愿意,我可以更具体帮你

你可以直接告诉我:

  1. 是文件权限还是进程权限?
  2. 是普通程序还是服务?
  3. 报错信息是什么?

我可以给你 针对你项目的完整示例代码

0