设置POSIX capabilities
POSIX capabilities 允许为进程细化权限。除了标准的UNIX权限方案之外,它们为系统资源定义了新的一组权限。要启用capabilities支持 (仅Linux),构建uWSGI之前,你必须安装 libcap
头文件 (在基于Debian的发行版上,则是 libcap-dev
)。像往常一样,在 setuid
调用之后,你的进程将会失去几乎所有的capabilities。uWSGI的 cap
选项允许你定义一个通过调用保持的capabilities列表。
例如,要允许你的非特权应用绑定到特权端口,并且设置系统时钟,你将使用以下选项。
- uwsgi --socket :1000 --uid 5000 --gid 5000 --cap net_bind_service,sys_time
uWSGI生成的所有进程稍后将继承此行为。如果你的系统支持在uWSGI列表中不可用的capabilities,那么你可以简单指定常数数:
- uwsgi --socket :1000 --uid 5000 --gid 5000 --cap net_bind_service,sys_time,42
除了 net_bind_service
和 sys_time
之外,添加了一个数字为“42”的新capability。
可用capabilities
这是可用capabilities列表。
audit_control | CAP_AUDIT_CONTROL |
audit_write | CAP_AUDIT_WRITE |
chown | CAP_CHOWN |
dac_override | CAP_DAC_OVERRIDE |
dac_read_search | CAP_DAC_READ_SEARCH |
fowner | CAP_FOWNER |
fsetid | CAP_FSETID |
ipc_lock | CAP_IPC_LOCK |
ipc_owner | CAP_IPC_OWNER |
kill | CAP_KILL |
lease | CAP_LEASE |
linux_immutable | CAP_LINUX_IMMUTABLE |
mac_admin | CAP_MAC_ADMIN |
mac_override | CAP_MAC_OVERRIDE |
mknod | CAP_MKNOD |
net_admin | CAP_NET_ADMIN |
net_bind_service | CAP_NET_BIND_SERVICE |
net_broadcast | CAP_NET_BROADCAST |
net_raw | CAP_NET_RAW |
setfcap | CAP_SETFCAP |
setgid | CAP_SETGID |
setpcap | CAP_SETPCAP |
setuid | CAP_SETUID |
sys_admin | CAP_SYS_ADMIN |
sys_boot | CAP_SYS_BOOT |
sys_chroot | CAP_SYS_CHROOT |
sys_module | CAP_SYS_MODULE |
sys_nice | CAP_SYS_NICE |
sys_pacct | CAP_SYS_PACCT |
sys_ptrace | CAP_SYS_PTRACE |
sys_rawio | CAP_SYS_RAWIO |
sys_resource | CAP_SYS_RESOURCE |
sys_time | CAP_SYS_TIME |
sys_tty_config | CAP_SYS_TTY_CONFIG |
syslog | CAP_SYSLOG |
wake_alarm | CAP_WAKE_ALARM |