Скрипт Kerberos Ktutil для создания keytabs

Я хочу сделать скрипт, который будет генерировать keytab с помощью ktutil. При запуске скрипта я хочу использовать [пользователь]$ script.sh пароль

#script.sh
echo "addent -password -p PRINCIPAL -k 1 -e aes256-cts-hmac-sha1-96" | ktutil

Ktutil, чем нужен пароль, здесь я хочу использовать аргумент пароля сверху. Как я передам аргумент пароля?

3 ответов


С GNU bash:

user="PRINCIPAL"
pass="topsecret"

printf "%b" "addent -password -p $user -k 1 -e aes256-cts-hmac-sha1-96\n$pass\nwrite_kt $user.keytab" | ktutil

printf "%b" "read_kt $user.keytab\nlist" | ktutil

выход:

slot KVNO Principal
---- ---- ---------------------------------------------------------------------
   1    1                          PRINCIPAL@YOURDOMAIN

версия в Python

https://github.com/Tagar/stuff/blob/master/keytab.py

piping password to ktutil in shell не является безопасным, так как пароль будет отображаться в списке процессов.

поскольку эти скрипты Python просто взаимодействуют с ktutil с помощью библиотеки pexpect, можно реализовать то же самое, что и сценарий чистой оболочки с помощью ожидал.

надеюсь, что это помогает.


чтобы создать несколько orgs keytabs и по умолчанию HBase,pipe, hdfs keytab одновременно, вы можете запустить приведенный ниже скрипт, который я только что создал:

#!/bin/bash
read -p "Please enter space-delimited list of ORGS to create: " NEW_ORGS

clear
#echo "#################  CREATE KEYTABS  ############################"
#echo ""
kdestroy

for i in $NEW_ORGS
do
     printf "%b" "addent -password -p ${i} -k 1 -e aes256-cts-hmac-sha1-96\n${i}\nwrite_kt ${i}.keytab" | ktutil

     printf "%b" "read_kt ${i}.keytab\nlist" | ktutil

done
echo ""


if [ ! -e /home/eip/.keytabs/hbase.keytab ]
then
        printf "%b" "addent -password -p hbase -k 1 -e aes256-cts-hmac-sha1-96\nhbase\nwrite_kt hbase.keytab" | ktutil

        printf "%b" "read_kt hbase.keytab\nlist" | ktutil
fi

exit 0