pastebin - collaborative debugging tool
nrubsig.kpaste.net RSS


nfskrb5test1.ksh - KDC test script for Windows NFS krb5 setup test #001
Posted by Anonymous on Mon 24th Aug 2026 18:31
raw | new post

  1. #!/bin/ksh
  2.  
  3. #
  4. # nfskrb5test1.ksh - KDC test script for Windows NFS krb5 setup test #001
  5. #
  6. # Written by Roland Mainz <roland.mainz@nrubsig.org>
  7. #
  8.  
  9. export PATH=/usr/bin:/bin:/sbin
  10.  
  11. builtin mkdir
  12. #builtin rm
  13.  
  14. kdctestdir='/tmp/kdctest1'
  15. compound config=(
  16.         hostname="$(hostname --fqdn)"
  17.         kdcport=88
  18.         kadmindport=749
  19.         # realmname must be UPPERCASE!
  20.         realmname='NFSCHICKEN.TEST'
  21. )
  22.  
  23.  
  24. rm -Rfv -- "$kdctestdir"
  25. rm -Rfv "/tmp/krb5cc_dir_$(id -u)"
  26. mkdir -p -- "$kdctestdir"
  27.  
  28.  
  29. export KRB5_KDC_PROFILE="${kdctestdir}/kdc.conf"
  30. export KRB5_CONFIG="${kdctestdir}/krb5.conf"
  31.  
  32. cat >"${KRB5_CONFIG}" <<EOF
  33. [libdefaults]
  34.     default_realm = ${config.realmname}
  35.     default_ccache_name = DIR:/tmp/krb5cc_dir_%{uid}
  36.  
  37. [realms]
  38.     ${config.realmname} = {
  39.         kdc = ${config.hostname}:${config.kdcport}
  40.         admin_server = ${config.hostname}:${config.kadmindport}
  41.     }
  42. EOF
  43.  
  44.    
  45. cat >"${KRB5_KDC_PROFILE}" <<EOF
  46. [kdcdefaults]
  47.     kdc_ports = ${config.kdcport}
  48.     kdc_tcp_ports = ${config.kdcport}
  49.  
  50. [realms]
  51.     ${config.realmname} = {
  52.         kadmind_port = ${config.kadmindport}
  53.         acl_file = ${kdctestdir}/kadm5.acl
  54.         admin_keytab = ${kdctestdir}/kadm5.keytab
  55.         database_name = ${kdctestdir}/principal
  56.         key_stash_file = ${kdctestdir}/.k5.${config.realmname}
  57.    
  58.         max_life = 12h 0m 0s
  59.         max_renewable_life = 7d 0h 0m 0s
  60.         master_key_type = aes256-cts-hmac-sha1-96
  61.         supported_enctypes = aes256-cts-hmac-sha1-96:normal aes128-cts-hmac-sha1-96:normal
  62.     }
  63.  
  64. [logging]
  65.     kdc = FILE:${kdctestdir}/kdc.log
  66.     admin_server = FILE:${kdctestdir}/kadmin.log
  67.     default = FILE:${kdctestdir}/default.log
  68.  
  69. EOF
  70.  
  71. {
  72.         printf '%s\n' 'tiger12maus'
  73.         printf '%s\n' 'tiger12maus'
  74. } | kdb5_util create -r "${config.realmname}" -s
  75.  
  76.  
  77. #
  78. # add admin user
  79. #
  80. {
  81.         printf "addprinc admin/admin@${config.realmname}\n"
  82.         printf '%s\n' 'tiger12maus'
  83.         printf '%s\n' 'tiger12maus'
  84. } | kadmin.local
  85.  
  86. #
  87. # add plain (Windows) user
  88. #
  89. {
  90.         printf "addprinc roland_mainz@${config.realmname}\n"
  91.         printf '%s\n' 'tiger12maus'
  92.         printf '%s\n' 'tiger12maus'
  93. } | kadmin.local
  94.  
  95. #
  96. # add Linux host
  97. #
  98. {
  99.         printf "addprinc host/debnfskrb5001@${config.realmname}\n"
  100.         printf '%s\n' 'tiger12maus'
  101.         printf '%s\n' 'tiger12maus'
  102. } | kadmin.local
  103.  
  104. {
  105.         printf "addprinc host/debnfskrb5001.nfschicken.test@${config.realmname}\n"
  106.         printf '%s\n' 'tiger12maus'
  107.         printf '%s\n' 'tiger12maus'
  108. } | kadmin.local
  109.  
  110. #
  111. # add NFS service on Linux host
  112. #
  113. {
  114.         printf "addprinc nfs/debnfskrb5001@${config.realmname}\n"
  115.         printf '%s\n' 'tiger12maus'
  116.         printf '%s\n' 'tiger12maus'
  117. } | kadmin.local
  118.  
  119. {
  120.         printf "addprinc nfs/debnfskrb5001.nfschicken.test@${config.realmname}\n"
  121.         printf '%s\n' 'tiger12maus'
  122.         printf '%s\n' 'tiger12maus'
  123. } | kadmin.local
  124.  
  125. # create /etc/krb5.keytab
  126. rm -f /tmp/nfs01.keytab
  127. {
  128.         printf 'ktadd -k /tmp/nfs01.keytab nfs/debnfskrb5001.nfschicken.test@NFSCHICKEN.TEST\n'
  129. } | kadmin.local
  130. mv -f /tmp/nfs01.keytab /etc/krb5.keytab
  131.  
  132. #
  133. # setup Windows machine
  134. # On Windows machine use:
  135. # --- snip ---
  136. # printf '10.49.202.233\t\tdebnfskrb5001.nfschicken.test\n' >>/cygdrive/c/Windows/System32/drivers/etc/hosts
  137. # printf '10.49.202.233\t\tdebnfskrb5001\n' >>/cygdrive/c/Windows/System32/drivers/etc/hosts
  138. # ksetup /setrealm NFSCHICKEN.TEST
  139. # ksetup /addkdc NFSCHICKEN.TEST debnfskrb5001.nfschicken.test
  140. # ksetup /setrealmflags NFSCHICKEN.TEST tcpsupported
  141. # ksetup /mapuser roland_mainz@NFSCHICKEN.TEST roland_mainz
  142. # ksetup /setcomputerpassword tiger12maus
  143. # # mount with
  144. # nfs_mount -o sec=krb5,rw 'K' nfs://10.49.202.233//nfsdata
  145. # --- snip ---
  146. #
  147. {
  148.         printf "addprinc host/wingrendel02@${config.realmname}\n"
  149.         printf '%s\n' 'tiger12maus'
  150.         printf '%s\n' 'tiger12maus'
  151. } | kadmin.local
  152.  
  153. {
  154.         printf "addprinc host/wingrendel02.nfschicken.test@${config.realmname}\n"
  155.         printf '%s\n' 'tiger12maus'
  156.         printf '%s\n' 'tiger12maus'
  157. } | kadmin.local
  158.  
  159. krb5kdc -n &
  160. (( kdc_pid=$! ))
  161.  
  162. sleep 10
  163.  
  164. {
  165.         printf '%s\n' 'tiger12maus'
  166. } | kinit "admin/admin@${config.realmname}"
  167. {
  168.         printf '%s\n' 'tiger12maus'
  169. } | kinit "roland_mainz@${config.realmname}"
  170.  
  171. klist -A
  172.  
  173. sleep 10000
  174.  
  175. kill $kdc_pid
  176. wait $kdc_pid
  177.  
  178. # EOF.

Submit a correction or amendment below (click here to make a fresh posting)
After submitting an amendment, you'll be able to view the differences between the old and new posts easily.

Syntax highlighting:

To highlight particular lines, prefix each line with {%HIGHLIGHT}




All content is user-submitted.
The administrators of this site (kpaste.net) are not responsible for their content.
Abuse reports should be emailed to us at