我在 RaspberryPi 3 上设置了一个小型服务器,并为无根 docker 实例添加了一个新用户(“服务器”)。但我面临的问题是,我没有让 systemd 的用户实例正常工作。它失败并出现以下错误:
systemctl --user status :
Failed to connect to bus: no permission
systemd --user --test :
[...] failed to open directory /home/pi/.config [...]
systemd --user :
Failed to create /user.slice/user-1000.slice/session-1.scope/init.scope control group: Permission denied
Failed to allocate manager object: Permission denied
如您所见,即使我以“服务器”身份登录(通过 su),其中一个错误中也提到了用户“pi”。
所以我的问题是:如何让 systemd 正常工作,以便我可以设置 docker?
uname -a: Linux Pi-Server 5.10.17-v7+ #1421 SMP Thu May 27 13:59:01 BST 2021 armv7l GNU/Linux
命令创建用户:sudo useradd -m -d /home/server server
这比你想象的要棘手得多。
首先,
su
并没有真正以另一个用户身份“登录”。即使在你使用的时候-
,它仍然只有Start the shell as a login shell with an environment similar to a real login
。例如,如果您运行loginctl
,您将不会看到正在创建的会话su
。话虽如此,您想要实现的目标是可能的。您可以运行
loginctl enable-linger server
以使用户实例在启动时启动。然后为了
systemctl --user
在你工作时工作su server
,你需要设置两个环境变量(如果你使用,将它们列入白名单-
):正如 Tom Yan 所说,
su
不会创建新会话。他的解决方案足以解决我的问题,但我想提一下我在搜索 Docker 文档后发现的另一种方法:如果您使用
ssh server@localhost
.