GNU/Linux >> Linux の 問題 >  >> Linux

Samba を使用して Linux Active Directory に接続する方法

システム管理者で、現在の Linux Active Directory (AD) に Linux デスクトップとサーバーを追加する方法を知りたい場合は、適切な場所に来ました。新しいクライアントを AD に追加すると、複数のクライアント マシン間のユーザー管理が簡素化されます。特に、環境内で数百台のコンピューターを管理している場合はそうです。

このチュートリアルでは、Linux システム (Ubuntu 20.04、Linux Mint、および Ubuntu Server) を Linux Samba Active Directory に追加する方法を学習します。これにより、Samba Active Directory ユーザーは、独自のホーム ディレクトリ、デフォルト シェル、および sudo root 権限 (必要な場合) を使用して Linux クライアント マシンにログインできます。

準備?すぐに飛び込め!

前提条件

このチュートリアルは実践的なデモンストレーションです。フォローしたい場合は、次の要件を満たしていることを確認してください:

  • Linux デスクトップ マシン – このチュートリアルでは Ubuntu 20.04 デスクトップを使用しますが、Linux Mint や Ubuntu Server などの他のディストリビューションを使用することもできます。
  • sudo を持つ root 以外のユーザー 特権。
  • 完全に機能する Samba Active Directory (AD)。

永続的な DNS リゾルバーの設定

Linux クライアントを Samba Active Directory に追加する前に、Samba Active Directory ドメイン名がクライアント マシンから到達可能であることを確認する必要があります。どのように? /etc/resolv.conf で、Samba AD の IP アドレスを各クライアント マシンのデフォルトの DNS リゾルバーとして設定する 構成ファイル。

1. ターミナルを開き、systemctl を実行します 以下のコマンドを使用して、systemd-resolved を無効にして停止します サービス。これにより、Linux クライアントが静的および永続的な DNS リゾルバーを使用するようになります。

管理者はこの永続的な DNS 解決を定義し、systemd-resolved のようなサード サービスに置き換えられることはありません。 .

# disable and stop systemd-resolved service
sudo systemctl disable --now systemd-resolved

2. 次に、unlink を実行します 以下のコマンドを実行して、シンボリック リンク ファイル(/etc/resolv.conf )。次のステップでこのファイルを置き換えます。 # remove symlink file /etc/resolv.conf sudo unlink /etc/resolv.conf

# remove symlink file /etc/resolv.conf
sudo unlink /etc/resolv.conf

3. 次に、/etc/resolv.conf という名前の新しいファイルを作成します 好みのエディターを使用して、次の構成でファイルに入力します。

以下の構成は、メインおよびフォールバック DNS リゾルバーを設定します。

# Samba AD as main DNS resolver
nameserver 172.16.1.10

# fall-back DNS resolver using Cloudflare
nameserver 1.1.1.1

# hostname lookup for domain example.lan
search example.lan

4. chattr を実行します 以下のコマンドでファイルを /etc/resolv.conf にします クライアント マシンが常にデフォルトの DNS リゾルバーとして Samba AD を使用するようにするための immutable。これらのコマンドは、NetworkManager などの他のサービスからの上書きも防ぎます。

# making the file `/etc/resolv.conf` immutable
sudo chattr +i /etc/resolv.conf

# remove immutable attribute
sudo chattr -i /etc/resolv.conf

5. 最後に、ping を実行します 以下のコマンドを実行して、Samba AD ドメイン名への接続を確認します dc1.example.lan および example.lan .

# ping to AD server dc1.example.an and example.lan
ping -c3 dc1.example.lan
ping -c3 example.lan

接続に成功すると、AD サーバーから返信メッセージが届き、ドメイン dc1.example.lan および example.lan Samba AD の IP アドレスに解決されます。

Chrony を NTP クライアントとして設定する

DNS リゾルバーを構成したら、クライアント マシンと Samba AD サーバーの間で時刻を同期するように Chrony をセットアップします。クライアント マシンと AD サーバーの間に時間差 (最大 5 分) がある場合、クライアントは AD サーバー上のすべてのリソースにアクセスできません。

1. 以下のコマンドを実行して chrony をインストールします Linux クライアントに。

# install chrony
sudo apt install chrony -y

2. 次に、デフォルトの Chrony 構成を編集します(/etc/chrony/chrony.conf ) お好みのエディターで次の構成を追加します。

bindcmdaddress value はクライアント IP アドレスである必要があります。 Chrony サービスは、この IP アドレスで実行されます。 server オプションは、Samba AD ドメイン名を NTP サーバーとして追加する場所です。

# run Chrony as NTP client on the IP address
bindcmdaddress 172.16.1.85

# time synchronize to the Samba AD dc1.example.lan
server dc1.example.lan iburst

3. 次に、systemctl を実行します 以下のコマンドでchronydを再起動します サービスを開始し、サービス ステータスが active (running) であることを確認します . # restart chronyd service sudo systemctl restart chronyd # verify status chronyd service sudo systemctl status chronyd

# restart chronyd service
sudo systemctl restart chronyd

# verify status chronyd service
sudo systemctl status chronyd

以下に示すように、chronyd サービスはactive (running)です および enabled . Chrony NTP クライアントは、システムの起動時に自動的に起動するようになりました。

4. 最後に、以下のコマンドを実行して、クライアント マシンの Chrony サービスが Samba AD NTP サーバーに接続されていることを確認します。 chronyc tracking

chronyc tracking

以下に示すように、Linux クライアントの Chrony サービスは、IP アドレス 172.16.1.10 で Samba AD NTP サーバーに接続されています。 .

Linux クライアントを Samba Active Directory に参加させる

これで、Linux クライアントで Chrony を構成できました。しかし、このクライアント マシンを Samba Active Directory に追加するにはどうすればよいでしょうか。 realmd のインストールと設定から始めます および sssd Linux クライアントを Samba AD サーバーに追加するためのサービス。

1. apt を実行します 以下のコマンドを実行して、パッケージ インデックスを更新します。このコマンドは、リポジトリから最新バージョンのパッケージをインストールしていることを確認します。

sudo apt update

次に、以下のコマンドを実行して realmd をインストールします および sssd 必要なすべての追加パッケージを含むサービス。 realmd サービスは、sssd などの基盤となる Linux サービスで使用されます 、Samba Active Directory に参加します。

sudo apt install -y realmd sssd sssd-tools samba-common krb5-user packagekit samba-common-bin samba-libs adcli

以下に示すように、Samba Active Directory のデフォルト レルム (大文字) を入力します。このデフォルト レルムを Kerberos 認証に使用します。

この例では、Samba AD のデフォルトのレルム ドメインは EXAMPLE.LAN です。 .

3. 新しいファイル /etc/realmd.conf を作成します 好みのエディターを使用して、次の構成を追加します。以下の構成は以下を実行します:

  • Samba AD ドメインとユーザーの動作を処理します
  • AD サーバーへのクライアント接続を指定します
  • 追加サービスの自動インストールを使用するかどうかを決定します。
  • example.lan の特定の構成 AD ドメイン。
[users]
# define Samba AD users behavior
# define default home directory and shell for Samba AD users
default-home = /home/%U
default-shell = /bin/bash

[active-directory]
# define realmd connection to the Samba AD
# you can use `sssd` or `winbind` for realmd to join Samba AD
# os-name can used as an identifier for client
default-client = sssd
os-name = Linux Ubuntu and Mint Desktop

[service]
# disable automati install for additional realmd service
automatic-install = no

[example.lan]
# define behavior of Samba AD `example.lan`
# disable fully-qualified-names so you can use a username to identify Samba users
# automatic-id-mapping to yes will automatically generate UID and GID numbers
# user-principal to yes will automatically create UserPrincipalName for the client machine
# manage-system to yes to enabled realmd to manage client machine
fully-qualified-names = no
automatic-id-mapping = yes
user-principal = yes
manage-system = yes

kinit を実行します 以下のコマンドでドメイン接続を認証します (EXAMPLE.LAN )デフォルト ユーザー(administrator)を使用して Kerberos サービスに ).

administrator のパスワードを入力してください 以下に示すように、プロンプトが表示されたら Samba AD ユーザー。

新しいクライアントを Samba AD に追加するには、administrator を使用する必要があります ユーザー。

# authenticate to Kerberos server on EXAMPLE.LAN using administrator
sudo kinit [email protected]

# verify authentication and print detailed Kerberos tickets for administrator user
sudo klist

5. realm join を実行します 以下のコマンドで Linux クライアントを Samba AD に追加します (example.lan )。 UbuntuMintDesktop を置き換えます 一意のユーザー プリンシパル名 (UPN) を使用します。各クライアント/マシンには異なる UPN が必要です。

# joining/adding Linux Ubuntu/Mint to Samba AD example.lan
# --verbose to get full logs from the process
# --user-principal will automatically set the UserPrincipalName for this machine
# --unattended will run the realm command without prompting for a password prompt,
# because you've already authenticated through the Kerberos ticket
sudo realm join --verbose example.lan --user-principal=UbuntuMintDesktop/[email protected] --unattended

Successfully enrolled machine in realm を取得します プロセスが完了したときのメッセージ。この時点で、Linux クライアントが Samba Active Directory に正常に追加されました。

6. 次に、/etc/sssd/sssd.conf を開きます 好みのエディターで構成 ファイルを編集します。

次の行を追加して、デフォルトのグループ ポリシー オブジェクト(GPO)のアクセス制御を permissive に変更します 、access_provider の値を設定します ad まで . ad 値は sssd のデフォルト認証を示します サービスは Active Directory です。

この記事の執筆中、ad_gpo_access_control の場合、Ubuntu 20.04 デスクトップとサーバーの両方で AD ユーザーのログインが許可されません。 enforcing に設定されています (デフォルト値)。したがって、ad_gpo_access_control を変更します 値をpermissiveに変更 .

ただし、Linux Mint では、ad_gpo_access_control の場合でも、AD ユーザーを使用してログインできます。 enforcing にあります モード。

# change default GPO access control to permissive
ad_gpo_access_control = permissive

7. pam-auth-update を実行します 以下のコマンドを実行して、PAM 構成を変更します。このコマンドは、PAM モジュール(pam_mkhomedir.so)を有効にします )。 PAM モジュールを有効にすると、Samba AD ユーザーのホーム ディレクトリが自動的に作成されます (ホーム ディレクトリが利用できない場合のみ)。

# modify PAM configuration
pam-auth-update

[ログイン時にホーム ディレクトリを作成する] を選択します ターミナル画面でオプションを選択し、OK を選択します

SPACE キーを押してオプションを有効にし、TAB キーを押してカーソル メニューを移動します。

8. realm list を実行します 以下のコマンドを実行して、Samba Active Directory への接続を確認してください。

# Checking connected AD
realm list

接続が成功すると、以下に示すように、詳細な AD 接続が表示されます。

以下では、Ubuntu/Mint デスクトップ マシンが Samba Active Directory に接続されていることを確認できます(example.lan ) (kerberos-member として) ).

9. id を実行します 以下のコマンドを実行して、Samba AD ユーザーを確認してください。

# checking Samba AD user `alice`
id alice

インストールが成功すると、ランダムな uid を受け取ります および gid Samba ユーザー alice の場合 .この例では、ユーザー alice を確認できます が作成され、Samba AD で利用可能になります。

10. さらに、次のコマンドを実行してデフォルトのテキスト エディターを設定し、(visudo ) /etc/sudoers デフォルトのエディターでファイル。優先するテキスト エディターはいつでも変更できますが、既定のエディターは nano です。

# Sets default editor to nano
export EDITOR=nano
# Opens the /etc/sudoers file in the default editor
visudo

sudoers に Samba AD ユーザーを追加します 次の形式を使用してファイルを作成し、変更を保存してエディターを閉じます。そうすることで、sudo を有効にできます Samba ユーザーの特権 (ユーザーが sudo を実行する必要がある場合)。

# add Samba user `alice` to sudoers
alice ALL=(ALL:ALL) ALL

11. 最後に、Ubuntu デスクトップで次のコマンドを reboot に対して実行します。 新しい構成を適用するシステム。

ただし、Linux Mint と Ubuntu サーバーの場合は、追加の構成を追加する必要があります。これについては、次のセクションで説明します。

sudo reboot

Samba Active Directory 用の LightDM のセットアップ

ユーザー名とパスワードを使用した手動ログイン プロセスのデフォルトの LightDM 構成は、Linux Mint デスクトップでは無効になっています。 Samba AD ユーザーが Mint デスクトップ マシンにログインできるように、LightDM 構成を変更して手動ログイン プロセスを有効にします。

LightDM を開きます(/etc/lightdm/lightdm.conf ) 設定 ファイル を任意のエディタで開き、[Seat:*] の下に次の設定を入力します。

greeter-show-manual-login=true 以下のオプションは、LightDM での手動ログイン プロセスを有効にしますが、allow-guest=false は オプションは、ゲスト ユーザーのログインを無効にします。

# enable manual login
greeter-show-manual-login=true

# disable guest login
allow-guest=false

次に、以下のコマンドを実行して Linux Mint デスクトップを再起動し、新しい構成を適用します。

sudo reboot

SSH サービスの Kerberos 認証の設定

サーバー環境の SSH サービスで Kerberos 認証を有効にする必要があります。そうすることで、AD ユーザーはサーバーにログインできます。どのように? SSH 構成ファイルを編集する。

SSH を開きます (/etc/ssh/sshd_config ) 構成 ファイルを任意のエディターで編集します。

次のオプションのコメントを外し、値を yes に設定します。 :

  • KerberosAuthentication – Kerberos 認証を有効にします。
  • KerberosTicketCleanup – ログアウト時に Kerberos チケットを自動的に破棄

次に、以下のコマンドを実行してサーバーを再起動し、新しい構成を適用します。

sudo reboot

Samba AD ユーザーを使用した Linux マシンへのログイン

これで、Linux クライアントが完成し、Samba AD に追加されました。しかし、Samba AD ユーザーがこれらの Linux クライアントにログインできることをどのように確認できますか? Linux デスクトップ クライアントの Display Manager ログイン画面で、ユーザーとパスワードを指定できます。一方、Ubuntu サーバーの場合は、安全な SSH プロトコルを介して接続できます。

Ubuntu、Mint、および Ubuntu サーバーへのログインは、互いに異なって見えます。このデモでは、Samba AD ユーザーを使用して各 OS にログインする方法を確認できます。

Linux Ubuntu デスクトップへのログイン

Linux Ubuntu デスクトップでは、Samba AD ユーザーを使用したログインは、ユーザー アカウントでの通常のログイン方法と同じです。

1. Ubuntu デスクトップ クライアントを起動し、[一覧にありませんか?] をクリックします。 Ubuntu GDM ログイン画面のオプションを使用して、別のユーザーでログインします。

2. 次に、[email protected] に Samba AD ユーザーを入力します。 フォーマット。この例では、Samba AD ユーザー alice(example.lan) を使用しています 、以下に示すように。

3. Samba AD ユーザー (alice) のパスワードを入力し、ENTER を押してログインします。

ログインすると、デフォルトの Ubuntu デスクトップが下のスクリーンショットのように表示されます。ここで、Samba AD ユーザー alice は正常にログインしました。

以下に、PAM モジュール (pam_mkhomedir.so. ) により、ユーザーのホーム ディレクトリが自動的に作成されました。 sudo root 権限はファイル sudoers で構成されていますが、 .

Linux Mint デスクトップへのログイン

Linux Mint デスクトップでのログインは、Ubuntu デスクトップでのログイン方法とは少し異なります。

[ログイン] ボタンをクリックし、以下に示すようにユーザーとパスワードを入力し、ENTER を押してログインします。

これで、以下のような Samba AD ユーザーの Linux Mint デスクトップが表示されます。

Ubuntu サーバーへのログイン

最初の 2 つの OS とは異なり、ssh を使用してコマンドライン環境から Ubuntu サーバーにログインします。 コマンド。

ssh を実行します [email protected]_ip に続く Samba AD ユーザーを使用してサーバーに接続するには、別のマシンから以下のコマンドを実行します。

# connect to SSH using AD user
ssh [email protected]

yes と入力してください サーバー フィンガープリント ID を追加し、Samba AD ユーザーのパスワードを Ubuntu サーバーに入力します。

以下に示すように、ユーザーのホーム ディレクトリは自動的に作成され、Samba AD ユーザーのデフォルト シェルは Bash です。

結論

このチュートリアルを通して、SSSD と Realm サービスを使用して Linux クライアント (デスクトップとサーバー) を Samba Active Directory (AD) に追加する方法を学びました。また、Linux サーバーの SSH サービスで Kerberos 認証を有効にする方法も学びました。

では、Samba Active Directory の機能をどのように活用しますか?別のサーバーをドメイン コントローラー (DC) として追加して、現在の Samba AD に参加してみてはいかがでしょうか?このセットアップは、AD でのレプリケーション、冗長性、および負荷分散のサポートを提供します。その結果、クライアントの別のグループを Samba AD に追加できます。


Linux
  1. Linuxでカスタムホームディレクトリを使用してユーザーを作成する方法

  2. Linuxでディレクトリの名前を変更する方法

  3. Linux –ツリーとディレクトリサイズを組み合わせる方法は?

  1. Debian 9StretchLinuxでEncFSを使用してディレクトリを暗号化する方法

  2. Linuxでホームディレクトリのユーザーアカウントを削除する方法

  3. Samba、Winbind、および Kerberos を使用して Linux サーバーを Active Directory と統合する

  1. Linuxでuseraddを使用してユーザーを管理する方法

  2. Linuxでディレクトリをgzipで圧縮する方法

  3. Linuxでディレクトリサイズを取得する方法