Ubuntu20.04下非root用户svc_auto_bm无法免密管理http.server.service服务的问题求助
Ubuntu20.04下非root用户svc_auto_bm无法免密管理http.server.service服务的问题求助
大家好,我在Ubuntu 20.04.6 LTS上遇到了一个权限配置的问题,想请各位帮忙排查一下。
环境与服务配置
- 系统版本:Ubuntu 20.04.6 LTS
- 我部署了一个运行在6000端口的HTTP服务,对应的systemd服务文件
/etc/systemd/system/http.server.service内容如下:
[Unit] Description = Job that runs simple http server daemon [Service] Type=simple WorkingDirectory=/home/svc_auto_bm/projects/lab_automation_bot/output User=svc_auto_bm ExecStart=/usr/bin/python3 -m http.server 6000 ExecStop=/bin/kill `/bin/ps aux | /bin/grep http.server | /bin/grep -v grep | /usr/bin/awk '{ print $2 }'` Restart=on-abort [Install] WantedBy=multi-user.target
注:root用户可以正常启动、管理这个服务,没有任何问题。
遇到的问题
我创建了用户svc_auto_bm,希望让这个用户能够免密启动、停止、重启http.server.service,但切换到该用户执行systemctl start http.server.service等命令时,会弹出需要输入密码的窗口,而且可选用户列表里根本没有svc_auto_bm,完全无法完成操作。
已尝试的配置
为了实现免密权限,我配置了Polkit相关规则:
- 在
/etc/polkit-1/localauthority/50-local.d/下创建了service-auth.pkla文件:
[Allow svc_auto_bm to start/stop/restart services] Identity=unix-group:svc_auto_bm Action=org.freedesktop.systemd1.manage-units ResultActive=yes
- 在
/etc/polkit-1/rules.d/下创建了三个规则文件(service-auth.rules、http.server.rules、svc_auth_bm.rules),内容完全一致:
polkit.addRule(function(action, subject) { if (action.id == "org.freedesktop.systemd1.manage-units" && subject.isInGroup("svc_auto_bm")) { if (action.lookup("unit") == "http.server.service") { var verb = action.lookup("verb"); if (verb == "start" || verb == "stop" || verb == "restart") { return polkit.Result.YES; } } } });
求助问题
我已经做了以上配置,但还是无法实现svc_auto_bm用户免密管理目标服务,想请教各位:哪里配置出错了?或者还有什么遗漏的步骤需要补充吗?
备注:内容来源于stack exchange,提问作者user305312
相关产品推荐
相关产品推荐

