相互運用性のために、Ubuntu クライアントを Windows Server 2012 Active Directory ドメインのメンバーにするにはどうすればよいですか?

相互運用性のために、Ubuntu クライアントを Windows Server 2012 Active Directory ドメインのメンバーにするにはどうすればよいですか?

私のWindowsドメインには、Windows 2012 R2 Active Directoryを含むUbuntu 18.04 LTSクライアントがあります。このUbuntuクライアントをWindowsドメインとActive Directoryのメンバーにしたいと思います。これを行うための明確な解決策やルーチンはありますか?

答え1

現在、最新のLinuxをADに統合するために推奨されているソリューションは一般的ですsssd

これは公式のUbuntu 18.04文書から得られたものです。

必要なパッケージがインストールされていることを確認してください。

sudo apt install krb5-user samba sssd chrony

インストール時に、krb5-user次の3つのメッセージが表示され、共通のKerberos名が使用されます。

  • ドメイン名:ADを扱うときに大文字で表示されるADドメイン名。
  • KDCサーバー名:ADドメインコントローラの操作の1つです。
  • Kerberos管理サーバーの名前:ADドメインコントローラでもあります。

Active Directory認証はKerberosに基づいているため、システムクロックはADサーバーの時計と合理的に同期する必要があります。通常、ADサーバーはこの目的のためにNTPサービスを提供します。時刻同期を使用している場合はchrony(最も近い)、ADドメインコントローラの名前を次に追加してください/etc/chrony/chrony.conf

server my.ad.domain.controller.example

Linux ディレクトリを Windows システムと共有しなくても、一部の AD 認証関連サービスを実行するには Samba が必要です。次の[global]セクションに追加してください/etc/samba/smb.conf

[global]

workgroup = SHORT_NAME_OF_AD_DOMAIN
client signing = yes
client use spnego = yes
kerberos method = secrets and keytab
realm = AD.DOMAIN.FULL.NAME
security = ads

適切に交換してくださいSHORT_NAME_OF_AD_DOMAINAD.DOMAIN.FULL.NAME

SSSD構成ファイルの作成/etc/sssd/sssd.conf:

[sssd]
services = nss, pam
config_file_version = 2
domains = AD.DOMAIN.FULL.NAME

[domain/AD.DOMAIN.FULL.NAME]
id_provider = ad
access_provider = ad

# Use this if users are being logged in at /.
# This example specifies /home/DOMAIN-FQDN/user as $HOME.  Use with pam_mkhomedir.so
override_homedir = /home/%d/%u

# Uncomment if the client machine hostname doesn't match the computer object on the DC.
# ad_hostname = mymachine.ad.domain.full.name
# Uncomment if DNS SRV resolution is not working
# ad_server = dc.ad.domain.full.name

# Uncomment if the AD domain is named differently than the Samba domain
# ad_domain = AD.DOMAIN.FULL.NAME

# Enumeration is discouraged for performance reasons.
# enumerate = true

このファイルはルートのみアクセスできるように保護する必要があります。それ以外の場合、sssd起動は拒否されます。

sudo chown root:root /etc/sssd/sssd.conf
sudo chmod 600 /etc/sssd/sssd.conf

システムが常に完全修飾DNSドメイン名を知っていることを確認してください。必要に応じてこれを/etc/hosts

次に、変更された構成でサービスを再起動します。

sudo systemctl restart chrony.service
sudo systemctl restart smbd.service nmbd.service 
sudo systemctl start sssd.service

kinitこれで、ADを使用して初期Kerberos認証を実行できます。ドメインに新しいシステムを追加するために必要な権限を持つADユーザーアカウントを使用して、rootとしてこれを実行します。

sudo kinit Administrator

実際にKerberos認定チケットを入手したことを確認してください。

sudo klist

これで、次のコマンドを使用して実際にADドメインに参加できます。

sudo net ads join -k

このコマンドが正常に完了したら、Linuxコマンドを使用してADユーザーのユーザーアカウント情報を照会できます。

getent passwd some-AD-username

新しいユーザーはいつでもADに追加できるため、ログイン時にすべてのADユーザーのホームディレクトリがまだ存在しない場合に自動的に作成するメカニズムを設定する必要があります。この行をに追加してください/etc/pam.d/common-sessionsession required pam_unix.so ...行の直後:

session    required    pam_mkhomedir.so skel=/etc/skel/ umask=0022

override_homedirsssd.conf次の行は、ADユーザーのホームディレクトリのパス名を決定します。

関連情報