それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

ネットワーク運用・管理五輪書「壱:地の巻」Sambaファイルサーバー (3)Windowsドメインとの連携術

Software Design (ソフトウエア デザイン) 2006年 07月号 [雑誌] の第3章

Windowsドメインとの連携術

  • はじめに
  • Windowsドメインとの認証統合
    1. securityパラメーターと認証統合
    2. security = DOMAIN による認証の統合
    3. security = ADS による認証の統合
  • UNIXユーザーの自動生成
  • Winbind 機構
  • Winbind機構のインストール
  • UNIXユーザーの属性の指定
  • ユーザー属性情報をSFUから取得する。
  • UNIXユーザー名のの「\」文字の変更
  • UNIXユーザーのドメイン部分の省略
  • ホームディレクトリの自動作成
  • Sambaユーザー情報のキャッシュ時間
  • PAMによるSamba以外のプロダクトへの認証統合

Windowsドメインとの認証統合

  • 認証統合することでSambaのパスワードに関する分はNTドメインから取得する。
  • NTドメインへWindowsとSambaを統合してもUNIXユーザーが別途必要なことは変わりがない。

securityパラメーターと認証統合

security=SERVER による認証統合
  • 昔から存在する方法。
  • Sambaへのログイン認証を他サーバに委託する。
  • 委託先にNTドメインのWindowsか他Sambaを指定できる。DCであるひつようはない。
  • 認証サーバー側の設定が不要なのでらく。
  • NTドメインが存在しない環境で便利。

設定例

[global]
   security = SERVER
   password server = サーバー名 [, サーバー名2]
security = DOMAIN による認証の統合

SambaをNTドメインに参加させる。
設定例

[global]
	workgroup = 参加ドメインの名前 #ドメイン名は 大文字で!
	security = DOMAIN
	password server =  PDCサーバー [,BDCサーバー,BDC...]

設定後
Sambaがドメイン参加し、ドメインメンバとしてSambaがPDCに登録される必要がある。
ドメインの参加(設定終了後smbd/nmbd再起動)

net rpc join -U administrator 

NT/ADドメインを組んだことが無くて、マシンアカウントを理解してなかったのでチョット詰まった。

security = ADS による認証の統合
  • win2k以降のADドメインに参加する。
  • ADはKerberosのチケットが必要、設定箇所がちょっと増える。
  • マシン名で指定のときはDCのDNSサーバーを指定し名前解決の設定する

設定例 smb.conf

[global]
	workgroup = ドメイン名(大文字!)
	security = ADS
	realm = WIN2K.LAN

設定例 /etc/krb5.conf

[realms]
	WIN2k.LAN
	{
		kdc = DC のIP
	}

ADドメインに参加する

net ads join -U administrator

ADドメインのAdminパスを一度も変更してなかったらエラーになるらしい
できあがったら、ADドメインのMMC参照すると、コンピューターにSambaが見える

UNIXユーザーの自動生成

add user script 設定をつかうと、UNIX側にユーザーが存在していないとき、Sambaが自動生成する。
設定例

[global]
	add user script = useradd -m -s /bin/false %u

やってみたけど、WindowsのドメインがPrefixするからあまりキレイじゃなかった・・・(あとでキレイにする方法が出てきた

Winbind 機構

  • UNIXのユーザー情報 /etc/passwd の代りに ADドメインを使う。
  • UNIXユーザー作成を完全に不要にする
  • smbd/nmbd のほかに winbinddを起動して使う
  • UNIXのNSS(name service switch )を使っている
Winbind機構のインストール
  1. windowsドメインへの参加設定 #問題の切り分けの単純化のためにNTドメイン参加をキッチリ済ませておく
  2. Winbind機構のインストール
  3. /etc/nsswitch.confの修正
  4. smb.conf の修正
  5. winbbind 機構の起動と動作確認 -- getent passwd でWINドメインのユーザーが見えると成功
  6. Windowsからのログイン -- Winでユーザー作って、WindowsからSambaログイン出来ることを確認
最低限の設定例

nsswitch.conf

	passwd: files winbind
	group:  files winbind
	shadow: files winbind

smb.conf

	[global]
		security = DOMAIN (またはADS)
		idmap uid = 10000-12000
		idmap gid = 10000-12000
Winbind動作確認コマンド

UNIXユーザーとしてwinユーザがみえること確認(ログインは出来ない

takuya$ wbinfo -t     #チェック
takuya$ wbinfo -u     #アカウント列挙
takuya$ getent passwd #非winbindマシンで比較してみるといい
UNIXユーザーの属性の指定

winbind のユーザー情報は変更できる。たとえばホームディレクトリ

[global]
	template shell = /bin/bash
	template homedir = /home/%U

/bin/bash指定しているが、ログインは出来ない。シャドウパスワードがnsswitch+winbindで使えないため。ログインするにはpam_winbind.soを使う。

ユーザー属性情報をSFUから取得する。

SFUNIS機能でユーザー情報 homedir/shell/uid/gid を指定できる。

[global]
	idmap = ad   # Samba拡張モジュール ad.so が必要
NIXユーザー名のの「\」文字の変更
  • Windowsドメイン名とユーザー名を区切る文字「\」(バックスラッシュ)を別文字に変更できる。
  • バックスラッシュはみにくいので[-, +, _]等に変えると良い
UNIXユーザーのドメイン部分の省略

ドメイン部分を省略することが出来る。

[global]
	winbind use default domain = yes

これでデフォルトのWINドメインはドメイン名を省略できる。
「ドメイン名¥ユーザー名」が「ユーザー名」のみになる。
これはUNIXSSHログインする際にとても便利

ホームディレクトリの自動作成

  • pam_mkhomedir.so を活用するとホームディレクトリの自動作成が可能(PAMの機能)
  • ホームディレクトリの作成はユーザー権限で行なわれるので/home の権限に注意する 1777とか?

Sambaユーザー情報のキャッシュ時間

認証情報を毎回ADやPDCに問い合わせるのは不便なので、キャッシュすることが出来る。

[global]
	winbind cache time = XXXXX

PAMによるSamba以外のプロダクトへの認証統合

  • pam_winbind.so を用いることでSSHd, FTPd, POSTFIX, Apache...などがユーザー情報を使えるようになる。
  • pamの設定 /etc/pam.d/どれか #ディストリビューション依って違う
  • PAMの設定はGoogle検索すると出てくる。