Доступ к журналу systemd автономного экземпляра systemd

Ответ Лекенштейна кажется точным и полным, но я попытаюсь дать другое объяснение с другой точки зрения, которое попытается подчеркнуть проблему, которую решает набор внешних возможностей.

Когда вы запускаете sudo capsh --user=<some_user> --Есть 2 интересующих системных вызова, которые приводят к пересчету возможностей (и потенциальному удалению):

  1. setuid:Согласноman capabilities:

SECBIT_KEEP_CAPS Setting this flag allows a thread that has one or more 0 UIDs to retain its capabilities when it switches all of its UIDs to a nonzero value. If this flag is not set, then such a UIDswitch causes the thread to lose all capabilities.

Другими словами, в нашей команде capshвыше мы должны убедиться, что SECBIT _KEEP _CAPS установлен во время системного вызова setuid. В противном случае все возможности теряются. Это то, что делает --keep=1. Итак, теперь команда становитсяsudo capsh --user=<some_user> --keep=1 --

  1. execve:Если мы используем параметр --keep=1, все наборы возможностей (действующие, разрешенные, наследуемые )сохраняются до системного вызова execve, однако execveприводит к тому, что возможности быть пересчитан (и для не -пользователей root ), причем не столь очевидным образом. Короче говоря, до добавления набора внешних возможностей , чтобы возможность находиться в «разрешенном» наборе потока после вызова execve, либо:

    • Файл должен иметь эту возможность в «разрешенном» наборе . Это можно сделать с помощью setcap cap_net_raw+p /bin/bash. Это делает все упражнение бесполезным, поскольку наборы возможностей потока (, отличные от ограничивающего набора ), больше не действуют.
    • И файл, и поток должны иметь эту возможность в своих «наследуемых» наборах . Вы можете подумать, что setcap cap_net_raw+iсправится с задачей, но оказывается, что execveприводит к сбросу наследуемых разрешений потока при вызове непривилегированными пользователями (, которыми мы в настоящее время являемся благодаряsetuid). Таким образом, непривилегированный пользователь не может выполнить это условие.

Возможности окружения, представленные в Linux 4.3, позволяют потоку сохранять свои возможности даже после setuidдля непривилегированного пользователя, за которым следует execve, , не полагаясь на возможности файла.

1
26.10.2016, 14:16
1 ответ

Если вы можете смонтировать диск вашей автономной системы, вы можете использовать опцию -Dили --directoryс journalctl. Например, если вы монтируете диск в /mnt, вы можете получить доступ к его журналу с помощью

journalctl -D /mnt/var/log/journal
3
16.11.2020, 23:40

Теги

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