Solaris10:Samba設定

提供:KinusatiWiki
移動: 案内, 検索

このページの情報は古いです。以下のページに移行しました。


目次

samba インストール

Windows Client(Vista/2008/XP)からのファイル共有に利用するため、sambaをインストールする。 sambaはActive Directory連携させる。

ソフトウェアインストール

必要パッケージ

BerkeleyDB
OpenLDAP に必要。
openldap
Active Directory連携のために必要。
MIT
Active Directory連携に必要。Kerberos認証に利用する
libiconv
日本語ファイル取り扱いに必要。併せてパッチも適用することでeucjp-msを利用可となる

BerkeleyDB

以下手順で導入

# gtar xvzfp db-4.7.25.tar.tar
# cd db-4.7.25/build_unix
# LDFLAGS="-R/usr/local/BerkeleyDB.4.7 -L/usr/local/BerkeleyDB.4.7" ../dist/configure --enable-compat185
# gmake
# gmake install

openldap

以下手順で導入

# wget ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/openldap-2.4.13.tgz
# gtar xvzfp openldap-2.4.13.tgz
# cd openldap-2.4.13
# CPPFLAGS="-I/usr/local/BerkeleyDB.4.7/include" LDFLAGS="-L/usr/local/BerkeleyDB.4.7/lib -R/usr/local/BerkeleyDB.4.7/lib" ./configure
# gmake depend
# gmake
# gmake install

MIT

以下手順で導入

# wget http://web.mit.edu/kerberos/dist/krb5/1.6/krb5-1.6.3-signed.tar
# gtar xvfp krb5-1.6.3-signed.tar
# gtar xvzfp krb5-1.6.3.tar.gz
# cd krb5-1.6.3/src
# ./configure --prefix=/usr/local
# gmake 
# gmake install

libiconv

以下手順で導入

# wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.12.tar.gz
# wget http://www2d.biglobe.ne.jp/~msyk/software/libiconv/libiconv-1.12-ja-4.patch.gz
# gtar xvzfp libiconv-1.12.tar.gz
# cd libiconv-1.12
# gzip -dc ../libiconv-1.12-ja-4.patch.gz | gpatch -p1
# ./configure
# gmake ; gmake check
# gmake install

samba

以下手順で導入。Active Directoryサポートのため--with-adsを追加。

# wget http://us1.samba.org/samba/ftp/stable/samba-3.2.5.tar.gz
# gtar xvzfp samba-3.2.5.tar.gz
# cd samba-3.2.5/source
# CPPFLAGS="-I/usr/local/include" \
LDFLAGS="-R/usr/local/lib -L/usr/local/lib" \
./configure \
--prefix=/usr/local \
--with-piddir=/var/run \
--with-logfilebase=/var/log/samba \
--with-privatedir=/usr/local/etc/samba/private \
--with-configdir=/usr/local/etc/samba \
--with-krb5=/usr/local \
--with-libiconv=/usr/local \
--with-ads
# gmake
# gmake install

Solaris10ではSambaパッケージの不具合でインストールが完了しても以下のエラーメッセージが出力される

bash-3.00# /usr/local/bin/pdbedit -L
ld.so.1: pdbedit: fatal: libtalloc.so: open failed: No such file or directory
Killed

以下のコマンドで修正する

# cd /usr/local/lib
# ln -s libtalloc.so.1 libtalloc.so
# ln -s libtdb.so.1 libtdb.so
# ln -s libwbclient.so.0 libwbclient.so

設定

必要な設定項目は以下

ディスクマウント 
ファイルサーバに利用するディスクをマウントする
samba設定 
sambaの設定を行う
Active Directoryへの参加 
Active Directoryに対して、sambaサーバを参加させる

samba設定(Active Directory連携)

smb.confの設定

/usr/local/etc/smb.confを以下の通り設定する。

[global]
   unix charset = EUCJP-MS
   dos charset = CP932
   display charset = CP932
   workgroup = AD
   realm = AD.FOO.BAR.COM
   server string = SAMBA1
   hosts allow = 192.168. 127.
   passdb backend = smbpasswd
   log file = /var/log/samba/smbd.log
   max log size = 50
   security = ADS
   socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
#============================ Share Definitions ==============================
[backup]
   path = /mnt/backup
   writable = yes
   printable = no

ログディレクトリの作成

ログディレクトリは手動で作成する。

# mkdir /var/log/samba

Active Directoryへの参加

Kerberos認証設定

/usr/local/etc/krb5.confファイルに以下を定義する。 注意 : 大文字・小文字ドメインの区別があります!!

[realms]
        <大文字ドメイン名> = {
                kdc = <ADサーバのホスト名。小文字>
        }

[domain_realm]
        .<小文字ドメイン名> = <大文字ドメイン名>
        <小文字ドメイン名>  = <大文字ドメイン名>

設定例)

[realms]
        AD.FOO.BAR.COM = {
                kdc = server1.ad.foo.bar.com
        }

[domain_realm]
        .ad.foo.bar.com = AD.FOO.BAR.COM
        ad.foo.bar.com  = AD.FOO.BAR.COM


DNSサーバをActive Directoryに対して設定する。/etc/resolv.confは以下の通り。

search <ADドメイン名>
nameserver <AD1のIP>
nameserver <AD2のIP>

設定例)

search ad.foo.bar.com
nameserver 192.168.0.1
nameserver 192.168.0.2

kinitコマンドを利用してKerberos認証する。

# /usr/local/bin/kinit administrator@<大文字ドメイン名>

コマンド実行例)

# /usr/local/bin/kinit administrator@AD.FOO.BAR.COM
=> 認証に成功した場合は何も表示されない。

klistコマンドを利用し、Kerberosチケット情報を取得する。

  1. /usr/local/bin/klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: administrator@AD.FOO.BAR.COM

Valid starting     Expires            Service principal
05/04/08 19:00:18  05/05/08 05:00:24  krbtgt/AD.FOO.BAR.COM@AD.FOO.BAR.COM
        renew until 05/05/08 19:00:18
05/04/08 19:00:39  05/05/08 05:00:24  ldap/server1.ad.foo.bar.com@AD.FOO.BAR.COM
        renew until 05/05/08 19:00:18

コンピュータアカウントの登録

net ads joinを利用して、コンピュータアカウントを登録する。

# /usr/local/bin/net ads join -U Administrator

Windows Server 2008に対しての登録が失敗する人は・・・

samba-3.0.28aではWindows Server 2008に対しての登録が失敗する。 samba-3.2.0pre3だとばっちり登録できるため、samba-3.0.28aでのWindows Server 2008対応は不十分だと思われる。

Windows Server 2008 とsamba-3.0.28a利用時の登録失敗)
bash-3.00# /usr/local/bin/net ads join -U Administrator
Administrator's password:
Using short domain name -- AD
[2008/05/05 22:09:49, 0] utils/net_rpc_join.c:net_rpc_join_ok(70)
  net_rpc_join_ok: failed to get schannel session key from server server1.foo.bar.com for domain AD. Error was NT_STATUS_ACCESS_DENIED
Failed to verify membership in domain!
Failed to join domain: Success

=> samba3.2系の記事に修正したため上記を取り消した。

自動起動設定

Solaris10に準備されているsambaの情報を書き換えることで対応する。

# svccfg
svc:> select samba
svc:/network/smtp:postfix> editprop

EDITOR環境変数で指定したエディタ画面で以下の通り編集する

==================================================
# Property group "start"
# delprop start
# addpg start method
setprop start/exec = astring: ("/usr/local/sbin/smbd -D")
# setprop start/timeout_seconds = count: (170)
# setprop start/type = astring: (method)

# Property group "stop"
# delprop stop
# addpg stop method
setprop stop/exec = astring: ("/usr/bin/kill `cat /var/run/smbd.pid`")
# setprop stop/timeout_seconds = count: (60)
# setprop stop/type = astring: (method)

# Property group "tm_common_name"
# delprop tm_common_name
# addpg tm_common_name template
# setprop tm_common_name/C = ustring: ("SMB file server")

# Property group "tm_man_smbd"
# delprop tm_man_smbd
# addpg tm_man_smbd template
setprop tm_man_smbd/manpath = astring: ("/usr/local/man")
# setprop tm_man_smbd/section = astring: (1m)
# setprop tm_man_smbd/title = astring: (smbd)

# Property group "tm_man_smb_conf"
# delprop tm_man_smb_conf
# addpg tm_man_smb_conf template
setprop tm_man_smb_conf/manpath = astring: ("/usr/local/man")
# setprop tm_man_smb_conf/section = astring: (4)
# setprop tm_man_smb_conf/title = astring: (smb.conf)

設定を読み込ませて確認する

# svcadm refresh samba
# svcprop samba

サービスを起動させる

# svcadm enable samba
# svcs -p samba
STATE          STIME    FMRI
online         10:13:22 svc:/network/samba:default
               10:13:22     2843 smbd
               10:13:23     2844 smbd

参考)samba設定(スタンドアロンの場合)

smb.confの設定

/usr/local/etc/smb.confを以下の通り設定する。

[global]
   unix charset = EUCJP-MS
   dos charset = CP932
   display charset = CP932
   workgroup = WORKGROUP
   server string = SAMBA1
   hosts allow = 192.168. 127.
   passdb backend = tdbsam
   log file = /var/log/samba/smbd.log
   max log size = 50
   security = ADS
   socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
#============================ Share Definitions ==============================
[backup]
   path = /mnt/backup
   writable = yes
   printable = no

アカウント登録

samba利用には、sambaアカウントおよびUNIXアカウント両方が必要であるため、以下の手順で登録する。

UNIXアカウントを登録する。

# useradd hoge -d /home/hoge -s /dev/null hoge

sambaに対してアカウントを登録する。

# pdbedit -a hoge
new password:        <= パスワード入力
retype new password: <= 再度パスワード入力
Unix username:        hoge
NT username:
Account Flags:        [U          ]
User SID:             S-1-5-21-1111111111-1111111111-111111111-501
Primary Group SID:    S-1-5-21-1111111111-1111111111-111111111-513
Full Name:            NFS Anonymous Access User
Home Directory:       \\samba1\nobody
HomeDir Drive:
Logon Script:
Profile Path:         \\samba1\nobody\profile
Domain:               SAMBA1
Account desc:
Workstations:
Munged dial:
Logon time:           0
Logoff time:          never
Kickoff time:         never
Password last set:    Sun, 11 May 2008 19:05:49 JST
Password can change:  Sun, 11 May 2008 19:05:49 JST
Password must change: never
Last bad password   : 0
Bad password count  : 0
Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
個人用ツール