设置POSIX capabilities

POSIX capabilities 允许为进程细化权限。除了标准的UNIX权限方案之外,它们为系统资源定义了新的一组权限。要启用capabilities支持 (仅Linux),构建uWSGI之前,你必须安装 libcap 头文件 (在基于Debian的发行版上,则是 libcap-dev )。像往常一样,在 setuid 调用之后,你的进程将会失去几乎所有的capabilities。uWSGI的 cap 选项允许你定义一个通过调用保持的capabilities列表。

例如,要允许你的非特权应用绑定到特权端口,并且设置系统时钟,你将使用以下选项。

  1. uwsgi --socket :1000 --uid 5000 --gid 5000 --cap net_bind_service,sys_time

uWSGI生成的所有进程稍后将继承此行为。如果你的系统支持在uWSGI列表中不可用的capabilities,那么你可以简单指定常数数:

  1. uwsgi --socket :1000 --uid 5000 --gid 5000 --cap net_bind_service,sys_time,42

除了 net_bind_servicesys_time 之外,添加了一个数字为“42”的新capability。

可用capabilities

这是可用capabilities列表。

audit_controlCAP_AUDIT_CONTROL
audit_writeCAP_AUDIT_WRITE
chownCAP_CHOWN
dac_overrideCAP_DAC_OVERRIDE
dac_read_searchCAP_DAC_READ_SEARCH
fownerCAP_FOWNER
fsetidCAP_FSETID
ipc_lockCAP_IPC_LOCK
ipc_ownerCAP_IPC_OWNER
killCAP_KILL
leaseCAP_LEASE
linux_immutableCAP_LINUX_IMMUTABLE
mac_adminCAP_MAC_ADMIN
mac_overrideCAP_MAC_OVERRIDE
mknodCAP_MKNOD
net_adminCAP_NET_ADMIN
net_bind_serviceCAP_NET_BIND_SERVICE
net_broadcastCAP_NET_BROADCAST
net_rawCAP_NET_RAW
setfcapCAP_SETFCAP
setgidCAP_SETGID
setpcapCAP_SETPCAP
setuidCAP_SETUID
sys_adminCAP_SYS_ADMIN
sys_bootCAP_SYS_BOOT
sys_chrootCAP_SYS_CHROOT
sys_moduleCAP_SYS_MODULE
sys_niceCAP_SYS_NICE
sys_pacctCAP_SYS_PACCT
sys_ptraceCAP_SYS_PTRACE
sys_rawioCAP_SYS_RAWIO
sys_resourceCAP_SYS_RESOURCE
sys_timeCAP_SYS_TIME
sys_tty_configCAP_SYS_TTY_CONFIG
syslogCAP_SYSLOG
wake_alarmCAP_WAKE_ALARM