SambaとはWindowsネットワークで使用されているSMB(Server Message Block)やCIFS(Common Internet File System)の実装で、Windowsネットワークのファイルやプリンタ共有サービスをLinuxなどのOSで利用可能にし、Windows、Linux、Macなどの異なるOSが混在するネットワークでのファイル共有を実現します。
Windows XPやVistaなどのクライン向けWindowsのファイルとプリンタの共有では最大10接続までという制限がありますが、Sambaには接続数の制限は無く、無料で使用できます。
Sambaは表0に示すプロトコルとポートを使用する。
サービス | ポート | 用途 |
---|---|---|
netbios-ns | 137 | 名前解決 |
netbios-dgm | 138 | ブラウジング |
netbios-ssn | 139 | NetBIOSセッション |
microsoft-ds | 445 | Windows2000以降のセッション |
Sambaサービスは二つのデーモンsmbdとnmbdを使って提供され、serviceコマンドで制御できる。
# service smb start
WindowsあるいはSambaでははコンピュータに名前を付け、他のコンピュータと区別し、アクセスに利用します。この名前をNetBIOS名といいます。
現在のネットワークはTCP/IPという数値のアドレスを使ってアクセスする技術の上で動いているのでNetBIOS名とコンピュータに割り当てられたIPアドレスを対応づけていて名前以外にIPアドレスを使ってもアクセス可能です。NetBIOS名はIPアドレスと同様に重複した名前は使えません。
WindowsからたのWindowsやSambaにアクセスするときは次の表記を使います。
\\NetBIOS名 \\IPアドレス
LinuxなどからWindowsあるいはSambaへアクセスするときは次の表記を使います。ファイルブラウザなどのウィンドウのメニューから移動を開き、場所を選び、下記の形式のアドレスを入力します。
smb://サーバ名/ smb://IPアドレス/
WindowsやSambaではNetBIOS名の上位の階層としてワークグループがあり、サーバを仮想的にグループ化できます。WindowsではMSHOMEやWORKGROUP、SambaではMYGROUPと言う名称が使われています。
WindowsおよびSambaのNetBIOS名のリストをブラウズリストといい、ネットワーク内で適した性能を持つ任意の一台コンピュータが管理しています。このコンピュータをマスタブラウザと言います。このリストは一定の間隔(12分)間隔で更新されるため、実際の稼働状況と異なったリストが得られる事もあります。リストの更新あるいはしばらく待つ事になります。
Sambaの動作などを確認するコマンドを表6.6.1[Samba関連コマンド]に示す。各コマンドの動作を確認せよ。
コマンド | 動作 |
---|---|
smbstatus | Sambaサーバの状態確認 |
findsmb | Sambaサーバの一覧表示 |
testparm | 設定ファイルの検証と設定の表示 |
smbpasswd | Sambaへのユーザ登録 |
pdbedit | TDBユーザ管理データベス編集 |
smbclient | コマンドラインでSambaサーバを利用する |
smbtree | テキストベースのネットワークブラウザ |
smbmount | Sambaファイルシステムのマウント |
smbumount | Sambaファイルシステムのアンマウント |
Sambaの設定などに関わるファイルを表6.7.1[Samba関連ファイル]に示す。
ファイル | 役割 |
---|---|
/etc/samba/smb.conf | Sambaの設定を記述する |
/etc/samba/smbpasswd | Sambaユーザのパスワードを保存 |
/var/log/samba/*.log | Sambaのログ |
ファイヤウォールとSELinuxが有効になっている場合、Samba向けの設定が必要である。
# setsebool -P samba_enable_home_dirs=1
Sambaの設定ファイル/etc/samba/smb.confは単純なテキストファイルで、viなどのテキストエディタで編集できる。このファイルはセッションとパラメータで構成され、英文によるコメントが大量に記述されているのでそれを手がかりに設定できる。Sambaの設定ファイルの構造をリスト6.9.1[smb.confの構造]に示す。
[セッション名] パラメータ名 = 値 パラメータ名 = 値 .....
初期状態で設定されているセッションはSamba全体の動作を定義するglobalセッション、ユーザのホームディレクトリへのアクセスを定義するhomesセッション、プリンタの共有を定義するprintersセッションの三つである。
ユーザのホームディレクトリを利用するにはユーザアカウントをSambaに登録しなければならない。
[global] workgroup = MYGROUP server string = Samba Server Version %v
SambaはLinuxなどのUNIXシステム上で稼働するサービスだが、このサービスを利用するにはLinux用アカウントとは別にSamba向けのアカウントが必要になる。
Sambaのデフォルトの設定ではあらかじめLinuxに登録されているアカウントをSambaに登録し、そのアカウントでアクセスするようになっている。もし、ネットワーク上のWindowsサーバなどのユーザアカウントの認証用サーバがあればそれを利用することも可能である。
上述の通り、Sambaにユーザを登録するにはLinuxへのユーザ登録を先に済ませておかなければならない。Sambaへのユーザ登録にはsmbpasswdやpdbeditコマンドを使う。
# pdbedit -a ユーザ名 または # smbpasswd -a ユーザ名 ユーザのパスワードを入力
smbpasswdを使った場合、指定したユーザ名と入力したパスワードはファイル/etc/samba/smbpasswdに保存される。パスワードは暗号化されて保存され、Linuxのそれとは異なっていてもよい。
]# pdbedit -a doraemon new password: retype new password: Unix username: doraemon NT username: Account Flags: [U ] User SID: S-1-5-21-1965530617-285126224-3964818565-1001 Primary Group SID: S-1-5-21-1965530617-285126224-3964818565-513 Full Name: Home Directory: \\beta\doraemon HomeDir Drive: Logon Script: Profile Path: \\beta\doraemon\profile Domain: BETA Account desc: Workstations: Munged dial: Logon time: 0 Logoff time: never Kickoff time: never Password last set: 火, 12 5月 2009 17:21:43 JST Password can change: 火, 12 5月 2009 17:21:43 JST Password must change: never Last bad password : 0 Bad password count : 0 Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
パスワードの変更と削除もpdbeditあるいはsmbpasswdコマンドを使う。何もオプションを指定せず、ユーザ名だけを指定して実行すれば新しいバスワードの入力を促される。オプションxで削除、dで無効化、eで無効化したユーザの削除となる。
# smbpasswd ユーザ名 新しいパスワードを入力 # smbpasswd -x ユーザ名
ユーザの登録・パスワードの変更ができたらSambaサーバへアクセスし、共有が表示されるかを確認する。図6.11.1[場所を開く]のようにサーバ名の前にユーザ名を指定する事もできる。
共有にアクセスするにはユーザ名とパスワードが必要でその入力を促す表示が現れるのでパスワードを入力する。
Windowsからのアクセスの時にも同様の表示が出る。
共有の設定は初期状態のままなのでユーザのホームディレクトリ、プリンタ、すべてのユーザに対する共有が表示される。ユーザのホームディレクトリとはLinuxのユーザのファイルを保存するフォルダでユーザを登録した時点で自動的に作成される。
ユーザのホームディレクトリの共有設定の名称はhomesで、ログインしたユーザのホームディレクトリに切り替わる。
次のセッションを/etc/samba/smb.confに追加すると共有名pubが追加され、誰でも書き込める共有フォルダになる。SELinuxが共有への書き込みを許可するように設定されていることを確認する。
[pub] comment = Temporary file space path = /pub writeable = yes read only = no guest ok = yes
特定のグループのユーザだけが利用できる共有をつくるには設定ファイルのグローバル設定にinclude = /etc/samba/%G.confを追加し、グループごとの設定ファイル/etc/samba/グループ名.confをエディタで作成する。%GはSambaにログインしたユーザのグループ名に置き換わる。
設定の例をリスト6.13.1[グループ用の設定ファイルの例]に示す。
[doraemons] comment = グループdoraemons専用の共有 path = /home/doraemons browseable = yes read only = no guest ok = no writeable = yes
設定できたら他のグループのユーザが利用できないようにディレクトリの所有者とグループ、パーミッションを設定了し、Sambaを再起動し、異なるグループのユーザでアクセスし、設定が反映されている事を確認する。
個人ごとに異なる共有を用意する場合、%Gの代わりに%Uを使い、ユーザ名を含んだ設定ファイルを用意すればよい。
共有を設定しているがそのアイコンが見えないものを隠し共有という。Windowsでは共有名の最後に$を付けると隠し共有になるがSambaではbrowseableでnoを指定すればよい。
共有が見えないのでアクセスするときにフォルダ名を指定すればアクセスできる。
smb://サーバ名/隠し共有名/ <- Linuxの場合 \\サーバ名\隠し共有名 <- Windowsの場合