TOPサーバ構築・運用> ログインシェル、ホームディレクトリ情報をUNIX属性から取得する
Samba 4.0
Samba最新動向

第2回:Samba 3.0.20以降の新機能を追え(1)

著者:たかはしもとのぶ   2007/8/10
前のページ  1  2  3  次のページ
ログインシェル、ホームディレクトリ情報をUNIX属性から取得する

   Samba 3.0.20では「security=ADS」の設定でSambaをドメインに参加させたうえで、「winbind nss info=sfu(デフォルトはtemplate)」という設定を行うことでログインシェルやホームディレクトリの設定についてユーザ個々のUNIX属性から取得することが可能となります。

   これらのパラメータにより図3に示していたUNIX属性のうち、ログインシェル/ホームディレクトリの情報がUNIX側に反映されます。例えばUNIX属性が下記のようになっているユーザの情報をUNIX上で参照すると、下記のようになります。
$ getent passwd W2003AD2\\samba02
W2003AD2\samba02:x:10001:2000:Samba 02:/home/sfu/samba02:/bin/tcsh


Samba 3.0.23以降での拡張

   Samba 3.0.23以降では、Windows Server 2003 R2以降でサポートされているRFC2307スキーマを直接用いることも可能となりました。これに伴いwinbind nss infoパラメータの値が拡張され、以下のような記述が可能となっています。

winbind nss info=rfc2307 SO36:sfu FHAIN:rfc2307 PANKOW:template

   これは、デフォルトはrfc2307スキーマ、S036ドメインはSFUのスキーマ、FHAINドメインはrfc2307スキーマ、PANKOWドメインはtemplateからの取得を指定した場合の例です。最初のパラメータはログインシェルなどの情報のデフォルトの取得元で、それ以降は「ドメイン:取得元」の記法によりドメインごとにどこから情報を取得するかを指定することが可能となっています。取得元としては以下のような値を指定可能です。

ログインシェル、ホームディレクトリ情報の取得方法
template Sambaの「template shell」などのパラメータから生成
sfu Active DirectoryにSFU(Services for UNIX)をインストールすることで追加されるUNIX属性から取得
rfc2307 Windows Server 2003 R2以降でサポートされているrfc2307スキーマから取得
unixinfo UNIX上の情報から取得?(Samba 3.0.24のソースコードを参照した限り、処理が未実装)

表1:指定可能なパラメータ

   このようにドメインごとの指定が可能となったことで、複数ドメインと信頼関係を結んでいるような環境ではドメインごとに取得元のドメインコントローラを切替える設定が可能となりました。なお、関連するパラメータはSamba 3.0.25で大幅に変更されていますが、それは別の項目で記載します。


WindowsユーザとUNIXユーザとのマッピングを動的に行う:Samba 3.0.20

   Windowsのユーザ名とUNIXのユーザ名とのマッピングが必要な場合、従来のSambaでは下記のような文法のUsername Mapファイルを作成し、username mapパラメータでそのフルパスを指定するといった方法で実現する必要がありました。

Username Mapファイルの例
# sample settings
monyo=motonobu "TAKAHASHI Motonobu" "高橋基信"

   この方法は簡便ですが、マッピングを行うユーザ数が大量になるとメンテナンス性やパフォーマンスの点で問題が発生するほか、他のシステムやSambaマシン間でマッピング情報を共有したいといった要望に対応することもできませんでした。

   こうした要望に対応するため、Samba 3.0.20ではユーザ名のマッピングを動的に行うusername map scriptパラメータが用意されました。このパラメータの値には下記のようにスクリプトのフルパス名を指定します。

username map scriptパラメータの設定例(スクリプト名は任意)
[global]
  ...
  username map script=/etc/samba/mapusers.sh

   このスクリプトでは、引数として与えられたWindows側のユーザ名に対して、Sambaユーザ名を返す必要があります。このスクリプトと同様のマッピングを行なうものの例を下に示します。

スクリプト例
#!/bin/sh

if [ "$1" == "motonobu" ]; then
  echo monyo
elif [ "$1" == "TAKAHASHI Motonobu" ]; then
  echo monyo
elif [ "$1" == "高橋基信" ]; then
  echo monyo
fi

   このスクリプトはパラメータの動作説明のためのサンプルですので、あまり実用的ではありませんが、ユーザ名のマッピング情報をLDAP上に格納し、スクリプト内で毎回ldapsearchコマンドを用いてマッピング情報を検索するような仕組みにすると、複数Sambaサーバでのマッピング情報の一元管理が可能となり、このパラメータのメリットを享受することができるでしょう。

   なお日本語のWindowsユーザ名の場合、スクリプトにはunix charsetで指定した文字コードでユーザ名が渡されます。

   またUsername Mapファイルとは異なり、ユーザ名にはユーザが入力した通りの文字列が引きわたされます。上のスクリプトを用いる場合、「TAKAHASHI Motonobu」という入力はmonyoにマッピングされますが、「takahashi motonobu」という入力はマッピングされません。大文字、小文字を同一視する対応はスクリプト内で実装する必要がある点に注意してください。

前のページ  1  2  3  次のページ


たかはしもとのぶ
著者プロフィール
たかはしもとのぶ
1970年生まれ。1993年早稲田大学第一文学部哲学科卒。同年NTTデータ通信株式会社(現:株式会社NTTデータ)に入社。
クライアント・サーバシステム全般に関する技術支援業務を長く勤める。UNIX・Windows等のプラットフォームやインターネットなどを中心とした技術支援業務を行なう中で、接点ともいうべきMicrosoftネットワークに関する造詣を深める。
現在は「日本Sambaユーザ会」スタッフなどを務め、オープンソース、Microsoft双方のコミュニティ活動に関わるとともに、各種雑誌への記事執筆や、講演などの活動を行なっている。


INDEX
第2回:Samba 3.0.20以降の新機能を追え(1)
  Samba 3.0.20以降の新機能を追う
ログインシェル、ホームディレクトリ情報をUNIX属性から取得する
  ACLサポートの拡張:Samba 3.0.20