Powered by SmartDoc

Samba

Sambaとは

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サービスの起動・停止

Sambaサービスは二つのデーモンsmbdとnmbdを使って提供され、serviceコマンドで制御できる。

Sambaの起動や停止
# service smb start

NetBIOS名

WindowsあるいはSambaでははコンピュータに名前を付け、他のコンピュータと区別し、アクセスに利用します。この名前をNetBIOS名といいます。

現在のネットワークはTCP/IPという数値のアドレスを使ってアクセスする技術の上で動いているのでNetBIOS名とコンピュータに割り当てられたIPアドレスを対応づけていて名前以外にIPアドレスを使ってもアクセス可能です。NetBIOS名はIPアドレスと同様に重複した名前は使えません。

WindowsからたのWindowsやSambaにアクセスするときは次の表記を使います。

Windowsからのアクセス
\\NetBIOS名
\\IPアドレス

LinuxなどからWindowsあるいはSambaへアクセスするときは次の表記を使います。ファイルブラウザなどのウィンドウのメニューから移動を開き、場所を選び、下記の形式のアドレスを入力します。

Linuxなどからのアクセス
smb://サーバ名/
smb://IPアドレス/

ワークグループ

WindowsやSambaではNetBIOS名の上位の階層としてワークグループがあり、サーバを仮想的にグループ化できます。WindowsではMSHOMEやWORKGROUP、SambaではMYGROUPと言う名称が使われています。

ブラウザ

WindowsおよびSambaのNetBIOS名のリストをブラウズリストといい、ネットワーク内で適した性能を持つ任意の一台コンピュータが管理しています。このコンピュータをマスタブラウザと言います。このリストは一定の間隔(12分)間隔で更新されるため、実際の稼働状況と異なったリストが得られる事もあります。リストの更新あるいはしばらく待つ事になります。

Sambaサーバ関連コマンド

Sambaの動作などを確認するコマンドを表6.6.1[Samba関連コマンド]に示す。各コマンドの動作を確認せよ。

Samba関連コマンド
コマンド 動作
smbstatus Sambaサーバの状態確認
findsmb Sambaサーバの一覧表示
testparm 設定ファイルの検証と設定の表示
smbpasswd Sambaへのユーザ登録
pdbedit TDBユーザ管理データベス編集
smbclient コマンドラインでSambaサーバを利用する
smbtree テキストベースのネットワークブラウザ
smbmount Sambaファイルシステムのマウント
smbumount Sambaファイルシステムのアンマウント

関連ファイル

Sambaの設定などに関わるファイルを表6.7.1[Samba関連ファイル]に示す。

Samba関連ファイル
ファイル 役割
/etc/samba/smb.conf Sambaの設定を記述する
/etc/samba/smbpasswd Sambaユーザのパスワードを保存
/var/log/samba/*.log Sambaのログ

ファイヤウォールとSELinuxの設定

ファイヤウォールとSELinuxが有効になっている場合、Samba向けの設定が必要である。

ファイヤウォールの設定
信頼できるサービスのSambaにチェックをしておく。
SELinuxの設定
SELinuxを有効にしている場合、Samba用にポリシーを変更する。
SELinuxの設定
# setsebool -P samba_enable_home_dirs=1

設定ファイルsmb.conf

Sambaの設定ファイル/etc/samba/smb.confは単純なテキストファイルで、viなどのテキストエディタで編集できる。このファイルはセッションとパラメータで構成され、英文によるコメントが大量に記述されているのでそれを手がかりに設定できる。Sambaの設定ファイルの構造をリスト6.9.1[smb.confの構造]に示す。

smb.confの構造
[セッション名]
  パラメータ名 = 値
  パラメータ名 = 値
  .....

初期状態で設定されているセッションはSamba全体の動作を定義するglobalセッション、ユーザのホームディレクトリへのアクセスを定義するhomesセッション、プリンタの共有を定義するprintersセッションの三つである。

ユーザのホームディレクトリを利用するにはユーザアカウントをSambaに登録しなければならない。

smb.confの例
[global]
	workgroup = MYGROUP
	server string = Samba Server Version %v

Sambaのユーザ認証

SambaはLinuxなどのUNIXシステム上で稼働するサービスだが、このサービスを利用するにはLinux用アカウントとは別にSamba向けのアカウントが必要になる。

Sambaのデフォルトの設定ではあらかじめLinuxに登録されているアカウントをSambaに登録し、そのアカウントでアクセスするようになっている。もし、ネットワーク上のWindowsサーバなどのユーザアカウントの認証用サーバがあればそれを利用することも可能である。

ユーザの登録

上述の通り、Sambaにユーザを登録するにはLinuxへのユーザ登録を先に済ませておかなければならない。Sambaへのユーザ登録にはsmbpasswdやpdbeditコマンドを使う。

ユーザの追加
# pdbedit -a ユーザ名
または
# smbpasswd -a ユーザ名
ユーザのパスワードを入力

smbpasswdを使った場合、指定したユーザ名と入力したパスワードはファイル/etc/samba/smbpasswdに保存される。パスワードは暗号化されて保存され、Linuxのそれとは異なっていてもよい。

pdbeditの使用例
]# 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からのアクセスの時にも同様の表示が出る。

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を再起動し、異なるグループのユーザでアクセスし、設定が反映されている事を確認する。

doraemonsグループでログイン
doraemonsグループ以外でログイン

個人ごとに異なる共有を用意する場合、%Gの代わりに%Uを使い、ユーザ名を含んだ設定ファイルを用意すればよい。

隠し共有を作る

共有を設定しているがそのアイコンが見えないものを隠し共有という。Windowsでは共有名の最後に$を付けると隠し共有になるがSambaではbrowseableでnoを指定すればよい。

共有が見えないのでアクセスするときにフォルダ名を指定すればアクセスできる。

隠し共有の指定
smb://サーバ名/隠し共有名/ <- Linuxの場合
\\サーバ名\隠し共有名 <- Windowsの場合

演習

  1. サービスが起動されているかを確認する。
  2. ファイヤウォールとSELinuxの設定を確認し、適正な設定にする。
  3. 設定ファイルを編集し、ワークグループをITにする。
  4. 設定ファイルを検証し、Sambaサービスを起動する。
  5. ネットワーク内のSambaサーバの一覧を表示する。
  6. Sambaサーバの状態を確認する。
  7. LinuxのデスクトップにあるコンピュータからWindowsネットワークを開き、教室内のSambaサーバが表示されるかを確認する。
  8. SambaにLinuxと同じ自分のアカウントを登録し、利用できるかを確認する。
  9. Smaba関連のコマンドを試す。
  10. ディレクトリ/homeに誰でも書き込めるディレクトリpublicを作りなさい。