温馨提示×

debian进程权限怎么设

小樊
36
2026-10-07 12:16:09
栏目: 智能运维

在 Debian(以及所有 Linux 发行版)里,“进程权限”通常不是“单独给进程设权限”,而是由进程的「运行用户/组」+ 文件/系统权限 + 安全机制共同决定的。下面按常见场景给你系统讲一下。


一、最基础:以哪个用户运行进程(最重要)

1. 指定运行用户

sudo -u www-data python app.py

进程就以 www-data 身份运行,权限等同于该用户。

2. 服务进程(systemd)

在 /etc/systemd/system/xxx.service 中:

[Service]
User=www-data
Group=www-data
ExecStart=/usr/bin/python /opt/app/app.py

然后:

sudo systemctl daemon-reload
sudo systemctl restart xxx

✅ 推荐方式:服务都用 systemd 指定用户


二、文件/目录权限决定进程能做什么

进程能读/写/执行什么,取决于:

  • 进程的用户
  • 文件的 owner / group / permission
ls -l /var/www/html
# -rw-r--r-- 1 www-data www-data 123 Apr 10 10:00 index.html

常用命令:

chown user:group file
chmod 640 file
chmod 750 dir

三、提权与降权

1. 以 root 启动,再降权(常见服务做法)

setuid(1000);

或 Python:

os.setuid(1000)

2. 给程序 root 能力(不推荐随便用)

sudo chmod u+s /usr/bin/myprog

⚠️ 非常危险,容易出安全漏洞


四、Linux 权限能力(Capabilities,更细粒度)

比 root 更安全:

sudo setcap cap_net_bind_service=+ep /usr/bin/myprog

例如:

  • 绑定 80 端口但不给 root
  • 不需要 sudo

查看:

getcap /usr/bin/myprog

五、强制访问控制(高级安全)

Debian 支持:

1. AppArmor(Debian 默认)

sudo aa-status
sudo aa-enforce /etc/apparmor.d/usr.bin.myprog

2. SELinux(Debian 用得少)


六、常见需求对照表

需求 做法
普通用户跑服务 systemd User=
绑定 80 端口 setcap cap_net_bind_service
限制进程权限 非 root + AppArmor
只允许读某目录 文件权限 + 用户组
临时提权 sudo / polkit

七、排查进程权限

ps -eo pid,user,cmd | grep app
id www-data
ls -l /path

如果你能说清楚:

  • 是 服务 / 脚本 / 二进制
  • 想 限制权限 还是 提升权限
  • Debian 版本(cat /etc/debian_version)

我可以直接给你具体配置示例。

0 踩