Как установить состояние служба отключена в системе, смонтированной в автономном режиме

They both seem to me to create a login session for target-user.

На самом деле это не так. suне создает сеанс входа в систему. Он «переключает пользователя» для запуска программы под эгидой другой учетной записи пользователя, добавляя привилегии (привилегии этой учетной записи )к совокупности привилегий, доступных пользователю существующего сеанса входа в систему, который она обкатана.

Фактически, программа loginтакже не создает сеанс входа в систему . Он ожидает, что сеанс входа в систему с запущенным процессом login, помеченным как процесс лидера сеанса , и подключенным управляющим терминалом, уже настроен тем, кто его вызвал. login target-user, предполагая, что встроенная -в loginкоманда оболочки C, которая фактически является exec, co -выбирает существующий уже -установленный -сеанс входа в систему для другая учетная запись пользователя. Это, конечно, влечет за собой риски, которые к этому моменту хорошо известны.

Это, конечно, с учетом концепции ядра о сеансе входа в систему , который включает в себя лидера сеанса , управляющий терминал и группы процессов. . Люди из systemd изобрели свою собственную полностью прикладную -концепцию сеанса входа в систему, управляемую systemd-logindв сочетании с подключаемыми модулями PAM -. Правила здесь немного отличаются, отчасти потому, что люди systemd испортили их, объединив остановку службы при завершении работы с зависанием сеанса (и все еще должны это исправить ). Но suтакже не создает сеанс входа в систему такого типа.

Дополнительная литература

0
10.05.2020, 09:43
2 ответа

chroot в смонтированную новую систему:

  mkdir /media/tmp/
  mount /dev/vg0/vm01.tmp-disk-snapshot /media/tmp/
  mount -t proc none /media/tmp/proc
  mount --bind /dev /media/tmp/dev
  mount -t sysfs sysfs /media/tmp/sys
  chroot /media/tmp/ /bin/bash

Делайте свою работу и выходите

systemctl disable postfix
exit
0
28.04.2021, 23:15

Предположим, что вы смонтировали корень файловой системы в /mnt/serverdisk,

cd /mnt/serverdisk
rm -v etc/systemd/system/multi-user.target.wants/postfix.service

Этого должно быть достаточно.

Вот демо на CentOS 8, показывающее, что удаление символической ссылки ничего не ломает:

[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 8.0.1905 (Core)
[root@localhost ~]#
[root@localhost ~]# systemctl get-default
multi-user.target
[root@localhost ~]#
[root@localhost ~]# runlevel
N 3
[root@localhost ~]# systemctl is-enabled postfix
enabled
[root@localhost ~]# rm -v /etc/systemd/system/multi-user.target.wants/postfix.service
rm: remove symbolic link '/etc/systemd/system/multi-user.target.wants/postfix.service'? y
removed '/etc/systemd/system/multi-user.target.wants/postfix.service'
[root@localhost ~]#
[root@localhost ~]# systemctl is-enabled postfix
disabled
[root@localhost ~]#
[root@localhost ~]# systemctl enable postfix
Created symlink /etc/systemd/system/multi-user.target.wants/postfix.service → /usr/lib/systemd/system/postfix.service.
[root@localhost ~]#
[root@localhost ~]# systemctl is-enabled postfix
enabled
[root@localhost ~]#
1
28.04.2021, 23:15

Теги

Похожие вопросы