Сделайте так, чтобы двоичный файл всегда запускался в контрольной группе

Нет, не в смысле файла на жестком -диске или другом блочном устройстве.

Если вы посмотрите на socket.c в исходном коде Linux, вы увидите, что он создает inode для сокетов, однако данные находятся в файловой системе sockfs , которая является виртуальной файловой системой. внутри самого ядра, а пространство выделяется с помощью функции типа kmalloc. В этом смысле сокеты — это анонимные файлы, находящиеся в памяти.

Это возвращает нас к концепции «всё является файлом в Unix», которая представляет собой шаблон проектирования, ориентированный на наличие общих утилит для выполнения тех же функций, что и файлы на реальных физических носителях. Как заявил Линус Торвальдс :

The whole point with "everything is a file" is not that you have some random filename (indeed, sockets and pipes show that "file" and "filename" have nothing to do with each other), but the fact that you can use common tools to operate on different things.

Таким образом, сокеты имеют inode для доступа к файлу -, но не присутствуют в физической файловой системе.

Тем не менее, обратите внимание, что существуют доменные сокеты Unix, которые представляют собой объект типа IPC, предназначенный для объединения процессов в сеть, и находятся в дисковых файловых системах.

0
06.03.2021, 02:36
1 ответ

И AppArmor, и SELinux являются модулями LSM. Они не знают о cgroups. Вы не можете использовать их для этой цели.

Лучше всего использовать подход-оболочку.

Вы можете поместить оболочку в каталог ~/binи поставить этот каталог на первое место в вашей переменной окружения PATH. Затем в обертке вам нужно использовать полный путь к файлу двоичного файла, чтобы избежать бесконечного цикла. Таким образом, все инструменты, которые используют относительное двоичное имя и следуют PATH, будут выполнять оболочку. Но это также означает, что вам может понадобиться настроить файлы .desktopтак, чтобы они использовали оболочку, поскольку они обычно используют полный путь к исполняемому файлу.

Если вы действительно хотите избежать обертки, вам придется написать скрипт, который отслеживает запущенные процессы и перемещает те, которые соответствуют вашим критериям, в целевые cgroups. Я считаю, что это более хакерский подход по сравнению с подходом обертки.

1
18.03.2021, 22:27

Теги

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