最終更新日 2005/6/22  戻る  493728 人 REMOTE = 38.103.63.59 REFERER =

★Sambaでドメインコントローラー

Windowsクライアントが1台や2台なら問題ないのですが,我が家には5台あり使う人間が5人ほどいます.ま〜,それぞれに専用機みたいなものがあるんですが,時々専用機以外の機械も使う機会があります.そんなときデスクトップがいつも同じならいいな〜と考えていたんですがこれを実現できるのがSambaのPDC(Primary Domain Controller)です.要するにどこのWinクライアントでも同じデスクトップ環境が実現できるわけです.このことをWindowsクライアントのSambaドメインへの追加とも言います.
Samba3.0への移行はここ
1.インストール
現在のSambaの最新バージョンはSamba日本語版Samba 2.2.8a-ja-1.1です.本当の最新バージョンは3.0なのですが,日本語バージョンはないですしもう少し枯れてからのほうがよいと思います.今回はソースからインストールしてコンパイルすることにします.
例によってSamba-2.2.8a-ja-1.1.tar.gzが/usr/local/srcにあるとします.
#cd /usr/local/src
#tar vzxf Samba-2.2.8a-ja-1.1.tar.gz
#cd Samba-2.2.8a-ja-1.1/source
#./configure --with-smbmount --with-automount
オプションについてはhttp://www.samba.gr.jp/doc/install_2.2/3_configure.htmlなどに有益な情報があります.
#make install
#cd ../examples
#cp smb.conf.default /usr/local/samba/lib/smb.conf
これでお終い.簡単ですね./usr/local/sambaにすべてがインストールされます.

2.必要なグループ,ディレクトリを作る
家族が使うgroupはhomeuserとしています.ほかのグループ名がよければ,
#groupadd xxx
として下さい.今回は,このグループ名をドメイン名としました.ちなみに,ドメイン名は何でも良いです.好きなものにして下さい.
あと必要なグループ,ディレクトリを作ります.

#groupadd admin homeuserグループとともにadministrator権限を与えるグループ
#groupadd winpc これは好きなものでOK.adduserで使うadministrator権限を与えないグループ
共有ディレクトリを作ります.これも好きなものでOK.
#cd /
#mkdir samba
#cd /samba
#mkdir public
#chown -R nobody:nobody public
#chmod 777 public
netlogonのディレクトリを作ります.これも好きなものでよいです.
#cd /home
#mkdir netlogon
このディレクトリにmount.batというファイルを置きます.
savはサーバの名前です.サーバはsav.yaguma.comです.
/home/netlogon/mount.bat
net time \\sav /set /yes
@echo off
if %OS%.==Windows_NT. goto WinNT
:Win95
net use y: \\sav\public
net use z: \\sav\homes
goto end
:WinNT
net use y: \\sav\public /persistent:no
net use z: \\sav\homes /persistent:no
:end
このファイルによりy:に共有ディレクトリが,z:にホームディレクトリが設定されます.
このファイルは改行コードをCR/LFにします.viなどでmount.bat.lfを作っておき,
#nkf -e -Lw mount.bat.lf>mount.bat
などとします.net useコマンドについてはhttp://hp.vector.co.jp/authors/VA007952/pdf/bo3.pdfを参照して下さい.

3.smb.confの設定.
/usr/local/samba/lib/smb.confの設定です.
以下のものを変更します.
[global]
workgroup = HOMEUSER
security = user
encrypt passwords = yes
domain master = yes
domain logons = yes
preferred master = yes
os level = 65
# 全て共通のBATスクリプトを利用する設定にする場合
logon script = mount.bat
# %m マシンごとにスクリプトを用意する場合,%Uユーザごとにスクリプトを用意する場合
;   logon script = %m.bat
;   login script = %U.bat
# adminとhomeuserグループのユーザにWindowsのAdministratorsの権限を与える.
domain admin group = @admin @homeuser
add user script = /usr/sbin/adduser -n -g winpc -c WinPC -d /dev/null -s /bin/false %m$
client code page = 932
coding system = EUC
[homes]
comment = %S's Home Directories
writeable = Yes
browseable = No
[netlogon]
comment = Network Logon Service
path = /home/netlogon
guest ok = yes
writable = no
share modes = no
browseable = no
[public]
comment = Public Space for Everyone
path = /samba/public
writeable = Yes
force create mode = 0666
force directory mode = 0777
guest only = Yes
guest ok = Yes
4.アカウントの作成
アカウントはrootおよび使うユーザの数だけいります.
#touch /usr/local/samba/private/smbpasswd
#/usr/local/samba/bin/smbpasswd -a root
#/usr/local/samba/bin/smbpasswd -a user1
#/usr/local/samba/bin/smbpasswd -a user2
userがadminかhomeuserグループに属しているときはadministrator権限を持つuserとなります.
userにadministrator権限を持たせたくないときはhomeuserグループ以外のグループとします.
Win95,98,NTの場合は機械名の登録も必要らしい.我が家には最近これらのOSはないのでわかりません.
/usr/local/samba/bin/smbpasswd -m -a MachineName$
Win2kの場合,自動的に機械名がsmbpasswdに登録されます.
machine$:540:C967A9AB89CFF49DF484ED3B161:C967A9AB8484903EDED3B161:[W]:LCT-3FC212:
のように.
5.自動起動の設定
以下のファイルを作成します.
/etc/rc.d/init.d/smb
#!/bin/sh
# chkconfig: 345 91 35
# description: Starts and stops the Samba smbd and nmbd daemons ¥
#	       used to provide SMB network services.
# pidfile: /var/run/smbd.pid
# pidfile: /var/run/nmbd.pid
# config:  /usr/local/lib/smb.conf
. /etc/init.d/functions
. /etc/sysconfig/networ
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
# Check that smb.conf exists.
[ -f /usr/local/samba/lib/smb.conf ] || exit 0
smbd=/usr/local/samba/bin/smbd
nmbd=/usr/local/samba/bin/nmbd
# See how we were called.
case "$1" in
	start)
		echo -n "Starting SMB services: "
		daemon $smbd -D
		daemon $nmbd -D
		echo
		touch /var/lock/subsys/smb
		;;
	stop)
		echo -n "Shutting down SMB services: "
		killproc smbd
		killproc nmbd
		rm -f /var/lock/subsys/smb
		echo ""
		;;
	status)
		status smbd
		status nmbd
		;;
	restart)
		echo -n "Restarting SMB services: "
		$0 stop
		$0 start
		echo "done."
		;;
	*)
		echoo "Usage: smb {start|stop|restart|status}"
		exit 1
esac
パーミッションを700にする.
#cd /home/rc.d/init.d
#chmod 700 smb
自動起動にするにはntsysvで.

6.クライアントの設定.
Win2kの場合
クライアントからadministratorでログオンし,
「マイコンピュータ」右クリック「プロパティ」選択.
「ネットワークID」->「プロパティ」選択.
「ドメイン」を選択して,ドメイン名を入力(今回はHOMEUSER.smb.cnfでWORKGROUP=で指定したドメイン名).
するとユーザ名とパスワードの入力を求められる.ユーザ名にはroot,パスワードはsmbpasswdで作成した,rootパスワードを入力. 「ドメインへようこそ」という窓が出ればWindowsドメインへの参加に成功.再起動して,今度はuser1でログオンしてみる.これに成功すればOKです.

.Samba 2.2から3.0への移行
1.文字コードに関して
client code page = 932	->	dos charset = cp932
coding system = EUC	->	display charset = eucJP-ms
				unix charset = eucJP-ms
2.パスワードデータベースについて
passdb backend = tdbsam
従来通り
passdb backend = smbpasswd
としてsmbpasswdも使用できるがtdbsamに移行した方が賢明であろう.
smbpasswdからtdbdsamにデータを移行するには
# pdbedit -i smbpasswd:/etc/smbpasswd -e tdbsam:/etc/samba/passdb.tdb
ユーザの追加は
#adduser user
#pdbedit -a -u user
ユーザの削除
#pdbedit -x user
#userdel -r user
マシンの登録
#adduser machine$
#pdbedit -a -m -u machine	←「$」はいらない
ユーザ名一覧
#pdbedit -L
[global]に下記のように記述すると自動的にWindows機は登録される.
add machine script = /usr/sbin/adduser -n -g winpc -c WinPC -d /dev/null -s /bin/false %m$
*homeuser -- administrator権限を与えるグループ
*winpc -- add machine scriptで使うWinクライアント機のためのグループ.administrator権限を与えない.

3.グループの管理について
従来の
domain admin group = @homeuser
は使用できなくなった.下記のようにグループを対応付けてやらないとスタートアップファイルや自動起動ソフトなどを読み込んでくれないなどおかしなことになる.
Sambaサーバ上のルートで
# net groupmap modify NTgroup='Domain Admins' UNIXgroup=homeuser
# net groupmap list
System Operators (S-1-5-32-549) -> -1
Replicators (S-1-5-32-552) -> -1
Guests (S-1-5-32-546) -> -1
Power Users (S-1-5-32-547) -> -1
Domain Users (S-1-5-21-262039259-3100283672-1626073523-513) -> -1
Domain Admins (S-1-5-21-262039259-3100283672-1626073523-512) -> homeuser
Domain Guests (S-1-5-21-262039259-3100283672-1626073523-514) -> -1
Print Operators (S-1-5-32-550) -> -1
Administrators (S-1-5-32-544) -> -1
Account Operators (S-1-5-32-548) -> -1
Backup Operators (S-1-5-32-551) -> -1
Users (S-1-5-32-545) -> -1
Domain Admins,Domain Users,Domain Guestsは最初から定義されているのでnet groupmap modifyコマンドで適切なUNIXグループを対応付ける.上記はhomeuserグループをDomain Adminsグループに対応付けた例である.この結果homeuserグループはadministratorと同じ権限を得る.

4.smb.conf 赤字はPDCに関する部分
[global]
	unix charset = eucJP-ms
	dos charset = cp932
	display charset = eucJP-ms

	workgroup = TINYGROUP
	security = user
	passdb backend = tdbsam
	os level = 65
	domain master = Yes
	preferred master = Yes
	domain logons = Yes
	logon script = mount.bat
	# domain admin group = @homeuser
	add machine script = /usr/sbin/adduser -n -g winpc -c WinPC -d /dev/null -s /bin/false %m$

	server string = Samba %v on %h
	hosts allow = 192.168.1. 127.
	log file = /var/log/samba/%m.log
	max log size = 50
	encrypt passwords = Yes
	username map = /etc/samba/smbusers
	unix password sync = Yes
	passwd program = /usr/bin/passwd %u
	passwd chat = *New*password* %n\n *ReType*new*password* %n\n *passwd:*all*authentication*tokens*updated*successfully*
	socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192

;	logon script = %m.bat
;	logon script = %U.bat
;	logon path = \\%L\Profiles\%U
	name resolve order = wins lmhosts bcast
;	wins support = Yes
;	wins server = w.x.y.z
;	wins proxy = Yes
	dns proxy = No
;	preserve case = No
;	short preserve case = No
;	default case = lower
;	case sensitive = No
	wins support = no
[homes]
	comment = %U's Home Directory
	writeable = Yes
	browseable = Yes

[public]
	comment = Public Space for Everyone
	path = /samba/public
;	public = Yes
;	read only = Yes
	writeable = Yes
	force create mode = 0666
	force directory mode =0777
	guest only = Yes
	guest ok = Yes
	# allow people in the "staff" group to write
;	write list = @staff

[netlogon]
	comment = Network Logon Service
	path = /home/netlogon
	guest ok = Yes
	writable = No
	share modes = No
	browseable = no

Copyright 2002-2003 Kai All Rights Reserved & This site is Link Free 戻る