Как запустить команду внутри работающего контейнера systemd

Существует половина истины к предыдущим операторам. Можно установить сценарий так, чтобы это не было читаемо пользователем, но все еще исполняемо. Процесс немного вытянут, но это выполнимо путем создания исключения в/etc/sudoer так, чтобы пользователь мог запустить скрипт как самостоятельно временно, не будучи предложенным пароль. Этот метод: - обходит патч setuid для других дистрибутивов. - позволяет Вам давать поднятые полномочия временно для определенного сценария, не давая пользователю sudo права на все.

Следуйте инструкциям на этом сообщении: разрешение Файла выполняется только

7
22.07.2018, 07:17
2 ответа

Попробуйте systemd-run :

# systemd-nspawn -D <machine-root> -b 3 --link-journal host

# systemd-run --machine <machine-name> env
Running as unit run-1356.service.

# journalctl --machine <machine-name> -u run-1356 -b -q
Oct 30 07:45:09 jessie-64 systemd[1]: Started /usr/bin/env.
Oct 30 07:45:09 jessie-64 env[37]: PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

Выдержка из справочной страницы :

Используйте оболочку (см. ниже) или systemd-run (1) с переключателем --machine = для прямого вызова одной команды в интерактивном или фоновом режиме.

(Команда оболочка доступна с v225 )

5
27.01.2020, 20:27

Для систем без machinectl shell(, напр. systemd v219 в CentOS 7 Atomic )или в ситуациях, когда machinectl loginне работает по какой-либо причине, вы можете получить оболочку или запустить команды напрямую, используяnsenter:

Пример:

$ nsenter \
     --target=$(machinectl show --property Leader ipsec-libreswan | sed "s/^Leader=//") \
     --mount --uts --ipc --net --pid
2
20.08.2021, 12:21

Теги

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