玄箱X4/サーバー設定/samba
出典: Fukudat.com
目次 |
1 インストール
apt でゲット!
apt-get install samba samba-common swat
- samba
- sambaサーバー
- samba-common
- sambaサーバー・sambaクライアントの共通部分
- swat
- sambaサーバー設定ツール
2 設定
- swat をイネーブルする
- /etc/inetd.conf を編集して,コメントアウトされている次の行のコメントをはずす.
swat stream tcp nowait.400 root /usr/sbin/tcpd /usr/sbin/swat
- inetd に INIT signal を送る.inetd の process id は /var/run/inetd.pid にある.(ps auxw | grep inetd で調べても良い)
kill -1 `cat /var/run/inetd.pid`
- swat を使って samba を設定する
- ブラウザで http://localhost:901/ を開く.ただし,user = root, password = rootのパスワード
- Globals を選択.
- dos charset = CP932
- unix charset = CP932
- workgroup = FUKUDAT
- netbios name = サーバー名
- hosts allow = 192.168.0.0/255.255.255.0
- Share を選択して,共有フォルダを作成する
- read only = No
3 LDAP対応
smbldap-tools を使ってみる.
apt-get でゲット!
apt-get install smbldap-tools samba-doc
/usr/share/doc/smbldap-tools/README.Debian.gz に従って設定を行う.
3.1 LDAP Server の設定
まずは samba.schema を作成する.
$ zcat /usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz > /etc/ldap/schema/samba.schema
/etc/ldap/slapd.conf に次の行を追加する.
include /etc/ldap/schema/samba.schema
また,access to attrs=userPassword の行を以下のように編集する.
access to attrs=userPassword,sambaNTPassword,sambaLMPassword
ついでに,以下の行も slapd.conf に追加したほうが良いらしい.
index uid,uidNumber,gidNumber,memberUid eq index cn,mail,surname,givenname eq,subinitial index sambaSID eq index sambaPrimaryGroupSID eq index sambaDomainName eq
slapd を再起動.
$ /etc/init.d/slapd restart
3.2 Samba Server の設定
/etc/samba/smb.conf を編集して passdb backend の行を以下のように書き換える.
passdb backend = ldapsam:ldap://127.0.0.1/
127.0.0.1 はLDAPサーバーがlocalhostの場合.別のホストで動いているなら,そのアドレスに直す.
smb.conf に次の directive を追加する.
obey pam restrictions = no ldap admin dn = cn=admin,dc=fukudat,dc=com ldap suffix = dc=fukudat,dc=com ldap group suffix = ou=Group ldap user suffix = ou=People ldap machine suffix = ou=Hosts ldap idmap suffix = ou=People ldap passwd sync = Yes passwd program = /usr/sbin/smbldap-passwd %u passwd chat = *New*password* %n\n *Retype*new*password* %n\n *all*authentication*tokens*updated* add user script = /usr/sbin/smbldap-useradd -m "%u" ldap delete dn = Yes delete user script = /usr/sbin/smbldap-userdel "%u" add machine script = /usr/sbin/smbldap-useradd -w "%u" add group script = /usr/sbin/smbldap-groupadd -p "%g" delete group script = /usr/sbin/smbldap-groupdel "%g" add user to group script = /usr/sbin/smbldap-groupmod -m "%u" "%g" delete user from group script = /usr/sbin/smbldap-groupmod -x "%u" "%g" set primary group script = /usr/sbin/smbldap-usermod -g "%g" "%u"
samba を再起動して,LDAP admin のパスワードを設定する.
$ /etc/init.d/samba restart $ smbpasswd -w xxxx
xxxx は LDAP admin のパスワード.
3.3 smbldap-tools の設定
smbldap.conf, smbldap_bind.conf を作る.
$ zcat /usr/share/doc/smbldap-tools/examples/smbldap.conf.gz > /etc/smbldap-tools/smbldap.conf $ cp /usr/share/doc/smbldap-tools/examples/smbldap_bind.conf /etc/smbldap-tools/smbldap_bind.conf
/etc/smbldap-tools/smbldap.conf を編集して SID を記入する.
SID="S-1-5-21-1234567890-1234567890-1234567890"
SID は net getlocalsid コマンドで入手できる.
/etc/smbldap-tools/smbldap_bind.conf を編集して,SMBLDAP 管理者の DN と パスワード記入する.
パスワードが平文で記述すあれるため,アクセス権の設定を忘れずに.
$ chmod 0644 /etc/smbldap-tools/smbldap.conf $ chmod 0600 /etc/smbldap-tools/smbldap_bind.conf
/usr/share/doc/smbldap-tools/README.Debian.gz にはここまでしか書いていないけれど,/etc/smbldap-tools/smbldap.conf の以下の行を編集する必要がある.
# LDAPの構成
suffix="dc=fukudat,dc=com" # LDAP の suffix
usersdn="ou=People,${suffix}" # ユーザ
computersdn="ou=Computers,${suffix}" # コンピュータ
groupsdn="ou=Group,${suffix}" # グループ
idmapdn="ou=Idmap,${suffix}" # たぶん不要
# SAMBAの構成
userSmbHome="\\nas01\homes\%U"
userProfile="\\nas01\profiles\%U"
userHomeDrive="Z:"
userScript="%U.cmd"
mailDomain="fukudat.com"
次のコマンドでLDAPデータベースに必要なエントリーを作成する.
$ smbldap-populate
3.4 ユーザの登録
smbldap-tools を使って Unix ユーザ&グループを samba ユーザ&グループとして登録する. ただし,Unixユーザ&グループはすでにLDAPに登録済みであるとする(未登録の場合は slapd#データベースの作成 を参照して登録する).
$ smbldap-usermod -a <ユーザー名> $ smbldap-groupmod -a <グループ名>
3.5 ユーザのパスワード変更
ログインできるユーザなら,passwd コマンドあるいは Windows のパスワードの変更でパスワード変更できる.後で使用する domainadd など,ログインしないユーザのパスワード変更は,smbldap-passwd コマンドを使用する.
$ smbldap-passwd <ユーザ名>
4 ドメインコントローラー化
ここまでできたら,玄箱を Windows Domain Controller にするのは簡単.
swat を使うか /etc/samba/smb.conf を直接編集して,以下のように設定する.
| パラメータ | PDC | SDC | ドメインメンバ |
|---|---|---|---|
| workgroup | FUKUDAT | FUKUDAT | FUKUDAT |
| domain logon | yes | yes | no |
| domain master | yes | no | no |
| os level | 64 | 32 | 20 |
| preferred master | yes | yes | no |
| local master | yes | yes | yes |
| security | user | user | user |
smbd が動いていたら再起動しておく.
ドメイン登録用のアカウントを作成する.ここでは domainadd をアカウント名とする.
$ smbldap-useradd -a -d /dev/null -s /bin/false domainadd –g Administrators $ smbldap-usermod -u 0 domainadd $ smbldap-passwd domainadd
これで完成.
4.1 Windows XP をドメイン参加させる方法
サーバー側で,ドメイン参加させるコンピュータ名を登録しておく.
$ smbldap-useradd -w Windowsマシン名
Windowsマシン名は英小文字と数字のみからなる15文字以下にしておく.
クライアント側では,XP以降ではセキュリティーポリシーを変更しておく必要がある.(Windows2000ではこのステップは不要)
- 「コントロールパネル」 → 「管理ツール」 → 「ローカルセキュリティポリシー」を起動.
- 「ローカルポリシー」 → 「セキュリティオプション」 を選択.
- 「ドメインメンバ:常にセキュリティチャネルのデータをデジタル的に暗号化または署名する」を「無効」にする.
いよいよドメインに参加する.
- コンピュータのプロパティから 「コンピュータ名」 のタブ → 「ネットワークID」 ボタンを押して 「ネットワークIDウィザード」を起動.
- 「次へ」 → 「コンピュータの使用目的」 → 「このコンピュータはビジネスネットワークの一部です...」 → 「次へ」 →
- 「使用するネットワークの種類」 → 「ドメインを使用している」 → 「次へ」 → 「次へ」→
- ユーザアカウントとドメイン情報を求められるので,LDAPに登録してあるユーザ名,パスワードを入力し,ドメインには smb.conf に書いた workgroup名 (これまでの例では FUKUDAT) を記入して,「次へ」
- コンピュータのドメインを求められるので,「コンピュータ名」に先ほどサーバーに登録した Windowsマシン名,「コンピュータのドメイン」にさっき書いた workgroup名(この例では FUKUDAT)を記入して,「次へ」
- すると「ドメインのユーザ名とパスワード」のダイアログボックスが出てくるので,「ユーザ名」に domainadd, 「パスワード」に登録したパスワード,「ドメイン名」にさっき書いた workgroup名(この例ではFUKUDAT)を記入して OK をクリック.
以上で設定完了.Windowsを再起動するとドメインできるようになる.
4.2 Windows 7 をドメインに参加させる方法
Samba Wikiに従って,以下のポイントに沿って準備したら,XPと同じ.
- Sambaサーバーのバージョンをチェックして,
- Samba 3.4 or later
- Samba 3.3.5 or later
- Samba 3.3.2, 3.3.3 and 3.3.4 (with NOTES)
- Samba 3.2.12 or later
- のいずれかであることを確認する.これより古いバージョンだと,ドメインに参加できるようになったとしても,ドメインユーザでログインできない.
- 玄箱のDebianの場合,sarge, etch, lennyだと古いsambaなので,玄箱X4/squeezeへアップグレードを参照してsqueezeに上げる.
- 次のようにレジストリを変更する.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters
DWORD DomainCompatibilityMode = 1
DWORD DNSNameResolutionRequired = 0
- これ以外のレジストリは変更してはいけない.
- もし(他の情報源の指示に従って)レジストリを変えていたら,下のように戻しておく.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters
DWORD RequireSignOrSeal = 1
DWORD RequireStrongKey = 1
4.3 Linuxクライアントマシンの設定
Linuxマシンのユーザ管理をldapにするのは簡単.Fedora Core の場合はnss_ldap,Ubuntuの場合はUbuntu Server/ldap-auth-clientを参照.
Linuxクライアントマシンが sambaリソースを公開する場合,SWATを用いて smbd.conf の設定を
[global] security = SERVER password server = 192.168.0.11 # LDAP server のアドレス passdb backend = ldapsam:ldap://nas01.fukudat.com/ # LDAP URL ldap admin dn = cn=admin,dc=fukudat,dc=com ldap group suffix = ou=Group ldap idmap suffix = ou=People ldap machine suffix = ou=Computers ldap passwd sync = Yes ldap suffix = dc=fukudat,dc=com ldap ssl = no ldap user suffix = ou=People
とし,cn=admin,dn=fukudat,dn=com のパスワードを
# smbpasswd -W
で登録すればよい.
