在 Linux 中,“进程权限”通常涉及进程的属主/属组、特权级别(如 root)、能力(capabilities)、以及文件/系统资源的访问权限。下面按常见场景系统说明如何“设置”和控制进程权限。
su / sudosudo -u www-data ./app.sh
或以 root 启动后再降权:
sudo ./app.sh
systemd 服务[Service]
User=appuser
Group=appgroup
然后:
systemctl daemon-reload
systemctl restart yourapp
C:
setuid(1000);
setgid(1000);
Python:
os.setuid(1000)
os.setgid(1000)
chmod u+s /usr/bin/myprog
chmod g+s /usr/bin/myprog
效果:
⚠️ 危险,谨慎使用,避免 root SUID 程序。
getcap /usr/bin/ping
setcap cap_net_bind_service=+ep /usr/bin/myapp
常见能力:
cap_net_bind_service:绑定 1024 以下端口cap_sys_admin:高级系统管理cap_dac_override:绕过文件权限检查setcap -r /usr/bin/myapp
nice / ulimitulimit -u 100 # 最大进程数
ulimit -n 1024 # 文件描述符
nice -n 10 ./app
systemd 限制[Service]
NoNewPrivileges=true
ProtectSystem=strict
PrivateTmp=true
docker run --user 1000 --cap-drop ALL myimage
ps -eo pid,user,group,cmd
cat /proc/<pid>/status | grep Cap
✅ 最佳实践:
如果你有具体场景(如:绑定 80 端口、访问设备、容器权限、提权问题),可以告诉我,我可以给更精确的方法。