#概要
本エントリでは、以下の2つについて紹介します。
- Samba4を使ってファイルサーバを構築すること。
- Sambaサーバから、別のサーバに構築されているLDAPに対して認証を行えるようにすること。
※LDAPサーバは既に構築済みという前提です。
今回使用したSambaのバージョンは4.8.3、使用したLDAPはopenLDAPです。
#サーバの構成
想定しているサーバの構成は、以下の通りです。
SambaサーバとLDAPサーバは、別々のサーバという想定です。
また、両者のOSはCentOS7を想定しています。
#必要なパッケージのインストール
Sambaの構築とLDAPとの連携を行うために、Sambaサーバに必要なパッケージをインストールします。
以下のコマンドを実行してください。
yum -y install samba samba-client samba-common nscd nss-pam-ldapd rsyslog
#Sambaの設定
まずは、Sambaの設定について説明します。
smb.confの設定と、アクセスログの設定を行います。
##smb.confの設定
smb.confは、共有ディレクトリの場所や認証時に参照するパスワードの場所などを設定するファイルです。
以下は、LDAPとの連携を前提としたsmb.confの例です。
[global]
# 共通設定
workgroup = WORKGROUP
server string = Samba Server %v
netbios name = [SambaサーバのNetBIOS名]
security = user
dos charset = CP932
wins support = no
# Linuxユーザ登録・削除用スクリプトのパス
add user script = [ユーザ追加コマンドのフルパス] %u
delete user script = [ユーザ削除コマンドのフルパス] -r %u
# デバッグログ設定
log level = 3
log file = [デバッグログ出力先のフルパス]
max log size = 1000
utmp = yes
# LDAP通信設定
tls enable = off
passdb backend = ldapsam:ldap://[LDAPサーバのIPアドレス]
ldap ssl = off
ldap suffix = [ユーザ情報が登録されているLDAPのsaffix]
ldap admin dn = [LDAPの管理者ユーザのsuffix]
ldap passwd sync = yes
ldap debug level = 3
# 認証方式設定
ntlm auth = yes
[ShareName]
# ディレクトリの共有設定
comment = [ディレクトリの説明]
path = [共有ディレクトリのフルパス]
browsable = yes
public = yes
writable = yes
read only = no
guest ok = no
guest only = no
# アクセスログ設定
vfs objects = full_audit
full_audit:facility = local7
full_audit:prefix = [出力したい情報のパラメータ]
full_audit:success = [出力したい情報のパラメータ]
full_audit:failure = [出力したい情報のパラメータ]
上記の各項目については、こちらを参照してください。
アクセスログ設定の項目については、こちらを参照してください。
##アクセスログの設定
Sambaのアクセスログを出力するための設定方法を紹介します。
アクセスログを出力することで、共有ディレクトリ内のファイルごとに、どのユーザがどんな操作を行ったかを記録することができます。
rsyslog.confに、以下の設定を追加します。
### begin forwarding rule ###
~(省略)~
# Sambaのアクセスログ設定
local7.* /var/log/samba/accesslog
facility
は、samb.confのfull_audit:facility
に設定したものと合わせてください。
こちらのページが参考になります。
#SambaサーバのLDAP認証設定
次に、SambaサーバからLDAPサーバに対して認証を行えるように設定します。
##nslcdの設定
nslcdの設定を行います。
nslcd(Name Service LDAP Connection Daemon)とは、LDAPへの接続を担うサービスです。
以下の2つのファイルを編集する必要があります。
①nsswitch.conf
nsswitch.confについてはgroup, passwd, shadowを以下のように編集するだけです。
passwd: compat ldap
group: compat ldap
shadow: compat ldap
②nslcd.conf
nslcd.confについては、以下の個所を修正するだけです。
この設定を行うことで、認証に使用するLDAPサーバのURIと、認証の際に参照するサフィックスを決めることができます。
uri ldap://[LDAPサーバのIPアドレス]
base group dc=sample,dc=com
base passwd dc=sample,dc=com
base shadow dc=sample,dc=com
上記の2つのファイルを設定したら、以下のコマンドを実行します。
authconfig-tui
すると、以下の画面が表示されます。
認証(右側)の「LDAP認証を使用」にチェックを入れ、「次」を押下します。
次は、以下の画面が表示されます。
ここで、「サーバ」にLDAPサーバのIPアドレス、ベースDNには、ユーザ情報が登録されているLDAPのサフィックスをそれぞれ指定してください。
nslcdの設定は以上です。
##secret.tdbへのパスワード登録
LDAPの管理者パスワードを、secret.tdbに登録します。
これを行うことにより、SambaがLDAP認証を行う際にLDAPの情報を参照できるようになります。
以下のコマンドを実行します。
smbpasswd -W
するとLDAPパスワードを聞かれるため、LDAPの管理者パスワードを入力してください。
設定が完了したら、以下のコマンドでLDAPのユーザ情報が参照できるか確認してください。
pdbedit --list
#各種サービスの再起動
ここまで設定したら、Sambaサーバの各種サービスを再起動します。
以下のコマンドを実行してください。
systemctl restart smb nmb nslcd rsyslog
全てが正常に再起動したら、Sambaサーバの設定は完了です。
#LDAPに必要なユーザ情報
Sambaサーバの設定が完了したら、後はLDAPのユーザ情報に必要な項目を追加するだけです。
追加する項目は以下です。
- objectClass: posixAccount
- objectClass: sambaSamAccount
- sambaSID: [SambaサーバのSID]
- sambaHomePath: [Sambaの共有ディレクトリのフルパス]
- sambaHomeDrive: [Sambaのホームドライブ]
- sambaAccountFlags: [U ]
- uid: [ユーザID]
- uidNumber: [ユーザIDに紐付く番号]
- gidNumber: [ユーザが所属するグループに紐付く番号]
- homeDirectory: [linux上のホームディレクトリ]
- loginShell: /bin/bash
- sambaPasswordHistory: 00000000000000000000000000000000000000000000000000000000
- sambaLMPassword: [Samba用パスワードのハッシュ値]
- sambaNTPassword: [Samba用パスワードのハッシュ値]
- sambaPwdLastSet: [パスワードが設定された日時(UNIX時刻形式)]
上記の各項目については、こちらを参照してください。
ただし、sambaSIDについてはこちらを参照してください。
※上記のリンク先はどちらもSamba3のドキュメントですが、Samba4でも十分参考になります。
以上で、設定は完了です。
これで、Sambaによってファイルサーバを構築し、外部のLDAPサーバに対して認証を行うことができます。