xserver
Home クッキー及びWeb ビーコンについて



Samba3.0のインストールと初期設定

Samba3.0 の概要

 ここでは、LinuxやBSDなどを中心としたUNIX系OSにおいて Windows NT/2000互換のファイルサーバ/プリント・サーバ機能を提供するSamba について解説していきます。Samba はバージョンがあがるたびに機能が拡張されており、現在の代表的な機能としては、ファイルサーバー機能、プリントサーバー機能、WINSサーバー機能、PDC機能(プライマリドメインコントローラ)、DFS機能(マイクロソフトの分散ファイルシステム)、ブラウザからSambaを簡単に管理できるSWAT 機能などがあります。Samba3.0 以降からはKerberos認証のサポートしたことにより、Windows 2000のActive Directoryへの参加も可能となっています。なお、当ページではそのSamba の最も一般的な機能であるファイルサーバーに絞って解説していきます。




■samba3.0のダウンロード

Version samba-3.0.1
Homepage http://www.samba.org/
http://www.samba.gr.jp/ (日本Sambaユーザ会)
Download ftp://ftp.ring.gr.jp/pub/net/samba/
Install samba-3.0.1.tar.gz





■Samba のインストール

$ cd /usr/local/src/
$ tar xzvf samba-3.0.1.tar.gz
$ cd samba-3.0.1/source

 configureオプションには、デフォルトでno とされているいくつかのオプションを追加してみました。configure --help で何がデフォルトで有効か無効かがわかりやすいので一度は見てみることをお勧めします。詳細に関しては以下表を参照してください。コンパイルは結構時間がかかるので珈琲タイム♪

$ ./configure --with-smbwrapper \
                         --with-pam \
                         --with-syslog \
                         --with-quotas \
                         --with-winbind \
                         --with-acl-support \
                         --with-profiling-data \
                         --with-smbwrapper \
                         --with-automount \
                         --with-smbmount \
                         --with-utmp

$ make
# make install

◎オプション
 --with-pam PAM認証を有効のサポート
 --with-syslog syslog への出力をサポート
 --with-quotas Quata 機能(容量制限)をサポート
 --with-winbind Windows NTドメインユーザーとUNIXユーザーの統一ログインを可能にする
 --with-acl-support ACL機能をサポート
 --with-profiling-data 性能に関する情報の収集
 --with-smbwrapper smbsh機能を有効にする
 --with-automount automountをサポート
 --with-smbmount smbfs機能をサポートするコマンドを作成
 --with-utmp utmpによるユーザーのアクセス記録の収集をサポート



■smb.confの編集

 Samba の設定ファイルはデフォルトではインストールされませんので、サンプルファイルからコピーして利用するか、自分で設定ファイルを作成してください。サンプルファイルは、ソースディレクトリ内の、examples ディレクトリ、もしくは、packaging ディレクトリにいくつか用意されています。ここでは、RedHat用のサンプルファイルを参考に、必要最低限な設定箇所を以下に解説していきます。

# cp /usr/local/src/samba-3.0.1/packaging/RedHat/smb.conf /usr/local/samba/lib/smb.conf
# ln -s /usr/local/samba/lib/smb.conf /etc/smb.conf

 samba3.0からの注意点としては、日本語の扱いが従来までのSamba の設定とは変更された点です。以下が従来までの記述の仕方です。

coding system = euc
client code page = 932

 Samba3.0からはパラメータが変更され、上記のような記述ではなく、以下のようにおきかわりました。

unix charset = EUC-JP
dos charset = CP932
display charset = EUC_JP

 unix charset UNIX側での文字コードの設定
 dos charset Windows側での文字コードの設定。日本語を利用する場合は、CP932になります。
 display charset swat で表示される文字コードの指定

■GLOBAL設定(Samba全体の設定)

[global]
unix charset = EUC-JP
dos charset = CP932
display charset = CP932

workgroup = kororo.jp  //Windowsのドメインを指定
server string = Samba Server //コンピュータ名に表示されるコメント
hosts allow = 172.16.50. 172.16.51. 127. //許可するネットワーク
log file = /var/log/samba/log.%m
max log size = 50 //ログファイルの最大サイズ
security = user //認証方法
encrypt password = yes  //パスワードを暗号化して送信
smb passwd file = /etc/samba/smbpasswd //パスワードファイルの場所
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
dns proxy = no
netbios name = linux //Windows 上で表示されるコンピュータ名

# log level = 3 //0の場合は何もメッセージを残さない
# winbind use default domain = yes
# utmp = Yes
# dos filetimes = yes // ファイルのタイムスタンプの変更を許可



■PUBLIC設定(共有ディレクトリ)

 [public] がWindows 上で表示される共有フォルダの名前になります。comment は共有ディレクトリに関するコメントを記述します。path は、共有ディレクトリの絶対パスを記述しておきます。public = yes は、共有ディレクトリにするならば、必ず、「yes 」としておきましょう。「yes 」にしておくとディレクトリにアクセスする際に、パスワードを聞かれなくなります。

[public]
comment = Public Stuff
path = /home/samba
browseable = yes
public = yes //「yes」の場合はパスワードが不要、「no」はパスワード必要
create mode = 664
directory mode = 775

 また、ディレクトリ自体のパーミッションも変更しておきます。

# chmod 777 /home/samba



■HOME設定(個人用ディレクトリ)

 homes セクションではユーザーごとのホームディレクトリをWindows 上で共有できるようにします。当然、ホームディレクトリの所有者以外、アクセスすることはできません。

[homes]
comment = Home Directories
browseable = no //「yes」にすると「homes」ディレクトリが見えてしまう
writable = yes
create mode = 644
directory mode = 755

■smb.conf のテスト確認


 smb.conf を編集した際には、構文間違いがないかを testparm で確認しておきます。testparm は、smb.conf に未知のパラメータがないかを検査してくれるコマンドです。エラーが表示されなければOKです。編集したら常にtestparm を実行するようにしてください。

# /usr/local/samba/bin/testparm /etc/samba/smb.conf

■/etc/samba/smbpasswd ファイルの作成

 sambaのパスワードの暗号化形式は、Linuxログイン時に使用するshadow パスワードとは異なるため、smbpasswd というファイルを作成しなくてはなりません。パスワードを作成するスクリプトとしてmksmbpasswd.sh が用意されているのでスクリプトに実行権を与えた後、以下、コマンドを実行します。UNIXパスワードファイルを元にsambpasswd ファイルを作成する事ができます。

# chmod 755 /usr/local/src/samba-3.0.1/source/script/mksmbpasswd.sh
# cat /etc/passwd | /usr/local/src/samba-3.0.1/source/script/mksmbpasswd.sh > /etc/samba/smbpasswd

 あるいは、mksmbpasswd.sh を/usr/local/bin にコピーしておき、以下コマンドを実行しても同様の操作になります。

# cp /usr/local/src/samba-3.0.1/source/script/mksmbpasswd.sh /usr/local/bin
# mksmbpasswd.sh < /etc/passwd > /etc/samba/smbpasswd


 作成した後、smbpasswd からシステム用の不要なアカウントも削除しておいてください。また、パスワードファイルのパーミッションも適切に設定しておきます。

# vi /etc/samba/smbpasswd //不要なアカウントを削除しておく
# chmod 600 /etc/samba/smbpasswd

 上記の操作ではSamba用のパスワードファイルは作成されましたが、パスワードは未設定の状態のままなので、smbpasswd コマンドを使って、パスワードを設定します。

# /usr/local/samba/bin/smbpasswd kororo
New SMB password:
Retype new SMB password:

 smbpasswd でパスワードを作成したユーザーのみ、以下のように表示されている事を確認してください。
# cat /etc/samba/smbpasswd
kororo:500:CBEF1524C02D2BF66AFF3DDD7F8C47:[U ]:LCT-4080C996:kororo
koro01:506:XXXXXXXXXXXXXXXX:XXXXXXXXXXXXXXXX:[U ]:LCT-00000000:
koro02:507:XXXXXXXXXXXXXX:XXXXXXXXXXXXX:[U ]:LCT-00000000:

■/etc/services の追加

 Red Hat では標準でサービスとして追加されていますが、記述されていない場合は以下の2行を追加しておいてください。

netbios-ns 137/udp
netbios-ssn 139/tcp

■ログディレクトリの作成とローテート

 Samba 用のログディレクトリはデフォルトでは作成されていませんので、予め作成しておきます。また、ログがローテートできるようにソースディレクトリ内にある、samba.log を /etc/logrotate.d 以下にコピーしておきます。また、環境に合わせてローテートファイルも編集しなおしておいてください(「logrotate によるログのローテーション」参照)。

# mkdir /var/log/samba
# cp /usr/local/src/samba-3.0.1/packaging/RedHat/samba.log /etc/logrotate.d/samba
# vi /etc/logrotate.d/samba
log file = /var/log/samba/log.nmbd {
weekly
rotate 5
missingok
postrotate
/usr/bin/killall -HUP nmbd
endscript
}

log file = /var/log/samba/log.smbd {
weekly
rotate 5
missingok
postrotate
/usr/bin/killall -HUP smbd
endscript
}


■Samba の起動

 Samba をデーモンとして起動させます。また、プロセスの確認も行っておいてください。

# /usr/local/samba/sbin/smbd -D
# ps aux | grep smb
root 12830 0.0 0.8 8404 2176 ? S 17:14 0:00 /usr/local/samba/sbin/smbd

 以上で、Windows 上から、\\Sambaサーバー名\kororo でアクセスすることができるようになります。アクセスする際にユーザー名とパスワードを聞かれるので、先ほどsmbpasswd で作成したパスワードを入力してください。




■パスワード不要の共有ディレクトリ+パスワード要のホームディレクトリ

1) 全ユーザが共有するディレクトリ=>パスワード不要
2) 各ユーザのホームディレクトリ => パスワード要

上記ふたつの条件を満たす設定を以下に示します。

[global]
 security = SHARE
 map to guest = Bad User


[homes]
 comment = Home Directories
 read only = No
 create mask = 0644
 browseable = No

[public]
 comment = Public Stuff
 path = /home/samba
 read only = No
 create mask = 0777
 directory mask = 0777
 guest only = Yes
 guest ok = Yes



■Samba の自動起動設定

 Samba が自動起動できるように、ソースディレクトリ内にあるsmb.init を /etc/rc.d/init.d 以下にコピーしておきます。また、smb.initを開いて、起動用パスやsmb.conf の格納されているパスを各自の環境に合わせて編集しておいてください。私の環境ではこちらのようにしています。

# cp /usr/local/src/samba-3.0.1/packaging/RedHat/smb.init /etc/rc.d/init.d/smb

 chkconfig --add でsmb を自動起動サービスに追加しておきます。

# chkconfig --add smb
# chkconfig --list smb

smb 0:オフ 1:オフ 2:オフ 3:オン 4:オン 5:オン 6:オフ



■swat の起動設定

 swat をxinetd 経由で動作させるための設定ファイルがソースディレクトリの中に用意されているのでそれを/etc/xinetd.d にコピーしておきます。

# cd /usr/local/src/samba-3.0.1
# cp packaging/RedHat/samba.xinetd /etc/xinetd.d/swat

 デフォルトでは起動しないように設定されているので、disable = no に変更しておきます。

# vi /etc/xinetd.d/swat

# default: off
# description: SWAT is the Samba Web Admin Tool. Use swat \
# to configure your Samba server. To use SWAT, \
# connect to port 901 with your favorite web browser.
service swat
{
port = 901
socket_type = stream
wait = no
only_from = 127.0.0.1 172.16.50.0/27 172.16.51.0/28
user = root
server = /usr/local/samba/sbin/swat
log_on_failure += USERID
disable = no
}

 変更したら、xinetd を再起動しておきます。

# /etc/init.d/xinetd restart

 netstat で901番がLISTEN状態になっていることを確認しておきます。

# netstat -an | grep 901
tcp 0 0 0.0.0.0:901 0.0.0.0:* LISTEN
unix 2 [ ] DGRAM 901

なお、ブラウザでアクセスした際に、Swatのネットワークパスワードにroot のパスワードを入力してもログインできないことがありました。その時のsyslogを閲覧したら以下のようなエラーが発生していました。これは、/etc/pam.d/ 以下にsamba ファイルが存在しないために起きているエラーでした。削除した覚えもないのでソースからインストールした場合はおそらく存在しないかもしれません。ということで、私はRPMパッケージをダウンロードしてきて、rpm2cpio にて/etc/pam.d/samba を抽出し、元の位置にコピーしたところ、正常にswat にアクセスできるようになりました。

# tail -f /var/log/messages
Aug 5 03:06:06 ns1 swat[7043]: [2005/08/05 03:06:06, 0] auth/pampass.c:smb_pam_passcheck(810)
Aug 5 03:06:06 ns1 swat[7043]: smb_pam_passcheck: PAM: smb_pam_auth failed - Rejecting User root !

Swat の画面が文字化けしてしまう場合は、smb.conf にて、unix charset とdisplay chaset のパラメータを同じ値(ここでは、UTF-8)にしてみてください。

unix charset = UTF-8
dos charset = CP932
display charset = UTF-8



■Samba3.0でのゴミ箱の利用

Samba3.0以降、ゴミ箱の機能が使えるようになりました。ファイルを削除すると予め指定しておいたディレクトリに移動します。まず、smb.conf を開いて[global]セクションに以下の行を付け加えます。ここでは、[homes]セクションにパラメータを記述していますが、全共有ディレクトリに同じ設定を適用したい場合は[global]セクションに記述してください。

# vi /usr/local/samba/lib/smb.conf

[global]
 vfs objects = recycle

[homes]
 recycle:repository = .recycle/%u
 # 削除されたファイルの移動先ディレクトリ。%u を付加する事で、削除したユーザのフォルダを
   自動で作成してくれます。

 recycle:keeptree = yes # ディレクトリ構造を維持してごみ箱に移動するか否かを指定する
 recycle:touch = yes # 削除の際に、ファイルのアクセス日を変更するか否か
 recycle:versions = yes # 同名ファイルが存在する場合に別名で保存するか否か
 recycle:maxsize = 0 # ゴミ箱に移動するファイルサイズの最大値(0で無制限)
 recycle:exclude = *.tmp # ごみ箱に移動せずに直接削除するファイルを指定
 recycle:exclude_dir = /tmp/cache
 # 指定のディレクトリから削除されたファイルはゴミ箱に移動しない
 recycle:noversions = *.doc
 # recycle:versionsの反対。両方のオプションを設定すると、こちらが優先される

予めゴミ箱ディレクトリを作成しておき、パーミッションを777に設定します。その後、Sambaを再起動し、設定を反映させてください。

# mkdir .recycle
# chmod 777 .recycle
# /etc/rc.d/init.d/smb restart

共有したディレクトリにファイルを作成してから、削除してみてください。.recycle ディレクトリ以下に、自動的に自分のユーザ名のディレクトリが作成され、その下にファイルが移動されます。この自動で作成されたディレクトリのパーミッションは700となるので、他のユーザにゴミ箱内を勝手に見られる心配はなくなります。また、recycle:keeptreeも「recycle:repository = .recycle/%u」とする事で正常に動作するようになります。

# ls -la /home/samba/.recycle/
合計 12
drwx------ 2 kororo kororo 4096 8月 5 02:20 kororo

.recycle ディレクトリをユーザひとりひとりに対して作成していくのは面倒なので、useradd コマンド時に自動的にコピーするように/etc/skel に.recycle ディレクトリを作成しておきます。

# mkdir /etc/skel/.recycle

■ゴミ箱内のファイルを定期的に削除する

Fedra Core3には、tmpwatch という/tmp ディレクトリ内のファイルを定期的に削除するパッケージがインストールされており、これを流用することで.recycle ディレクトリ内も定期的に削除することができます。ここでは、10日間(240時間)アクセスのないファイルをゴミ箱へ削除することとします。まず、tmpwatchが/etc/cron.dailyに置かれていますので、このファイルを
/etc/cron.weekly/recyclewatch としてコピーしておきます。

# cd /etc/cron.daily/
# cp tmpwatch /etc/cron.weekly/recyclewatch

次に、このrecyclewatch 以下のようにを編集します。

# vi /etc/cron.weekly/recyclewatch

/usr/sbin/tmpwatch 240 /home/usr/.recycle
/usr/sbin/tmpwatch 240 /home/samba/.recycle



■参考

⇒MONYO-COM:Sambaの認証をWindowsに統合する
⇒[Chapter 6] 6.4 パスワード







TOPに戻る

Sponcerd Link


Search
 
Web サイト内
Rental Server

【レンタルサーバのXbit】 低価格・高品質のビジネスクオリティー。300メガ1,050円~30分で サービススタート可能!


容量300MB、月額125円、高性能なサーバが日本最大級のバックボーンに直結。
さくらのレンタルサーバ



当サイトはLinux自宅サーバーの構築を目的としたサイトです。
当サイトに関するご意見、ご要望等は、こちらのメールアドレスよりお願いします。
Beginning | Introduction | Installation | Server |
Security | Tips | Related-Sites
Copyright©2003-2006 KORO All Rights Reserved.
総計:
今日:
昨日: