ここでは、LinuxやBSDなどを中心としたUNIX系OSにおいて
Windows NT/2000互換のファイルサーバ/プリント・サーバ機能を提供するSamba
について解説していきます。Samba はバージョンがあがるたびに機能が拡張されており、現在の代表的な機能としては、ファイルサーバー機能、プリントサーバー機能、WINSサーバー機能、PDC機能(プライマリドメインコントローラ)、DFS機能(マイクロソフトの分散ファイルシステム)、ブラウザからSambaを簡単に管理できるSWAT
機能などがあります。また、ここでの説明はバージョン2.27になりますが、Samba3.0
以降からはKerberos認証のサポートしたことにより、Windows 2000のActive
Directoryへの参加も可能となっています。なお、当ページではそのSamba
の最も一般的な機能であるファイルサーバーに絞って解説していきます。
|
|
■samba のインストール
RPM でのインストールは以下のパッケージをインストールしておいてください。samba-client
は、Linux クライアントがある場合に必要となります。
# rpm -ivh samba-2.2.7a-6.i386.rpm
samba-client-2.2.7a-6.i386.rpm samba-common-2.2.7a-6.i386.rpm
samba-swat-2.2.7a-6.i386.rpm |
|
■自動起動の設定
ランレベル3と5でsmbが自動起動するように設定します。
# chkconfig --level
35 smb on
# chkconfig --list smb
ntpd 0:オフ 1:オフ 2:オフ 3:オン4:オフ 5:オン6:オフ |
|
■/etc/samba/smb.confの編集
まず、Linux 上のユーザーのホームディレクトリをファイルサーバーとしてWindows上で参照できるようにsmb.conf
を編集していきます。[ global ] セクションの、workgroup にWindowsの所属するグループを指定します。
#=======================
Global Settings ======================
[global]
# workgroup = NT-Domain-Name or Workgroup-Name
workgroup = kororo.jp
|
|
Samba サーバーへの接続を許可するネットワークを指定します。コメントも削除してください。
hosts allow = 172.16.50.
172.16.51. 127. |
|
次に文字コードに関する設定です。coding system は、euc に設定しておくことで、Windows
上からファイルをコピーする際に、SHIFT-JISで書かれた文字コードをEUC コードに変換します。client
code page は、クライアントが扱う文字コードがSHIFT-JIS環境であることを示しています。
coding system = euc
client code page = 932 |
|
なお、client code page の値はDoSプロンプト上で、chcp コマンドを実行すると表示されます。
[ homes ] セクションは、ユーザーごとのホームディレクトリに関する設定を行います。writable
がyes の場合は、ファイルの変更、削除が行えます。valid users の%S は、仮にユーザーをkororo
とした場合に、ブラウザ上から、
\\sambaサーバー名
\kororo
というURLでアクセスできることを意味しています。create mode と directory mode
は新しく作成されたファイルやディレクトリのデフォルトのパーミッションを設定します。デフォルトでは、ファイルは664、ディレクトリが775という意味になります。
#============================
Share Definitions ================
[homes]
comment = Home Directories
browseable = no
writable = yes
valid users = %S
create mode = 0664
directory mode = 0775 |
|
■/etc/samba/smbpasswd ファイルの作成
sambaのパスワードの暗号化形式は、Linuxログイン時に使用するshadow パスワードとは異なるため、smbpasswd
というファイルを作成しなくてはなりません。以下、コマンドを実行し、/etc/samba/smbpasswd
を作成してください。作成した後、smbpasswd からシステム用の不要なアカウントも削除しておいてください。また、パスワードファイルのパーミッションも適切に設定しておきます。
# cat /etc/passwd
| mksmbpasswd.sh > /etc/samba/smbpasswd
# chmod 600 /etc/samba/smbpasswd
# ls -la /etc/samba/smbpasswd
-rw------- 1 root root 130 1月 2 13:57
/etc/samba/smbpasswd |
|
上記の操作ではSamba用のパスワードファイルは作成されましたが、パスワードは未設定の状態のままなので、smbpasswd
コマンドを使って、パスワードを設定します。
# smbpasswd kororo
New SMB password:
Retype new SMB password:
Password changed for user kororo.
Password changed for user kororo. |
|
■samba の再起動
最後に変更を有効にするため、sambaを再起動します。
# /etc/init.d/smb
restart
SMBサービスを停止中: [ OK ]
NMBサービスを停止中: [ OK ]
SMBサービスを起動中: [ OK ]
NMBサービスを起動中: [ OK ] |
|
■Windows 上からアクセスする
それでは、実際にWindows 上からアクセスしてみます。
\\sambaサーバー名
\ユーザー名でアクセスして以下のような「ネットワークパスワードの入力」にパスワードを入れてログインできたら成功です。
■SWAT を使ってブラウザから管理する
samba には、swat というパッケージがあり、これを利用することでブラウザから直接アクセスして管理することができるようになります。swat
は901番ポートを使用し、ブラウザでアクセスする場合は、 http://sambaサーバー名:901 とすればsamba
の設定画面が表示されます。アクセスする際には、root のパスワードを聞かれるのでroot のログインパスワードを入力します。下記図は英語版のsamba
なので、日本語版をインストールしたい場合は、こちらを参照してください。
■swat の初期設定
Red Hat に付属のRPM を使用した場合、swat をインストールしてあるからといってすぐにブラウザからアクセスできるわけではありません。下記を参考にしてブラウザからアクセスできるようにしましょう。
まず、/etc/services にswat の行があるかどうか確認してください。Red Hat はデフォルトで記述されていますが、されていなければ追記してください。
# vi /etc/services
swat 901/tcp # Samba Web Administration
Tool |
|
/etc/xinetd.d/swat を編集して、disable を yes から no に変更します。変更したら、xinetd
を再起動してください。以上で、ブラウザ上で http://sanbaサーバー名:901 を入力すればアクセスできるようになります。
# 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/sbin/swat
log_on_failure += USERID
disable = no
}
# /etc/init.d/xinetd restart |
|
■共有ディレクトリを作成する
上記で説明したファイル共有の方法は、あくまでもユーザーのホームディレクトリを共有するというものでしたので、パスワードを知らなければ他のユーザーは閲覧することが出来ません。ここでは、複数のユーザーがファイルを共有する専用のディレクトリを作成していきます。共有ディレクトリは、通常、/home/samba
に作成します。共有ディレクトリごとにアクセス制限をかけたい場合は、/home/samba 以下にサブディレクトリを作成するといいでしょう。
まず、共有するディレクトリを作成し、所有者をroot とし、誰でも読み書きできるようにパーミッションを777とします。
# mkdir -p /home/samba/public
# chown root.root /home/samba/public
# chmod 777 /home/samba/public |
|
次に、/etc/samba/smb.conf のpublic セクションを編集します。デフォルトではコメントアウトされているので、"
; " を削除します。
path セクションを適切なパスに変更します。
write
list では書き込みできるユーザーを限定する項目で、先頭に" @ " がついているのはグループを表します。create
mode と directory mode で新規に作成されたファイルやディレクトリに対して、デフォルトで設定されるパーミッション値を設定します。
# vi /etc/samba/smb.conf
# A publicly accessible directory, but read
only, except for people in
# the "staff" group
[public]
comment = Public Stuff
path = /home/samba/public
public = yes
writable = yes
printable = no
write list = @staff
create mode = 766
directory mode = 777
|
|
編集しおえたら、xinetd を再起動します。あとはクライアントマシンから、
\\sambaサーバー名
\public
でアクセスするだけです。
# /etc/init.d/xinetd
restart |
|