Если я запускаю эту команду:
su -l otheruser -c 'strace /usr/lib/systemd/systemd --user 2> /tmp/su.err'
Это не удается:
Не удалось создать корневую иерархию cgroup: разрешение отклонено
Не удалось выделить объект менеджера: разрешение отклонено
В выводе 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
Обновлять
Здесь вы можете видеть, что контрольная группа не меняется в моей версии 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"). Есть ли способ изменить cgroup (до или после) вызова su
?
Обновление3
В этой версии нет этой проблемы: su util-linux 2.25
su
не меняет контрольную группу? Что говорят люди из gnu coreutils? - person guettli   schedule 29.08.2016su -
полностью сбросить вашу среду и получить новую оболочку входа для root. (Вы также можете сделать это с конкретными пользователями, например,su - guettli
) - person Adam Katz   schedule 29.08.2016su -l guettli
делает то же самое, что иsu - guettli
. - person guettli   schedule 30.08.2016