我有一个自定义守护进程,用于管理我的代理 (HAProxy) 的黑名单。当黑名单更新时,我需要重新加载 haproxy,以便它具有最新的代理。不幸的是,手动重新加载 haproxy 是不合理的,因为黑名单可能一天更新几次。
为了解决这个问题,我创建了一个脚本来重新加载 haproxy,但它需要以 root 身份运行,这样它才能通过 systemctl 进行正确管理。此脚本位于守护进程用户的 bin 目录中。我还将文件的所有权更改为另一个用户(目前为 root),并将权限更改为 -r-xr-x---。我计划将守护进程用户添加到 sudoers 文件中,而无需密码访问此脚本。
我想知道这种做法是否“安全”或者是否有更好的替代方案?
答案1
是的,正确的设置方法是编写一个只执行守护进程需要的操作的脚本,并创建一个特定的 sudoers 条目以允许守护进程执行该脚本。但守护进程用户不能修改该脚本至关重要,因此我不会将其存储在守护进程的主目录中。而是将其放在某个地方,/usr/local/bin
并使其只能由 root 写入。