Назад | Перейти на главную страницу

Почему `systemd-run --user` не применяет такие ограничения, как` ProtectSystem`?

Если я запустил это как root, он правильно напечатает touch: не удается коснуться '/ tmp / test': файловая система только для чтения.:

systemd-run --pty --property=ProtectSystem=strict /bin/bash -c "touch /tmp/test"

Если я запускаю его от имени себя, в диспетчере служб моего пользователя (--user), меня больше не защищает, /tmp/test создано:

systemd-run --user --pty --property=ProtectSystem=strict /bin/bash -c "touch /tmp/test"

Зачем?

Я думаю, мне не хватает фундаментального понимания того, что такое «менеджер служб» в systemd. Systemd будет большой частью моей (нашей) жизни, поэтому я действительно хотел бы понять его достаточно, чтобы понять вышесказанное. Есть документ, объясняющий это?

Контекст: я пытаюсь изолировать ненадежный скрипт (полученный через npm). Запуск systemd-run от имени root кажется неверным, тем более что наша система сборки будет использовать это. Я мог бы использовать firejail, но у меня уже есть systemd, и я знаком с различными свойствами песочницы, поэтому, если это вообще возможно, я хотел бы добиться успеха с systemd-run.

Спасибо!

ProtectSystem и другие Protect* параметры используют монтирования привязки только для чтения для обеспечения защиты. Это то, что не может сделать пользователь без полномочий root, поэтому вы не можете сделать это в сеансе пользователя (без полномочий root), только в системном сеансе.