ubuntu-join-domain.sh 3.5 KB

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