Докер и работает, ктутил без выхода - PullRequest
0 голосов
/ 13 марта 2019

Я пытаюсь создать файл keytab при создании образа.Вот то, что я запускаю на одном из наших блоков Red Hat:

ktutil
ktutil:  add_entry -password -p $user_id@DOMAIN.COM -k 1 -e aes256-cts
Password for $user_id@DOMAIN.COM:
ktutil:  wkt $user_id.keytab
ktutil:  quit

, и он генерирует таблицу ключей.

Я пытаюсь сделать это в Docker, и я запускаю:

RUN ktutil && echo "add_entry -password -p $user_id@DOMAIN.COM -k 1 -e aes256-cts" && echo "$user_pass" && echo "wkt $user_id.keytab" && echo "quit"

Он делает это:

Step 22/27 : RUN ktutil && echo "add_entry -password -p $user_id@DOMAIN.COM -k 1 -e aes256-cts" && echo "$user_pass" && echo "wkt $user_id.keytab" && echo "quit"
 ---> Running in b186efb561fc
ktutil:  add_entry -password -p $user_id@DOMAIN.COM -k 1 -e aes256-cts
$user_pass
wkt $user_id.keytab
quit

Итак, он запускает первую команду и затем выходит из ktutil?Как мне отформатировать команду RUN.Есть ли хитрость, чтобы заставить это остаться в ktutil?

Ответы [ 3 ]

1 голос
/ 13 марта 2019

Этот вопрос на самом деле не относится к Docker.Речь идет о том, как запустить ktutil в неинтерактивном режиме, и я нашел существующий вопрос, который охватывает это: Скрипт Kerberos Ktutil для создания keytabs .

Мы можем применить идеи из этого ответа для создания файла keytab в Docker:

FROM centos

# These variables just for demonstration here,
# ideally should be passed as 
ARG user_id
ARG user_pass

# Should check here whether the above arguments 
# have been actually passed to the build

# Install dependencies
# Add new entry to keytab file and list all entries afterwards
RUN yum install -y krb5-workstation.x86_64 \
    && echo -e "add_entry -password -p $user_id@DOMAIN.COM -k 1 -e aes256-cts\n$user_pass\nwkt $user_id.keytab" | ktutil \
    && echo -e "read_kt $user_id.keytab\nlist" | ktutil
wkt $user_id.keytab" | ktutil \
    && echo -e "" 

Когда я запускаю сборку для вышеупомянутого Dockerfile с помощью этой команды:

docker build -t ktutil --build-arg user_id=test --build-arg user_pass=test_pass .

Я вижу следующие результаты:

ktutil:  add_entry -password -p test@DOMAIN.COM -k 1 -e aes256-cts
Password for test@DOMAIN.COM:
ktutil:  wkt test.keytab
ktutil:  ktutil:  read_kt test.keytab
ktutil:  list
slot KVNO Principal
---- ---- ---------------------------------------------------------------------
   1    1                          test@DOMAIN.COM
0 голосов
/ 13 марта 2019

Нам удалось это исправить так:

RUN printf 'add_entry -password -p $user_id@DOMAIN.COM -k 1 -e aes256-cts\n$user_pass\nwkt $user_id.keytab' | ktutil
0 голосов
/ 13 марта 2019

Попробуйте:

ktutil:  add_entry -password -p $user_id@DOMAIN.COM -k 1 -e aes256-cts
Password for $user_id@DOMAIN.COM:
ktutil:  add_entry -password -p $user_id@DOMAIN.COM -k 1 -e aes256-cts
Password for $user_id@DOMAIN.COM:
ktutil:
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...