On вторник, 17 сентября 2019 г. 14:33:39 MSK, Dmitry Alexandrov wrote:
Но входящих коннектов с SOCKS не будет, а для битторрента это
было бы хорошо.
Стоп. Это разные задачи, и к ним разные решения. Для
битторента — это значит для сервера; а раз для сервера — значит
вопрос «чем заменить попользовательский контроль доступа»
неактуален, ведь он все равно по-хорошему будет запускаться от
своего пользователя, а возможно и в своем пространстве сетевых
имен, как т. Мельников предлагает.
Пока что сервер не нужен, только в перспективе, для начала хочу только
браузер.
Попробую изучить cgroup-ы, а это свойство есть и в v1, и в v2?
Нет, это в первых. А в Дебиан уже по-умолчанию вторые завезли?
Да, есть и первые, и вторые.
Чтобы systemd использовал и монтировал вторые, надо добавить аргумент ядру:
systemd.unified_cgroup_hierarchy=1
Тогда там само-то по себе все еще удобнее: возиться вручную с
цифирью (а classid это число), если надо много разных классов
создавать, уже не надо, можно буквами писать.
Но есть и одно большое но: Систем-д. Он предъявляет
монопольное право на распоряжение к-группами. Оно и на первые
предъявлял, просто net_cls от него был свободен. А ко вторым,
как вы знаете, все контроллеры слили в один, так что вот так
по-простому:
...уже не сделаешь. Надо какой-то огород городить, чтобы при
логине создавалось по своему ‘inet’у на каждого пользователя,
причем вместе с отдельными правилами для Нетфильтра (хотя по
делу они нафиг и не нужны).
Я предполагаю делать так:
$ systemd-run --user --scope --unit=inet.scope my_program
При этом запускается my_program, и она засовывается в новую c-группу
inet.scope, которая является подгруппой user@1000.service.
И даже не нужны рут-права, и файлы от этой группы в /sys/fs/ тоже
принадлежат пользователю.
Далее я бы хотел добавить примерно такое правило в nftables:
# nft add rule filter output meta cgroup <...> ip dscp set <...>
Но не пойму, как определить числовой идентификатор группы, который тут
требуется. systemd-cgls его не сообщает, а и в /sys/fs/cgroup тоже его нет.