4
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Samba4を使ったファイルサーバの構築と外部LDAPサーバとの連携

Last updated at Posted at 2019-03-10

#概要
本エントリでは、以下の2つについて紹介します。

  1. Samba4を使ってファイルサーバを構築すること。
  2. Sambaサーバから、別のサーバに構築されているLDAPに対して認証を行えるようにすること。
    ※LDAPサーバは既に構築済みという前提です。

今回使用したSambaのバージョンは4.8.3、使用したLDAPはopenLDAPです。

#サーバの構成
想定しているサーバの構成は、以下の通りです。
構成図.png
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
すると、以下の画面が表示されます。
authconfig-tui.png
認証(右側)の「LDAP認証を使用」にチェックを入れ、「次」を押下します。
次は、以下の画面が表示されます。
authconfig-tui2.png
ここで、「サーバ」に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サーバに対して認証を行うことができます。

4
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?