gpt4 book ai didi

ssh - su 不会将所有内容更改为其他用户 (cgroups)

转载 作者:行者123 更新时间:2023-12-04 16:26:28 25 4
gpt4 key购买 nike

如果我运行这个命令:

su -l otheruser -c 'strace /usr/lib/systemd/systemd --user 2> /tmp/su.err'

失败了:

Failed to create root cgroup hierarchy: Permission denied

Failed to allocate manager object: Permission denied

我在 strace 输出中看到以用户身份启动 systemd 失败:

mkdir("/sys/fs/cgroup/systemd/user/root/754/systemd-3893", 0755) = -1 
EACCES (Permission denied)

/sys/fs/cgroup/systemd/user/root/从哪里来?

如果我通过 ssh 向本地主机运行相同的命令,它会起作用:

ssh otheruser@localhost 'strace /usr/lib/systemd/systemd --user 2> /tmp/ssh.err'

在这里,使用了正确的目录:

mkdir("/sys/fs/cgroup/systemd/user/modwork_gew_dfj/825/systemd-4272", 0755) = 0

为什么它可以通过 ssh 而不是通过 su?

版本:su (GNU coreutils) 8.17

更新

在这里你可以看到 cgroup 没有被我的 su 版本改变:

host:~ # su -l otheruser
otheruser@host:~$ cat /proc/$PPID/cgroup
10:hugetlb:/
9:perf_event:/
8:blkio:/
7:net_cls:/
6:freezer:/
5:devices:/
4:memory:/
3:cpuacct,cpu:/
2:cpuset:/
1:name=systemd:/user/root/5913 <################ root

通过ssh:

host:~ # ssh otheruser@host
otheruser@host:~$ cat /proc/$PPID/cgroup
10:hugetlb:/
9:perf_event:/
8:blkio:/
7:net_cls:/
6:freezer:/
5:devices:/
4:memory:/
3:cpuacct,cpu:/
2:cpuset:/
1:name=systemd:/user/otheruser/5919 <################ otheruser

更新2

我的 su 版本不会更改 cgroup(请参阅用户“ax”的回答中的链接)。有没有办法改变调用 su 的 cgroup(之前或之后)?

更新3

这个版本没有这个问题:su util-linux 2.25

最佳答案

su inherits its cgroup from the originating session ,而不是来自传递给 su 的用户。因此,当您以 root 身份调用 su -l otheruser -c systemd ... 时,systemd 会尝试使用 root cgroup (/sys/fs/cgroup/systemd/user/root/...) 作为 otheruser 失败。

使用 ssh otheruser@localhost ...,用户和 cgroup 都是 otheruser,一切都按预期进行。

关于ssh - su 不会将所有内容更改为其他用户 (cgroups),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39121046/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com