Samba サーバへの接続状況を確認する方法

提供:Samba-JP
2006年8月22日 (火) 01:01時点におけるRibbon (トーク | 投稿記録)による版 (新規追加)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動検索に移動
KB番号 J0072
最終更新日 2002/10/12
作成者 たかはしもとのぶ
最終更新者

対象

この文書は、以下のプロダクトに付いて説明したものです。

  • Samba 2.2 系列
  • Samba 2.0 系列

概要

Samba サーバには、接続状況を確認する方法が幾つかあります。以下、それらについて解説します。

詳細

接続状況を表示するsmbstatusコマンド、接続履歴を記録するutmpオプション

企業においては、 Samba サーバへの接続状況を監視したいという場合も多いでしょう。接続状況を表示するコマンドとして、従来から Samba に備わっていたものに smbstatus コマンドがあります。このコマンドを利用することで、実行例1のように、現在の Samba サーバへの接続状況を表示することが可能です。

%/usr/local/samba/bin/smbstatus

Samba version 2.0.9-ja-1.0
Service      uid      gid      pid     machine
----------------------------------------------
monyo        monyo    monyo    26361   misa     (192.168.221.128) Fri Jun 22 00:44:18 2001

Locked files:
Pid    DenyMode   R/W        Oplock           Name
--------------------------------------------------
26361  DENY_NONE  RDWR       EXCLUSIVE+BATCH  /home/monyo/lion.txt   Fri Jun 22 00:45:07 2001
26361  DENY_NONE  RDWR       EXCLUSIVE+BATCH  /home/monyo/サンバ.txt   Fri Jun 22 00:46:05 2001
26361  DENY_WRITE RDONLY     EXCLUSIVE+BATCH  /home/monyo/CharGen.exe   Fri Jun 22 00:44:43 2001

Share mode memory usage (bytes):
   1048176(99%) free + 296(0%) used + 104(0%) overhead = 1048576(100%) total

実行例1: smbstatusコマンドの実行例

SWATの「状況(STATUS)」ボタンを押すことで表示される図1の画面でも同様の情報が表示されます。


図1: SWATの「状況」メニュー

しかし、これらのツールでは現在の接続状況を取得することができても、誰がいつ接続したかという接続履歴の情報を取得することはできません。

従来のSambaでこうした情報を取得する場合は、smbstatusコマンドをcronなどで定期的に実行してその結果を加工する必要がありました。

Samba 2.0.7から実装されたutmpオプション

Samba 2.0.7 以降では、 utmp オプションにより、接続履歴の情報を簡単に取得することが可能になっています。以下方法を説明します。

utmp オプションを利用する場合の注意点としては、 configure 時に --with-utmp オプションを指定する必要がある点があげられます。パッケージを利用する場合は、このオプションを付けて configure が行なわれていることを確認してください。 なお、 Samba 2.0.7 では、実装の不備により、正しくコンパイルできるプラットフォームが Linux などごく一部に限られています。もしコンパイルがうまくできない時は Samba 2.0.7 日本語版や、Samba 2.2.0 以降を利用してください。

--with-utmp オプションを有効にした Samba を稼働させれば、後は単純に smb.conf 中で図2のように1行追加を行なうだけでこの機能が有効になります。

[global]
  utmp = yes

図2: utmp オプションを有効にする

このオプションを有効にしている場合、 last コマンド等で実行例2のように Samba サーバへの接続履歴が表示されます。

last | grep smb
monyo    smb/0        misa             Sun Jun 17 10:28 - 11:36  (01:08)    
smbguest smb/2        misa             Sun Jun 17 10:27 - 11:36  (01:08)    
monyo    smb/0        misa             Sun Jun 17 10:27 - 10:27  (00:00)    
smbguest smb/0        mayuka           Sat Jun 16 23:05 - 23:15  (00:10)    
smbguest smb/1        yukako           Sat Jun 16 22:48 - 11:36  (12:48)    
smbguest smb/0        yukako           Sat Jun 16 22:48 - 22:58  (00:10)    

実行例2: last コマンドの実行例

なお、デフォルトでは通常のログイン履歴を記録するファイルと同一のファイルに Samba サーバへの接続履歴も書き込まれます。 Samba 経由でのアクセスの記録を別のファイルに出力したい場合は、図3のように utmp directory オプションを利用することで明示的に書き出すファイルを指定してください。

[global]
  utmp = yes
  utmp directory = /var/log/samba/

図3: 書き出すファイルの位置の指定

なお書き出し先のファイル名は utmpx と wtmpx になります。予め

touch /var/log/samba/utmpx

のようにして作成しておく必要がありますので注意してください。またlastコマンド実行時も、実行例3のように、-f オプションで明示的にファイル名を指定する必要があります。

%last -f /var/log/samba/utmpx
tako     smb/1        misa             Thu Jun 21 23:54   still logged in   

実行例3: last -f コマンドの実行例

utmpファイルへの出力の応用

utmp ファイルに書き込まれた情報を利用することで、例えば実行例4のようにユーザの接続時間の集計などを簡単に行なうことが可能です。

smbguestアカウントの接続時間を日毎に出力している
%ac -d smbguest
Jun  2  total        1.81
Jun  3  total        0.95
Jun  4  total        0.30
Jun  6  total        0.05
Jun  9  total        7.03
Jun 16  total        2.35
Jun 17  total       13.24

実行例4: acコマンドの実行例

この他にもutmpオプションには様々な応用が考えられます。面白い利用法を思い付いた方が、いらっしゃいましたら、是非日本Sambaユーザ会までお知らせください。

この技術情報は 「Linux Japan 2001年08月号: Samba-JP通信」の草稿を元に作成されています。