玄箱/samba

出典: Fukudat

目次

インストール

apt でゲット!

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

設定

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

LDAP対応

smbldap-tools を使ってみる.

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

Linuxクライアントマシンの設定

Linuxマシンのユーザ管理をこのldapのは簡単.Fedora Core の場合はnss_ldapを参照.

Linuxクライアントマシンが sambaリソースを公開する場合,SWATを用いて smbd.conf の設定を

security = SERVER
password server = 192.168.0.11 # LDAP server のアドレス

とすればよい.