Samba サーバへの接続状況を確認する方法
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の画面でも同様の情報が表示されます。
しかし、これらのツールでは現在の接続状況を取得することができても、誰がいつ接続したかという接続履歴の情報を取得することはできません。
従来の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通信」の草稿を元に作成されています。