1
0

ubuntu-join-domain.sh 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. #!/bin/bash
  2. # Configure here
  3. # ======================================
  4. HOSTNAME=VirtualUbuntu
  5. DOMAIN=corp.example.com
  6. COMPUTEROU="DC=corp,DC=example,DC=com"
  7. PROVISIONINGUSER=administrator
  8. OSNAME="Ubuntu Workstation"
  9. OSVERSION=18.04
  10. SUDOUSERS="user1 administrator"
  11. USEDOMAININHOMEDIR="False"
  12. # ======================================
  13. UP_DOMAIN=${DOMAIN^^}
  14. LO_DOMAIN=${DOMAIN,,}
  15. DEBIAN=$(grep "Debian GNU" /etc/issue)
  16. echo "Setting hostnames..."
  17. hostnamectl set-hostname ${HOSTNAME}
  18. DEBIAN_FRONTEND=noninteractive apt install -y realmd sssd sssd-tools libnss-sss libpam-sss krb5-user adcli samba-common-bin
  19. echo "" > /etc/krb5.conf
  20. echo "[libdefaults]" >> /etc/krb5.conf
  21. echo " default_realm = ${UP_DOMAIN}" >> /etc/krb5.conf
  22. echo " kdc_timesync = 1" >> /etc/krb5.conf
  23. echo " ccache_type = 4" >> /etc/krb5.conf
  24. echo " forwardable = true" >> /etc/krb5.conf
  25. echo " proxiable = true" >> /etc/krb5.conf
  26. echo " fcc-mit-ticketflags = true" >> /etc/krb5.conf
  27. if [ -n "${DEBIAN}" ]; then
  28. echo " rdns = false" >> /etc/krb5.conf
  29. fi
  30. echo "" >> /etc/krb5.conf
  31. echo "[realms]" >> /etc/krb5.conf
  32. echo " " >> /etc/realmd.conf
  33. echo "[active-directory]" >> /etc/realmd.conf
  34. echo " default-client = sssd" >> /etc/realmd.conf
  35. echo " os-name = ${OSNAME}" >> /etc/realmd.conf
  36. echo " os-version = ${OSVERSION}" >> /etc/realmd.conf
  37. echo " " >> /etc/realmd.conf
  38. echo "[service]" >> /etc/realmd.conf
  39. echo " automatic-install = no" >> /etc/realmd.conf
  40. echo " " >> /etc/realmd.conf
  41. echo "[${UP_DOMAIN}]" >> /etc/realmd.conf
  42. echo " fully-qualified-names = yes" >> /etc/realmd.conf
  43. echo " automatic-id-mapping = no" >> /etc/realmd.conf
  44. echo " user-principal = yes" >> /etc/realmd.conf
  45. echo " manage-system = yes" >> /etc/realmd.conf
  46. echo "Now, check off the box for auto-create home directory in the next configuration screen."
  47. echo -n "Press enter to continue..."
  48. read E
  49. pam-auth-update
  50. echo "Time to test..."
  51. echo "Discovering..."
  52. realm discover ${UP_DOMAIN}
  53. echo "Testing admin connection..."
  54. kinit ${PROVISIONINGUSER}
  55. klist
  56. kdestroy
  57. echo ""
  58. echo -n "If the above test didn't error, press ENTER to join the domain."
  59. read E
  60. echo ""
  61. echo "Joining domain"
  62. realm join --verbose --user=${PROVISIONINGUSER} --computer-ou=${COMPUTEROU} ${UP_DOMAIN}
  63. echo "Configuring SSSD..."
  64. echo "[sssd]" > /etc/sssd/sssd.conf
  65. echo "domains = ${LO_DOMAIN}" >> /etc/sssd/sssd.conf
  66. echo "config_file_version = 2" >> /etc/sssd/sssd.conf
  67. if [ -z "${DEBIAN}" ]; then
  68. echo "services = nss, pam" >> /etc/sssd/sssd.conf
  69. fi
  70. echo "" >> /etc/sssd/sssd.conf
  71. echo "[domain/${LO_DOMAIN}]" >> /etc/sssd/sssd.conf
  72. echo "ad_domain = ${LO_DOMAIN}" >> /etc/sssd/sssd.conf
  73. echo "krb5_realm = ${UP_DOMAIN}" >> /etc/sssd/sssd.conf
  74. echo "realmd_tags = manages-system joined-with-adcli" >> /etc/sssd/sssd.conf
  75. echo "cache_credentials = True" >> /etc/sssd/sssd.conf
  76. echo "id_provider = ad" >> /etc/sssd/sssd.conf
  77. echo "krb5_store_password_if_offline = True" >> /etc/sssd/sssd.conf
  78. echo "default_shell = /bin/bash" >> /etc/sssd/sssd.conf
  79. echo "ldap_id_mapping = True" >> /etc/sssd/sssd.conf
  80. if [ $USEDOMAININHOMEDIR == "False" ]; then
  81. echo "fallback_homedir = /home/%u" >> /etc/sssd/sssd.conf
  82. else
  83. echo "fallback_homedir = /home/%d/%u" >> /etc/sssd/sssd.conf
  84. fi
  85. echo "access_provider = ad" >> /etc/sssd/sssd.conf
  86. echo "Allowing users to log in"
  87. realm permit --all
  88. if [ $USEDOMAININHOMEDIR == "True" ]; then
  89. echo "Now, enter '/home/${LO_DOMAIN}/' with the trailing slash in the next configuration screen."
  90. echo -n "Press enter to continue..."
  91. read E
  92. dpkg-reconfigure apparmor
  93. fi
  94. echo "Adding domain users to sudoers..."
  95. for U in $SUDOUSERS; do
  96. echo "Adding ${UP_DOMAIN}\\${U}..."
  97. sed -i "s/# User privilege specification/# User privilege specification\n${U} ALL=(ALL) ALL/g" /etc/sudoers
  98. done
  99. echo "All done! Time to reboot!"