Присоединиться к Ubuntu 17.04 Desktop to Windows Domain

Как подключиться к портативному компьютеру с Ubuntu 17.04 для домена Windows, я ищу самый простой способ, поскольку у меня ограниченные знания Ubuntu. Мы рассматриваем это как альтернативу окнам для наших настольных компьютеров. то, что мне нужно, - это руководство (скриншоты были бы полезны), поскольку у меня есть 30 ноутбуков для настройки, а затем 30 рабочих станций плюс IT-апартаменты, если ноутбуки работают успешно.

1
задан 8 May 2017 в 14:47

2 ответа

Общие сведения

Как вы упомянули, чтобы интегрировать большое количество хостов, я бы рекомендовал вам использовать какой-то инструмент управления конфигурацией. Я использую Ansible для таких вещей. Попробуйте это вручную один раз, и когда все будет автоматизировать его.

Как вы также упомянули, чтобы сделать это в корпоративной среде, я бы предложил использовать Ubuntu 16.04 вместо 17.04, потому что 17.04 не является долговременной версией поддержки и, следовательно, является только поддерживаемый до января 2018 г.

Кроме того, этот вопрос хорошо подходит для Ansible .

How-tos

Хорошей отправной точкой было бы официальная документация: https://help.ubuntu.com/lts/serverguide/sssd-ad.html. Я также нашел, что этот учебник весьма полезен (и у него много скриншотов): http://www.wolffhaven45.com/blog/linux/join_ubuntu_workstation_windows_domain/.

Ansible Playbook

Основываясь на упомянутых How-Tos (и многих других), я создал файл https://help.ubuntu.com/lts/serverguide/sssd-ad.html для автоматизации этого процесса. Структура каталогов выглядит следующим образом:

ansible/ ├── adIntegration.yaml └── roles └── ad-integration ├── handlers │ └── main.yaml ├── tasks │ └── main.yaml └── templates ├── etc │ ├── krb5.conf.jinja2 │ ├── realmd.conf.jinja2 │ └── sssd │ └── sssd.conf.jinja2 └── usr └── share └── lightdm └── lightdm.conf.d └── 50-ubuntu.conf.jinja2

(мне нравится помещать файлы в структуру каталогов, которые напоминают целевую структуру)

Некоторые файлы ниже, адаптируются к вашим потребностям :

adintegration.yaml

--- # execute like: # ansible-playbook ~/ansible/adIntegration.yaml --inventory ~/ansible/production.hosts # or # ansible-playbook ~/ansible/adIntegration.yaml -i ~/ansible/production.hosts - hosts: "ad-integration" remote_user: "admin" # change to whatever user you have with sudo rights become: yes vars_prompt: # the vars are later used for the join - name: "ad_admin_name" prompt: "username for AD join" private: no - name: "ad_admin_password" prompt: "password for AD" private: yes confirm: yes roles: - role: "ad-integration" ...

main.yaml (обработчики)

--- - name: "restart sssd" service: name: "sssd" state: "restarted" listen: "sssd needs restart" ...

main.yaml (задачи)

--- - name: "install needed packages" apt: name: "{{ item }}" state: "present" with_items: - "adcli" - "krb5-user" - "libnss-sss" - "libpam-sss" - "libwbclient-sssd" - "realmd" - "sssd" - "sssd-tools" - "samba-common" # copy this from a working one - name: "template krb5.conf" template: src: "etc/krb5.conf.jinja2" dest: "/etc/krb5.conf" owner: "root" group: "root" mode: "0644" backup: yes - name: "template realmd.conf" template: src: "etc/realmd.conf.jinja2" dest: "/etc/realmd.conf" owner: "root" group: "root" mode: "0644" backup: yes - name: "join domain" shell: "echo '{{ ad_admin_password }}' | realm join COMPANY.COM -U '{{ ad_admin_name }}' --install=/ -v" # --install=/ needed because of realm bug in package detection register: "realm_join" changed_when: "'Successfully enrolled machine in realm' in realm_join.stderr" failed_when: "'Couldn\\'t join realm' in realm_join.stderr" - name: "template sssd.conf" template: src: "etc/sssd/sssd.conf.jinja2" dest: "/etc/sssd/sssd.conf" owner: "root" group: "root" mode: "0600" backup: yes notify: "sssd needs restart" - name: "activate automatic creation of home directories" lineinfile: dest: "/etc/pam.d/common-session" line: "session optional pam_mkhomedir.so " state: "present" insertbefore: "# end of pam-auth-update config" backup: yes - name: "create lightdm directories" file: path: "/usr/share/lightdm/lightdm.conf.d/" state: "directory" owner: "root" group: "root" mode: "0755" # the important part here is to add greeter-show-manual-login=true under [SeatDefaults] - name: "activate username on login window" template: src: "usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf.jinja2" dest: "/usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf" owner: "root" group: "root" mode: "0644" backup: yes ...

realmd.conf.jinja2

[active-directory] default-client = sssd os-name = {{ ansible_distribution }} os-version = {{ ansible_distribution_version }} [service] automatic-install = no [users] default-home = /home/%D/%U default-shell = /bin/bash [company.com] fully-qualified-names = no automatic-id-mapping = yes user-principal = yes manage-system = no enumerate = yes

sssd.conf.jinja2

[sssd] domains = company.com config_file_version = 2 services = nss, pam [domain/company.com] realmd_tags = manages-system joined-with-adcli ad_domain = company.com krb5_realm = COMPANY.COM id_provider = ad cache_credentials = True krb5_store_password_if_offline = True enumerate = True use_fully_qualified_names = False fallback_homedir = /home/%d/%u default_shell = /bin/bash # maybe needed for older AD schemes #ldap_id_mapping = False #ldap_schema = ad #ldap_user_object_class = person #ldap_user_name = msSFU30Name #ldap_user_uid_number = msSFU30UidNumber #ldap_user_gid_number = msSFU30GidNumber #ldap_user_home_directory = msSFU30HomeDirectory #ldap_user_shell = msSFU30LoginShell #ldap_user_gecos = displayName #ldap_group_object_class = group #ldap_group_name = msSFU30Name #ldap_group_gid_number = msSFU30GidNumber
0
ответ дан 18 July 2018 в 13:38

Общие сведения

Как вы упомянули, чтобы интегрировать большое количество хостов, я бы рекомендовал вам использовать какой-то инструмент управления конфигурацией. Я использую Ansible для таких вещей. Попробуйте это вручную один раз, и когда все будет автоматизировать его.

Как вы также упомянули, чтобы сделать это в корпоративной среде, я бы предложил использовать Ubuntu 16.04 вместо 17.04, потому что 17.04 не является долговременной версией поддержки и, следовательно, является только поддерживаемый до января 2018 г.

Кроме того, этот вопрос хорошо подходит для Ansible .

How-tos

Хорошей отправной точкой было бы официальная документация: https://help.ubuntu.com/lts/serverguide/sssd-ad.html. Я также нашел, что этот учебник весьма полезен (и у него много скриншотов): http://www.wolffhaven45.com/blog/linux/join_ubuntu_workstation_windows_domain/.

Ansible Playbook

Основываясь на упомянутых How-Tos (и многих других), я создал файл https://help.ubuntu.com/lts/serverguide/sssd-ad.html для автоматизации этого процесса. Структура каталогов выглядит следующим образом:

ansible/ ├── adIntegration.yaml └── roles └── ad-integration ├── handlers │ └── main.yaml ├── tasks │ └── main.yaml └── templates ├── etc │ ├── krb5.conf.jinja2 │ ├── realmd.conf.jinja2 │ └── sssd │ └── sssd.conf.jinja2 └── usr └── share └── lightdm └── lightdm.conf.d └── 50-ubuntu.conf.jinja2

(мне нравится помещать файлы в структуру каталогов, которые напоминают целевую структуру)

Некоторые файлы ниже, адаптируются к вашим потребностям :

adintegration.yaml

--- # execute like: # ansible-playbook ~/ansible/adIntegration.yaml --inventory ~/ansible/production.hosts # or # ansible-playbook ~/ansible/adIntegration.yaml -i ~/ansible/production.hosts - hosts: "ad-integration" remote_user: "admin" # change to whatever user you have with sudo rights become: yes vars_prompt: # the vars are later used for the join - name: "ad_admin_name" prompt: "username for AD join" private: no - name: "ad_admin_password" prompt: "password for AD" private: yes confirm: yes roles: - role: "ad-integration" ...

main.yaml (обработчики)

--- - name: "restart sssd" service: name: "sssd" state: "restarted" listen: "sssd needs restart" ...

main.yaml (задачи)

--- - name: "install needed packages" apt: name: "{{ item }}" state: "present" with_items: - "adcli" - "krb5-user" - "libnss-sss" - "libpam-sss" - "libwbclient-sssd" - "realmd" - "sssd" - "sssd-tools" - "samba-common" # copy this from a working one - name: "template krb5.conf" template: src: "etc/krb5.conf.jinja2" dest: "/etc/krb5.conf" owner: "root" group: "root" mode: "0644" backup: yes - name: "template realmd.conf" template: src: "etc/realmd.conf.jinja2" dest: "/etc/realmd.conf" owner: "root" group: "root" mode: "0644" backup: yes - name: "join domain" shell: "echo '{{ ad_admin_password }}' | realm join COMPANY.COM -U '{{ ad_admin_name }}' --install=/ -v" # --install=/ needed because of realm bug in package detection register: "realm_join" changed_when: "'Successfully enrolled machine in realm' in realm_join.stderr" failed_when: "'Couldn\\'t join realm' in realm_join.stderr" - name: "template sssd.conf" template: src: "etc/sssd/sssd.conf.jinja2" dest: "/etc/sssd/sssd.conf" owner: "root" group: "root" mode: "0600" backup: yes notify: "sssd needs restart" - name: "activate automatic creation of home directories" lineinfile: dest: "/etc/pam.d/common-session" line: "session optional pam_mkhomedir.so " state: "present" insertbefore: "# end of pam-auth-update config" backup: yes - name: "create lightdm directories" file: path: "/usr/share/lightdm/lightdm.conf.d/" state: "directory" owner: "root" group: "root" mode: "0755" # the important part here is to add greeter-show-manual-login=true under [SeatDefaults] - name: "activate username on login window" template: src: "usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf.jinja2" dest: "/usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf" owner: "root" group: "root" mode: "0644" backup: yes ...

realmd.conf.jinja2

[active-directory] default-client = sssd os-name = {{ ansible_distribution }} os-version = {{ ansible_distribution_version }} [service] automatic-install = no [users] default-home = /home/%D/%U default-shell = /bin/bash [company.com] fully-qualified-names = no automatic-id-mapping = yes user-principal = yes manage-system = no enumerate = yes

sssd.conf.jinja2

[sssd] domains = company.com config_file_version = 2 services = nss, pam [domain/company.com] realmd_tags = manages-system joined-with-adcli ad_domain = company.com krb5_realm = COMPANY.COM id_provider = ad cache_credentials = True krb5_store_password_if_offline = True enumerate = True use_fully_qualified_names = False fallback_homedir = /home/%d/%u default_shell = /bin/bash # maybe needed for older AD schemes #ldap_id_mapping = False #ldap_schema = ad #ldap_user_object_class = person #ldap_user_name = msSFU30Name #ldap_user_uid_number = msSFU30UidNumber #ldap_user_gid_number = msSFU30GidNumber #ldap_user_home_directory = msSFU30HomeDirectory #ldap_user_shell = msSFU30LoginShell #ldap_user_gecos = displayName #ldap_group_object_class = group #ldap_group_name = msSFU30Name #ldap_group_gid_number = msSFU30GidNumber
0
ответ дан 24 July 2018 в 20:13
  • 1
    Благодарю вас, я дам это и отчитаю, когда удастся. – Adrian 10 May 2017 в 17:40

Другие вопросы по тегам:

Похожие вопросы: