我正在尝试提高作为 systemd 服务运行的 Flask Web 服务器的安全性:
[Unit]
Description=Configuration Server
[Service]
Type=simple
ExecStart=/usr/bin/configui
ProtectSystem=full
ProtectHome=yes
CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_BIND_SERVICE
ReadWritePaths=/var/lib/configui/
NoNewPrivileges=yes
PrivateTmp=yes
PrivateDevices=yes
DevicePolicy=closed
ProtectControlGroups=yes
ProtectKernelModules=yes
ProtectKernelTunables=yes
RestrictAddressFamilies=AF_UNIX AF_INET AF_INET6 AF_NETLINK
RestrictRealtime=yes
RestrictSUIDSGID=yes
MemoryDenyWriteExecute=yes
LockPersonality=yes
[Install]
WantedBy=multi-user.target
/var/lib/configui/data.json.new
但是,当应用程序尝试写入临时文件时,我遇到了问题。完成此操作后,应用程序将/var/lib/configui/data.json
用它覆盖。 Python 抛出权限被拒绝错误。该目录的内容:
root@XXXXXX:/var/lib/configui# ls -ll
total 16
-rw-r----- 1 userA userA 589 Jul 30 2020 data.json
我知道我可以通过添加 CAP_DAC_OVERRIDE 来使其工作,但这违背了限制读写操作的目的。