Как читать /proc/PID/maps без sudo?

К сожалению, нет, невозможно получить доступ к юнитам, работающим под менеджером юнитов systemd, при работе от root...

Это почти можно сделать, запустив systemctl --user statusот имени пользователя root и установив переменную окружения XDG_RUNTIME_DIRтак, чтобы она указывала на/run/user/(см. соответствующий код в bus_connect_user_systemd()), но, к сожалению, этого недостаточно:

# XDG_RUNTIME_DIR=/run/user/1000 systemctl --user status
Failed to connect to bus: Operation not permitted

Проблема в том, что после подключения к диспетчеру пользователей systemd проверяет, соответствует ли запущенный uid systemctlтому, который владеет сокетом для менеджера (см. соответствующий код вbus_check_peercred()).

Таким образом, лучше всего просто использовать su, чтобы стать пользователем и проверить состояние устройства. Кроме того, при использовании suвам все равно нужно установить XDG_RUNTIME_DIR, так как в противном случае systemctlможет не найти сокет для менеджера:

# su cytrinox -c 'XDG_RUNTIME_DIR=/run/user/$UID systemctl --user status'

(Или соответствующую команду systemctl status, которую вы хотите использовать для вашего модуля фрагментов Firefox...)

0
04.12.2020, 03:10
1 ответ

Владение файлами в /proc/ контролируется флагом «dumpable» внутри ядра Linux, который используется для предотвращения утечки информации из привилегированного процесса непривилегированному пользователю.

Когда процесс получает возможности, он становится привилегированным процессом, и /proc/ теперь принадлежит пользователю root.

Ответ в :Потеря разрешений при добавлении возможностей? а также Как прочитать каталог /proc//fd процесса, который поддерживает Linux?

1
18.03.2021, 22:45

Теги

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