社内で共有ネットワークディスクを全員で共有する必要があるため、Sambaサービスが必要です。通常はWindowsの共有機能で実現できますが、ライセンス著作権の問題からLinuxを使用してこの問題を解決し、ADドメイン制御アカウントの認証と承認も解決する必要があります。
1 Sambaをコンパイルしてインストールする 依存関係の問題を解決するためのコンパイルとインストールの手順は再び省略されます。コンパイルおよびインストールされたSambaには、以下のパラメータが追加されます。
--prefix=/usr/local/samba \--with-system-mitkrb5 \--with-ldap \--with-syslog \--with-pam \--with-systemd \--with-ads \--without-ad-dc \--with-winbind \--enable-debugSamba環境変数を追加する
echo "export PATH=/usr/local/samba/bin:/usr/local/samba/sbin:$PATH" > /etc/profile.d/samba.shsource /etc/profile1.1 Samba管理スタートアップサービスを構成する
cat /etc/systemd/system/smbd.service[Unit]Description=Samba SMB DaemonAfter=network.target
[Service]Type=forkingExecStart=/usr/local/samba/sbin/smbd -s /usr/local/samba/etc/smb.conf -DExecReload=/bin/kill -HUP $MAINPIDExecStop=/bin/kill -TERM $MAINPIDPIDFile=/usr/local/samba/var/run/smbd.pid#User=samba#Group=sambaRestart=always
[Install]WantedBy=multi-user.target
cat /etc/systemd/system/nmbd.service[Unit]Description=Samba NetBIOS Name ServerAfter=network.target
[Service]Type=forkingExecStart=/usr/local/samba/sbin/nmbd -s /usr/local/samba/etc/smb.conf -DPIDFile=/usr/local/samba/var/run/nmbd.pid#User=samba#Group=sambaRestart=always
[Install]WantedBy=multi-user.target
cat /etc/systemd/system/winbindd.service[Unit]Description=Samba Winbind DaemonAfter=network.target
[Service]Type=forkingExecStart=/usr/local/samba/sbin/winbindd -s /usr/local/samba/etc/smb.conf -DPIDFile=/usr/local/samba/var/run/winbindd.pid#User=samba#Group=sambaRestart=always
[Install]WantedBy=multi-user.target当初は、ADドメインコントローラーに参加せずに認証できるように、Samba+LDAP認証の組み合わせを利用しようと考えていました。しかし、何度もテストを繰り返した結果、ADドメインコントローラーのLDAPプロトコル経由ではアカウント認証を完了できませんでした。結局、Samba+ADドメインコントローラー認証を使用するしか選択肢がありませんでした。
2 nsswitch設定のセットアップ
/etc/nsswitch.conf設定ファイルを編集する
## Example configuration of GNU Name Service Switch functionality.# If you have the `glibc-doc-reference' and `info' packages installed, try:# `info libc "Name Service Switch"' for information about this file.
passwd: files winbind # パスワードをwinbindで処理するように設定するgroup: files winbind # グループの設定はwinbindによって処理されますshadow: files winbind # シャドウをwinbindで処理するように設定するgshadow: files systemd
hosts: files dnsnetworks: files
protocols: db filesservices: db filesethers: db filesrpc: db files
netgroup: nis3 krb5構成のセットアップ
/etc/krb5.conf設定ファイルを編集する
[libdefaults] default_realm = KOEVN.COM dns_lookup_realm = true dns_lookup_kdc = true rdns = false ticket_lifetime = 24h forwardable = true
[domain_realm] .koevn.com = KOEVN.COM koevn.com = KOEVN.COM次に、dig _kerberos._udp.koevn.com SRVコマンドを使用して、解決レコードが正常に返されるかどうかをテストします。
4 Sambaサービスを設定する
[global] workgroup = KOEVN realm = KOEVN.com security = ADS
winbind use default domain = yes winbind enum users = yes winbind enum groups = yes winbind nss info = template
idmap config * : backend = tdb idmap config * : range = 1000000-1999999 idmap config KOEVN : backend = rid idmap config KOEVN : range = 10000-999999
template shell = /bin/false template homedir = /nonexistent winbind refresh tickets = yes
log file = /data/samba/logs/samba.log log level = 2
[test] path = /data/samba/test comment = テストディレクトリ browseable = yes browseable = no read only = no guest ok = no hide unreadable = yes force group = samba create mask = 0660 directory mask = 0770 valid users = K95221 delete readonly = no5 Sambaを起動してアクセスを確認する 5.1 サンバを始める
systemctl start smbd.service && systemctl start nmbd.service && systemctl start winbindd.service5.2 ADドメインコントローラに参加する 現在のLinuxホストをADドメインコントローラに追加します。まずホスト名を変更することをお勧めします。
net ads join -U ldap@KOEVN.COM{% note warning %} このアカウントにはドメインを追加する権限が必要ですが、ドメインの追加は常に失敗します。 {% endnote %} 参加に成功すると、‘hostname’ がレルム ‘KOEVN.COM’ に参加しました」というメッセージが表示されます。
アカウントが正しくマッピングされていることを確認する
wbinfo -n K95221 # このコマンドを実行するとSIDの文字列が返されますwbinfo -S SID # このコマンドを実行するとUIDが返されます。解決できない場合は、共有ディレクトリの認証が直接失敗することを意味します。libnss_winbindライブラリファイルをシステムディレクトリに追加します
cp /usr/local/samba/lib/libnss_winbind.so.2 /lib/x86_64-linux-gnu/cd /lib/x86_64-linux-gnu/ln -sf libnss_winbind.so.2 libnss_winbind.so⚠️ 注意 以前、wbinfo -S の SID 値に惑わされてしまいました。認証に AD ドメインコントローラーを使用していたため、Linux ローカルユーザーと AD ドメインコントローラーユーザーの間に 1 対 1 のマッピングを作成する必要がありました。これは不要でした。重要な問題は、SMB 設定ファイルの
idmap設定項目にあります。この項目は、AD ドメインコントローラーアカウントsAMAccountNameを UID に自動的にマッピングします。そのため、ユーザーが Samba 共有にファイルをアップロードすると、ファイルの所有者は AD ドメインコントローラーのsAMAccountName属性のアカウントになります。
上記の検証が成功すると、基本的に共有ディレクトリにアクセスできるようになります。