Получить текущего реального пользователя в скрипте perl, который выполняется внутри контейнера docker как root - PullRequest
0 голосов
/ 29 февраля 2020

Я хочу выполнить perl скрипт внутри контейнера docker как root (SUDO на хосте) и получить реальный идентификатор пользователя внутри скрипта perl.

Например, приведенное ниже выполнение должно включить myscript.pl для получения реального userId (в данном случае mat) без необходимости явной передачи его в качестве дополнительного параметра в myscript.pl .. (скрипт внутри контейнер при вызове с хоста должен найти реального пользователя, вызывающего скрипт)

[mat@dev01-nrg02 ~]$ sudo docker exec -it MY_API_LAYER myscript.pl 

Установка в качестве docker переменных среды при запуске контейнера исключена, поскольку

  1. Сценарий будет выполнен любым пользователем, и мне нужно получить реальный идентификатор этого пользователя.
  2. Контейнер docker запускается с использованием службы Init ... так что это технически означает, что нет возможности установить какие-либо подробности пользователя ...

Также ..

Я не хочу беспокоить пользователей скрипта, заставляя их передавать свой идентификатор пользователя (который может появиться как избыточные, они также могут передавать любой Id, если такая опция предусмотрена ..)

Пожалуйста, дайте мне знать, если у кого-то была такая проблема и она была решена?

1 Ответ

0 голосов
/ 29 февраля 2020

Вы не можете это выяснить.

Контейнер Docker довольно изолирован от вызывающего пользователя. Это вдвойне верно в случае вызова docker exec: в какой-то момент какой-то пользователь хоста вызвал демон root Docker для запуска контейнера, а затем в какой-то более поздний момент времени другой пользователь хоста делает вызов демона root Docker для запуска процесса от имени какого-либо другого пользователя внутри контейнера.

Если вам нужен пользователь для запуска сценария в качестве своего собственного идентификатора, для их собственных файлов будет значительно проще установить необходимые зависимости, чтобы они могли запускать сценарий самостоятельно, без слоя sudo или docker

$ myscript.pl
...