飘在云端

东西南北,海角天涯

· 备查 · · 426次浏览

AmbientCapabilities=CAP_NET_BIND_SERVICE

AmbientCapabilities=CAP_NET_BIND_SERVICE
centos7.6 + 的内置systemctl版本是219,在github上面,此时此刻已经有243+的版本了。
根据现有脚本依葫芦画瓢,打算使用系统级的systemd作为守护进程。
初衷不打算使用root权限运行服务,根据相关网络资料,得知systemd有一个参数,可以使无root权限的用户如nobody,使用1024以下的网络端口,但参数AmbientCapabilities 对systemd有版本要求,≥230+,如下这么写,使用默认内置版本219运行后报 "status=218/Capabilities"错误,是因为版本太低不支持该参数。
此外cap_net_bind_service这个参数限制太多,只能应用在可执行文件本身和进程,不能是脚本什么的,脚本中指向的其他应用也不行,不支持suid,不支持LD_LIBRARY_PATH。

[Unit]
    Description=abc
    After=network-online.target
    Wants=network-online.target

[Service]
    ExecStart=/abc/123/test.py
    AmbientCapabilities=CAP_NET_BIND_SERVICE
    LimitNOFILE=infinity
    User=test
    Group=test
    Restart=on-failure

[Install]
    WantedBy=multi-user.target

我尝试升级systemd,但是发现源码编译安装困难重重(真的很困难),各种依赖和各种莫名其妙的问题,实在填不完的坑,最后只能暂时搁置,简单粗暴的直接root用户启动脚本,快乐完事。

评论 (0条)