Docker并在不退出的情况下运行ktutil

时间:2019-03-13 18:43:17

标签: docker

构建映像时,我正在尝试创建密钥表文件。 这是我在我们的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 个答案:

答案 0 :(得分:1)

这个问题并不是真正针对Docker的。它是关于如何在非交互模式下运行ktutil的,我发现了涉及以下内容的现有问题:Script Kerberos Ktutil to make keytabs

我们可以将答案中的想法应用到Docker中创建keytab文件中:

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

答案 1 :(得分:0)

尝试:

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:

答案 2 :(得分:0)

我们设法像这样修复它:

RUN printf 'add_entry -password -p $user_id@DOMAIN.COM -k 1 -e aes256-cts\n$user_pass\nwkt $user_id.keytab' | ktutil