パンダのメモ帳

技術系のネタをゆるゆると

CentOS 5.4でファイル共有サーバー(Samba)の構築

CentOS 5.4にSambaを導入し、サーバーとWindowsクライアント間でのファイル共有を実現する。

1. 要件と仮定

今回の要件は以下の通り。

  • ユーザーが自分のホームディレクトリへSambaからアクセスできる様にする。
  • ユーザー認証にはLDAPを使用する(LDAP環境の構築についてはこちら)。
  • LDAPを使用する場合、ホームディレクトリが存在しない場合がある。その場合、自動でホームディレクトリを作成する。
  • 今回のネットワークは小規模なため、ワークグループで運用する。
  • ゴミ箱機能を有効にする。
  • プリンタの共有は行わない。

便宜上、設定等について下記の通り仮定する。

  • ワークグループ名は "WORKGROUP" とする。
  • Net BIOS名(マイネットワーク等で表示される名前)は "HOGE" とする。
  • 利用するLDAPサーバーは同ホスト上(127.0.0.1)にあるものとする。
  • 共有範囲はローカルのみとし、ローカルネットワークは "192.168.78.0/24" とする。
  • LDAPのベースDNは "dc=example,dc=jp" とする。
  • LDAPの管理用DN(rootdn)は "cn=Manager,dc=example,dc=jp" とする。
  • LDAPの管理用パスワード(rootpw)は "hogehoge" とする。

2. インストール

今回もyumからインストールする。

[root@localhost ~]# yum -y install samba

2009年12月15現在、yumでインストールした場合のバージョンは 3.0.33-3.15 だった。以降の手順の確認は本バージョンで行っており、以前・以降のバージョンでは異なる場合があるので注意してほしい。

3. Sambaの設定

Sambaの設定ファイル(/etc/samba/smb.conf)を編集する。各項目については日本Sambaユーザ会による翻訳が読みやすい。以下に、Sambaをワークグループのドメインマスターブラウザとして機能させる場合の設定例を示す。

[root@localhost ~]# vim /etc/samba/smb.conf
[global]
#
# network settings
#
workgroup             = WORKGROUP
netbios name          = HOGE
server string         = Hoge, File Sharing Server
interfaces            = 192.168.78.0/24
hosts allow           = 192.168.78.0/24
bind interfaces only  = yes
domain master         = yes
local master          = yes
prefered master       = yes
wins support          = yes
remote announce       = 192.168.78.255
remote browse sync    = 192.168.78.255
os level              = 128
time server           = no
lm announce           = no
min protocol          = COREPLUS
socket options        = TCP_NODELAY IPTOS_LOWDELAY
name resolve order    = wins lmhosts host bcast
#
# auth settings
#
security              = user
map to guest          = Never
root directory        = /
client ntlmv2 auth    = yes
client lanman auth    = no
client plaintext auth = no
passdb backend        = ldapsam:ldap://127.0.0.1/
username map          = /etc/samba/smbusers
obey pam restrictions = yes
#
# log settings
#
syslog                = 1
syslog only           = yes
#
# charset settings
#
dos charset           = cp932
unix charset          = utf-8
display charset       = utf-8
#
# LDAP settings
#
ldap ssl              = off
ldap suffix           = dc=example,dc=jp
ldap user suffix      = ou=People
ldap group suffix     = ou=Group
ldap idmap suffix     = ou=Idmap
ldap machine suffix   = ou=Machine
ldap admin dn         = cn=Manager,dc=example,dc=jp
ldap passwd sync      = yes
#
# filesystem settings
#
create mask           = 0644
force create mode     = 0444
force security mode   = 0400
force directory mode  = 0755
hide special files    = yes
hide unreadable       = yes
delete veto files     = yes
map archive           = no
mangled names         = no
dos filemode          = no
#
# printer settings
#
load printers         = no

#
# Home Directories
#
[homes]
comment               = %U's Home Directory
writeable             = yes
browseable            = no
invalid users         = root nobody
vfs objects           = recycle
recycle:repository    = .recycle
recycle:keeptree      = yes
recycle:versions      = yes
recycle:touch         = no
recycle:maxsize       = 0
recycle:exclude       = *.tmp ~$*

同一ネットワーク上にドメインマスターブラウザが存在する場合はドメインマスターブラウザとしてはいけない。ドメインマスターブラウザとしない場合は上記からいくつかの設定を変更する。

  • domain master = yes ← no に変更
  • wins support = yes ← no に変更
  • remote announce = 192.168.78.255 ← 削除、またはコメントアウト
  • remote browse sync = 192.168.78.255 ← 削除、またはコメントアウト
  • os level = 128 ← 64 に変更
  • wins server = WINSサーバーのアドレス ←追加する

また、Sambaの設定についてはSWATというGUIツールが存在する。そういったツールを使って管理するのもいいかもしれない。
設定が完了したら、LDAPの管理用パスワードをSambaに登録する。

[root@localhost ~]# smbpasswd -W
Setting stored password for "cn=Manager,dc=example,dc=jp" in secrets.tdb
New SMB password: (LDAPの管理用パスワードを入力)
Retype new SMB password: (LDAPの管理用パスワードをもう一度入力)

ここまで設定したらSambaサービスを起動し、次回から自動で起動するように設定する。

[root@localhost ~]# service smb start
[root@localhost ~]# chkconfig smb on
[root@localhost ~]# chkconfig --list smb
smb             0:off   1:off   2:on    3:on    4:on    5:on    6:off

4. smbldap-toolsによる初期設定

LDAPとSambaの連携を初めて行う場合は続けてsmbldap-toolsを導入し、初期設定を行う必要がある。すでに他のホストで行っている場合は必要ないので、別記事にまとめた。