Разве systemd не защищает процессы от захвата управляющего терминала?

Everything gets installed in the root directory

Я предполагаю, что вы имеете в виду «в корневом разделе». «Корневой каталог» — это домашний каталог root , привилегированного пользователя.

the following sub drives

Вероятно, вы имели в виду «разделы».

16gb for switch

Я предполагаю, что это "своп".

Вы не можете устанавливать пакеты из диспетчера пакетов на «домашний» раздел; это пространство, посвященное вашим личным файлам и данным.

Поскольку у вас явно нет опыта работы с Linux (без обид ), лучшее, что вы можете сделать, это попросить человека, который сделал для вас разметку, и потребовать, чтобы он расширил корневой раздел, возможно, добавив диск.

1
01.06.2018, 15:19
2 ответа

systemd no protege los programas de servicio contra la adquisición de una terminal de control. Deben protegerse cuando abren archivos de registro especificados por el usuario -, mediante el uso de la bandera O_NOCTTY.

$ rpm -q systemd
systemd-238-8.git0e0aa59.fc28.x86_64

$ systemctl cat test
# /etc/systemd/system/test.service
[Service]
Type=simple
ExecStart=/bin/sh -c "exec cat </dev/tty10 >/dev/tty10"

$ systemctl status test
● test.service
   Loaded: loaded (/etc/systemd/system/test.service; static; vendor preset: disabled)
   Active: active (running) since Fri 2018-06-01 11:28:41 BST; 1min 35s ago
 Main PID: 12173 (cat)
    Tasks: 1 (limit: 4915)
   Memory: 180.0K
   CGroup: /system.slice/test.service
           └─12173 cat

Jun 01 11:28:41 alan-laptop systemd[1]: Started test.service.

$ ps -ejf
UID        PID  PPID  PGID   SID  C STIME TTY          TIME CMD
...
root     12173     1 12173 12173  0 11:28 tty10    00:00:00 cat

También confirmé que cambiar a tty10 y presionar Ctrl+C detiene el proceso cat.

1
28.04.2021, 23:46

Does systemd provide some protection against this […]?

Usted está asumiendo que debería. Por el contrario, considere configuraciones como TTYPathy servicios como getty@.service. La capacidad de obtener un terminal de control es en realidad necesaria , para que la gestión de servicios pueda abarcar los servicios de inicio de sesión de TTY, que deben hacer precisamente eso.

Lo que realmente protege contra esto es alejarse de la asignación automática de un terminal de control en open()y descartar la semántica antigua. O protegería contra ella. No es el caso en Linux, pero en FreeBSD, NetBSD, OpenBSD y Hurd hoy en día la bandera O_NOCTTYa open()es completamente superflua. La única forma de adquirir una terminal de control es exigiéndola explícitamente, con ioctl(…TIOSCTTY). Este ha sido el caso durante casi un cuarto de siglo, desde los días de 4.4BSD.

Mientras tanto, el hábito de entrar en Linux es el hábito que también ha sido el caso durante mucho tiempo, mucho antes de systemd:O_NOCTTYen todas partes . & #9786;

(Sí, las bibliotecas GNU y musl C no te dan esto por fopen(). Esta es una de varias razones por las que fdopen()sigue siendo un mecanismo útil.)

La gestión de servicios con el conjunto de herramientas de nosh service-managertoma un rumbo ligeramente diferente en esto. En lugar de convertir siempre los procesos daemon en líderes de sesión, a cada servicio se le asigna su propio objeto de sesión del kernel que luego no tiene uso, solo los servicios específicos también se encadenan a través de setsidexplícitamente; tales como ttylogin@*servicios que utilizan open-controlling-tty, agetty@*servicios donde, por supuesto, agettyconfigura el terminal de control y getty@*servicios. (Como se indica en la fuente del servicio, mgettyse llama setsid()a sí mismo.)

Lecturas adicionales

2
28.04.2021, 23:46

Теги

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