我正在构建一个包含需要监听端口 443 的 web 服务的包。服务本身是用 Go 编写的,所以我不能使用 authbind 来管理端口权限。相反,我选择使用 setcap:
me@buildbox $ setcap CAP_NET_BIND_SERVICE=+eip opt/myservice/myservice
me@buildbox $ getcap opt/myservice/myservice
opt/myservice/myservice = cap_net_bind_service+eip
但是,当我在我的服务器上安装软件包时,不会保留此功能。
me@myserver $ apt-get install myservice
...
# installs normally
...
me@myserver $ getcap /opt/myservice/myservice
me@myserver $ # ^ No output == no capabilities
我真的不希望该服务以 root 身份运行,但我无法想出一个在安装软件包时保留的解决方案。我可以以某种方式在 debian 包中设置功能吗?是否有另一种方法可以达到预期的最终结果(服务可以绑定到端口 443,但不能以 root 身份运行)。