玄箱X4/サーバー設定/samba

提供: fukudat
移動: 案内検索

ファイルサーバー.

目次

Install

# apt-get install samba samba-common swat
samba
sambaサーバー
samba-common
sambaサーバー・sambaクライアントの共通部分
swat
sambaサーバー設定ツール

Configure

swat をイネーブルする
  • /etc/inetd.conf を編集して,コメントアウトされている次の行のコメントをはずす.
swat stream tcp nowait.400 root /usr/sbin/tcpd /usr/sbin/swat

inetd or xinetd をリロードする.

# kill -1 `cat /var/run/inetd.pid` または kill -1 `cat /var/run/xinetd.pid`

swat を使って samba を設定する

  • ブラウザで http://localhost:901/ を開く.ただし,user = root, password = rootのパスワード
  • Globals を選択.
    • dos charset = CP932
    • unix charset = UTF8
    • workgroup = FUKUDAT
    • netbios name = サーバー名
    • hosts allow = 192.168.0.0/255.255.255.0
  • Share を選択して,共有フォルダを作成する
  • read only = No

LDAP対応

smbldap-tools を使ってみる.

Install

apt-get でゲット!

# apt-get install smbldap-tools samba-doc

/usr/share/doc/smbldap-tools/README.Debian.gz に従って設定を行う.

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

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 のパスワード.

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

ユーザの登録

smbldap-tools を使って Unix ユーザ&グループを samba ユーザ&グループとして登録する.ただし,Unixユーザ&グループはすでにLDAPに登録済みであるとする(未登録の場合は slapd#データベースの作成 を参照して登録する).

$ smbldap-usermod -a <ユーザー名>
$ smbldap-groupmod -a <グループ名>

ユーザのパスワード変更

ログインできるユーザなら,passwd コマンドあるいは Windows のパスワードの変更でパスワード変更できる.後で使用する domainadd など,ログインしないユーザのパスワード変更は,smbldap-passwd コマンドを使用する.

$ smbldap-passwd <ユーザ名>

ドメインコントローラー化

ここまでできたら,玄箱を 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

これで完成.

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を再起動するとドメインできるようになる.

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

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

で登録すればよい.

参考文献

個人用ツール
名前空間

変種
操作
案内
ツールボックス