392.4 Sambaのトラブルシューティング
主題392:Sambaの基礎
392.4 Sambaのトラブルシューティング
LinuC300の試験範囲である主題390~397まであるうちの「主題392:Sambaの基礎」から「392.4 Sambaのトラブルシューティング」についてのまとめ
重要度:2
説明:
簡易データベース(TDB)ファイルの構造を理解し、TBD関連の問題のトラブルシューティング方法を知っていること。主要な知識範囲
- Sambaのロギングを設定する
- TDBファイルをバックアップする
- TDBファイルを復元する
- TDBファイルの破損を検出する
- TDBファイルの内容を編集 / 一覧表示する重要なファイル、用語、ユーティリティ:
- /var/log/samba/*
- log level
- debuglevel
- smbpasswd
- pdbedit
- secrets.tdb
- tdbbackup
- tdbdump
- tdbrestore
- tdbtool
Sambaのロギングを設定する
~ロギング~
smb.confのグローバルセクション([global])で定義する。
debug hires timestamp = Yes
ログメッセージに秒単位以上のタイムスタンプを記録する。
debug timestamp の設定が Yes になっている必要がある。debug timestamp(timestamp logs) = Yes
ログメッセージにタイムスタンプを付加する。debug uid = No
接続されたユーザーの euid、egid、uid、gid をタイムスタンプに付加する。
debug timestamp の設定が Yes になっている必要がある。debug pid = No
プロセスIDをタイムスタンプに付加する。
debug timestamp の設定が Yes になっている必要がある。eventlog list =
SambaのログをWindowsのイベントビューワーで参照できるようにする。logging = backend[:option][@loglevel] ※Samba4のみ
ロギングバックエンドを設定する。
logging が設定されている場合 syslog と syslog only 設定は上書きする。
例) logging = syslog@1 filelog level(debuglevel) = 0
全体のログレベルを決定する。
0~10の範囲で指定ができ、通常運用であれば1、開発者向けが3、それ以上は出力される量が膨大になるため推奨されない。
パラメータ値には「クラス」を指定する。
クラスごとに別々のログレベル、別々のログファイルを指定することができる。
例) log level = 3 passdb:5 auth:10 winbind:2
例) log level = 1 full_audit:1@/var/log/audit.log winbind:2log file = /var/log/samba/log.%m
ログファイルを指定する。
Samba変数が使える。max log size = 5000
ログファイルのサイズ
単位は kByte で、指定したサイズを超えると .old という拡張子のファイル名に置き換えられる。syslog= 1
Samba のデバッグメッセージと syslog のプライオリティとの対応づけを行なう。
Sambaログレベル0 = Syslogレベル3 LOG_ERR
Sambaログレベル1 = Syslogレベル4 LOG_WARNING
Sambaログレベル2 = Syslogレベル5 LOG_NOTICE
Sambaログレベル3 = Syslogレベル6 LOG_INFO
Sambaログレベル4~10 = Syslogレベル7 LOG_DEBUG
指定したログレベル未満のログのみsyslogに送信する。
loggingが指定されていれば、logging設定が優先される。syslog only = No
ログをsyslogにだけ送信する。
loggingが指定されていれば、logging設定が優先される。※Samba4のみ
~ログファイルの所在~
Sambaのログファイルの保存場所はインストールした環境により異なるがsmb -b コマンドを実行しLOGFILEBASEの項目で確認できる。
★ ソースからインストールしたSamba3の場合 ★
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# testparm -sv | grep "log file"
:
log file = /usr/local/samba/var/log.%m
:
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# smbd -b | grep LOGFILE
:
LOGFILEBASE: /usr/local/samba/var
:
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# ls -lF /usr/local/samba/var
合計 38
drwx------ 5 root root 5 5月 29 22:45 cores/
drwxr-xr-x 4 root root 24 6月 3 01:39 locks/
-rw-r--r-- 1 root root 845 6月 3 00:12 log.192.168.56.1
-rw-r--r-- 1 root root 50951 6月 3 01:39 log.nmbd
-rw-r--r-- 1 root root 22794 6月 3 00:00 log.smbd
-rw-r--r-- 1 root root 56224 6月 2 23:41 log.smbd.old
-rw-r--r-- 1 root root 1886 6月 2 23:42 log.wb-BUILTIN
-rw-r--r-- 1 root root 11317 6月 2 23:42 log.wb-ROCKY9-SAMBA31
-rw-r--r-- 1 root root 30397 6月 3 01:39 log.winbindd
-rw-r--r-- 1 root root 2130 6月 2 23:42 log.winbindd-idmap
drwxr-xr-x 2 root root 3 6月 2 23:35 nmbd/
[root@rocky9-samba31 ~]#
★ dnfでインストールしたSamba4の場合 ★
[root@rocky9-samba41 ~]#
[root@rocky9-samba41 ~]# testparm -sv | grep "log file"
:
log file =
:
[root@rocky9-samba41 ~]#
[root@rocky9-samba41 ~]# smbd -b | grep LOGFILEBASE
:
LOGFILEBASE: /var/log/samba
:
[root@rocky9-samba41 ~]#
[root@rocky9-samba41 ~]# ls -lF /var/log/samba
合計 3
drwx------ 4 root root 4 6月 2 21:18 cores/
-rw-r--r-- 1 root root 722 6月 3 01:39 log.nmbd
-rw-r--r-- 1 root root 1212 6月 2 21:49 log.smbd
drwx------ 2 root root 2 4月 18 22:22 old/
[root@rocky9-samba41 ~]#
(補足)TDBファイルについて
Sambaで使われるデータベースはTrivial database(TDB)です。
TDBファイルの所在やそれぞれの用途については 別記事 Appendix SambaのTDBファイル を参照
(補足)TDBファイルを操作するツールについて
Samba4では tdb-tools というパッケージをインストールする必要がある。
インターネット検索をすると samba_backup というスクリプトを使うという情報があるが、samba_backupはSamba4.10で削除されsamba-toolに置き換えられているようです。
★ ソースからインストールしたSamba3の場合★
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# ls -lF /usr/local/samba/bin/tdb*
-rwxr-xr-x 1 root root 34192 5月 28 00:23 /usr/local/samba/bin/tdbbackup*
-rwxr-xr-x 1 root root 29168 5月 28 00:23 /usr/local/samba/bin/tdbdump*
-rwxr-xr-x 1 root root 29448 5月 28 00:23 /usr/local/samba/bin/tdbrestore*
-rwxr-xr-x 1 root root 39616 5月 28 00:23 /usr/local/samba/bin/tdbtool*
[root@rocky9-samba31 ~]#
★ dnfでインストールしたSamba4の場合 ★
[root@rocky9-samba41 ~]#
[root@rocky9-samba41 ~]# rpm -qa | grep tdb-tool
tdb-tools-1.4.7-1.el9.x86_64
[root@rocky9-samba41 ~]#
[root@rocky9-samba41 ~]# rpm -qa | grep samba-tool
samba-tools-4.17.5-102.el9.x86_64
[root@rocky9-samba41 ~]#
[root@rocky9-samba41 ~]# ls -la /usr/bin/samba*
-rwxr-xr-x 1 root root 1555 4月 18 22:15 /usr/bin/samba-tool
[root@rocky9-samba41 ~]#
[root@rocky9-samba41 ~]# ls -lF /usr/bin/tdb*
-rwxr-xr-x 1 root root 15560 4月 18 14:59 /usr/bin/tdbbackup*
-rwxr-xr-x 1 root root 15544 4月 18 14:59 /usr/bin/tdbdump*
-rwxr-xr-x 1 root root 15504 4月 18 14:59 /usr/bin/tdbrestore*
-rwxr-xr-x 1 root root 28440 4月 18 14:59 /usr/bin/tdbtool*
[root@rocky9-samba41 ~]#
[root@rocky9-samba41 ~]# ls -lF /usr/bin/samba*
-rwxr-xr-x 1 root root 1555 4月 18 22:15 /usr/bin/samba-tool*
[root@rocky9-samba41 ~]#
(補足)Sambaユーザーを追加
このあとの操作のために user001 というユーザーを追加しておきます。
1. useraddコマンドでLinuxユーザーを作成する
2. pdbeditコマンドでLinuxユーザーをSambaユーザーに追加する。
※Linuxシステムにログインする必要がなければpasswdコマンドによるLinuxユーザーに対するパスワードの設定は不要。
※Sambaユーザーのパスワード変更はsmbpasswdコマンドで行う。
※pdbeditコマンド、smbpasswdコマンドについては、執筆予定の別記事 394.1 ユーザアカウントとグループアカウントの管理 参照
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# useradd user001
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# cat /etc/passwd | grep user001
user001:x:1000:1000::/home/user001:/bin/bash
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# pdbedit -a user001
new password: ********** <--- パスワードを入力
retype new password: ********** <--- パスワードを再入力
Unix username: user001
NT username:
Account Flags: [U ]
User SID: S-1-5-21-2347257257-1029847378-1678431391-1000
Primary Group SID: S-1-5-21-2347257257-1029847378-1678431391-513
Full Name:
Home Directory: \\rocky9-samba31\user001
HomeDir Drive:
Logon Script:
Profile Path: \\rocky9-samba31\user001\profile
Domain: ROCKY9-SAMBA31
Account desc:
Workstations:
Munged dial:
Logon time: 0
Logoff time: 木, 07 2月 2036 00:06:39 JST
Kickoff time: 木, 07 2月 2036 00:06:39 JST
Password last set: 日, 04 6月 2023 11:54:37 JST
Password can change: 日, 04 6月 2023 11:54:37 JST
Password must change: never
Last bad password : 0
Bad password count : 0
Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
[root@rocky9-samba31 ~]#
TDBファイルをバックアップする
~tdbbackup~
バックアップ対象のTDBを確認。
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# ls -l /usr/local/samba/private/
合計 3
-rw------- 1 root root 36864 6月 4 11:54 passdb.tdb
-rw------- 1 root root 45056 5月 31 22:30 secrets.tdb
[root@rocky9-samba31 ~]#
バックアップを取る
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# tdbbackup /usr/local/samba/private/passdb.tdb
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# ls -l /usr/local/samba/private/
合計 4
-rw------- 1 root root 36864 6月 4 11:54 passdb.tdb <--- バックアップ元
-rw------- 1 root root 32768 6月 4 12:03 passdb.tdb.bak <--- バックアップ先
-rw------- 1 root root 45056 5月 31 22:30 secrets.tdb
[root@rocky9-samba31 ~]#
-s <suffix>:文字を付加する
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# tdbbackup -s .hoge /usr/local/samba/private/passdb.tdb
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# ls -l /usr/local/samba/private/
合計 5
-rw------- 1 root root 36864 6月 4 11:54 passdb.tdb
-rw------- 1 root root 32768 6月 4 12:03 passdb.tdb.bak
-rw------- 1 root root 32768 6月 4 12:04 passdb.tdb.hoge <--- suffixで指定した文字が付加された
-rw------- 1 root root 45056 5月 31 22:30 secrets.tdb
[root@rocky9-samba31 ~]#
~tdbdump~
指定したTDBファイルを標準出力する。
リダイレクト( > )と組み合わせてテキストファイルに出力することもできる。
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# tdbdump /usr/local/samba/private/passdb.tdb > /usr/local/samba/private/passdb.tdb.dump
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# ls -l /usr/local/samba/private/
合計 7
-rw------- 1 root root 36864 6月 4 11:54 passdb.tdb
-rw------- 1 root root 32768 6月 4 12:03 passdb.tdb.bak
-rw-r--r-- 1 root root 791 6月 4 12:05 passdb.tdb.dump <--- tdbdumpで作成したテキストファイル
-rw------- 1 root root 32768 6月 4 12:04 passdb.tdb.hoge
-rw------- 1 root root 45056 5月 31 22:30 secrets.tdb
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# cat /usr/local/samba/private/passdb.tdb.dump
{
key(13) = "USER_user001\00"
data(195) = "\00\00\00\00\7F\A9T|\7F\A9T|\00\00\00\00\ED\FC{d\00\00\00\00\7F\A9T|\08\00\00\00user001\00\0F\00\00\00ROCKY9-SAMBA31\00\01\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\01\00\00\00\00\01\00\00\00\00\01\00\00\00\00\E8\03\00\00\01\02\00\00\00\00\00\00\10\00\00\00\88F\F7\EA\EE\8F\B1\17\AD\06\BD\D80\B7Xl\00\00\00\00\10\00\00\00\A8\00\15\00\00\00 \00\00\00\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\EC\04\00\00"
}
{
key(13) = "RID_000003e8\00"
data(8) = "user001\00"
}
{
key(19) = "INFO/minor_version\00"
data(4) = "\00\00\00\00"
}
{
key(9) = "NEXT_RID\00"
data(4) = "\E9\03\00\00"
}
{
key(13) = "INFO/version\00"
data(4) = "\04\00\00\00"
}
[root@rocky9-samba31 ~]#
TDBファイルを復元する
~tdbrestore~
tdbdumpで作成したテキストファイルを読み込んでTDB形式に変換する。
以下の操作例ではtdbdumpコマンドで作成したpassdb.tdb.dumpを、tdbrestoreコマンドで passdb_tdbrestore.tdb というTDBファイルに変換しています。
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# ls -l /usr/local/samba/private/
合計 7
-rw------- 1 root root 36864 6月 4 11:54 passdb.tdb
-rw------- 1 root root 32768 6月 4 12:03 passdb.tdb.bak
-rw-r--r-- 1 root root 791 6月 4 12:05 passdb.tdb.dump <--- tdbdumpで作成したテキストファイル
-rw------- 1 root root 32768 6月 4 12:04 passdb.tdb.hoge
-rw------- 1 root root 45056 5月 31 22:30 secrets.tdb
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# tdbrestore /usr/local/samba/private/passdb_tdbrestore.tdb < /usr/local/samba/private/passdb.tdb.dump
EOF
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# ls -l /usr/local/samba/private/
合計 8
-rw------- 1 root root 36864 6月 4 11:54 passdb.tdb
-rw------- 1 root root 32768 6月 4 12:03 passdb.tdb.bak
-rw-r--r-- 1 root root 791 6月 4 12:05 passdb.tdb.dump
-rw------- 1 root root 32768 6月 4 12:04 passdb.tdb.hoge
-rw-r--r-- 1 root root 32768 6月 4 12:07 passdb_tdbrestore.tdb <--- tdbrestoreで作成されたTDBファイル
-rw------- 1 root root 45056 5月 31 22:30 secrets.tdb
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# tdbbackup -v /usr/local/samba/private/passdb_tdbrestore.tdb
/usr/local/samba/private/passdb_tdbrestore.tdb : 5 records
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# tdbdump /usr/local/samba/private/passdb_tdbrestore.tdb
{
key(13) = "USER_user001\00"
data(195) = "\00\00\00\00\7F\A9T|\7F\A9T|\00\00\00\00\ED\FC{d\00\00\00\00\7F\A9T|\08\00\00\00user001\00\0F\00\00\00ROCKY9-SAMBA31\00\01\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\01\00\00\00\00\01\00\00\00\00\01\00\00\00\00\E8\03\00\00\01\02\00\00\00\00\00\00\10\00\00\00\88F\F7\EA\EE\8F\B1\17\AD\06\BD\D80\B7Xl\00\00\00\00\10\00\00\00\A8\00\15\00\00\00 \00\00\00\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\EC\04\00\00"
}
{
key(13) = "RID_000003e8\00"
data(8) = "user001\00"
}
{
key(19) = "INFO/minor_version\00"
data(4) = "\00\00\00\00"
}
{
key(9) = "NEXT_RID\00"
data(4) = "\E9\03\00\00"
}
{
key(13) = "INFO/version\00"
data(4) = "\04\00\00\00"
}
[root@rocky9-samba31 ~]#
TDBファイルの破損を検出する
~tdbbackup~
-v:整合性を確認する
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# tdbbackup -v /usr/local/samba/private/passdb.tdb
/usr/local/samba/private/passdb.tdb : 5 records
[root@rocky9-samba31 ~]#
passdb.tdbが存在していなかったり破損していた場合は、tdbbackupコマンドで作成したバックアップファイルがあればバックアップファイルからの復元を試みる。
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# ls -l /usr/local/samba/private/
合計 4
-rw------- 1 root root 32768 6月 25 23:38 passdb.tdb
-rw------- 1 root root 24576 6月 13 23:38 secrets.tdb
-rw------- 1 root root 424 6月 25 22:31 smbpasswd
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# tdbdump /usr/local/samba/private/passdb.tdb <---tdbdumpで確認する
{
key(12) = "USER_user00\00"
data(210) = "\00\00\00\00\7F\A9T|\7F\A9T|\00\00\00\00:\CC\91dS)\8Fd\7F\A9T|\07\00\00\00user00\00\0F\00\00\00ROCKY9-SAMBA31\00\01\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\01\00\00\00\00\01\00\00\00\00\01\00\00\00\00\B8\0B\00\00\01\02\00\00\10\00\00\00\E5,\ACgA\9A\9A\22\80\13?F\CA\A3 \90\10\00\00\00?\9F\8B\F5I\B4\0CY\CA\CDo\80b\0F\B4\D5\00\00\00\00\10\00\00\00\A8\00\15\00\00\00 \00\00\00\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\EC\04\00\00"
}
:
:
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# tdbbackup /usr/local/samba/private/passdb.tdb
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# ls -l /usr/local/samba/private/
合計 5
-rw------- 1 root root 32768 6月 25 23:38 passdb.tdb
-rw------- 1 root root 32768 6月 25 23:51 passdb.tdb.bak <--- バックアップされたファイル
-rw------- 1 root root 24576 6月 13 23:38 secrets.tdb
-rw------- 1 root root 424 6月 25 22:31 smbpasswd
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# echo -n > /usr/local/samba/private/passdb.tdb <--- わざと破損させる
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# ls -l /usr/local/samba/private/
合計 4
-rw------- 1 root root 0 6月 25 23:52 passdb.tdb <--- 破損したパスワードファイル
-rw------- 1 root root 32768 6月 25 23:51 passdb.tdb.bak
-rw------- 1 root root 24576 6月 13 23:38 secrets.tdb
-rw------- 1 root root 424 6月 25 22:31 smbpasswd
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# tdbdump /usr/local/samba/private/passdb.tdb <--- 破損しているので中身が見れない
Failed to open /usr/local/samba/private/passdb.tdb
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# tdbbackup -v /usr/local/samba/private/passdb.tdb
restoring /usr/local/samba/private/passdb.tdb <--- -v オプションでリストアされた
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# ls -l /usr/local/samba/private/
合計 5
-rw------- 1 root root 32768 6月 25 23:54 passdb.tdb <--- -v オプションでリストアされた
-rw------- 1 root root 32768 6月 25 23:51 passdb.tdb.bak
-rw------- 1 root root 24576 6月 13 23:38 secrets.tdb
-rw------- 1 root root 424 6月 25 22:31 smbpasswd
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# tdbdump /usr/local/samba/private/passdb.tdb <---リストアされたのでtdbdumpすることができる
{
key(12) = "USER_user00\00"
data(210) = "\00\00\00\00\7F\A9T|\7F\A9T|\00\00\00\00:\CC\91dS)\8Fd\7F\A9T|\07\00\00\00user00\00\0F\00\00\00ROCKY9-SAMBA31\00\01\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\01\00\00\00\00\01\00\00\00\00\01\00\00\00\00\B8\0B\00\00\01\02\00\00\10\00\00\00\E5,\ACgA\9A\9A\22\80\13?F\CA\A3 \90\10\00\00\00?\9F\8B\F5I\B4\0CY\CA\CDo\80b\0F\B4\D5\00\00\00\00\10\00\00\00\A8\00\15\00\00\00 \00\00\00\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\EC\04\00\00"
}
:
:
[root@rocky9-samba31 ~]#
~tdbtool~
check サブコマンドで整合性を確認することができる
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# tdbtool /usr/local/samba/private/passdb.tdb check
Database integrity is OK and has 5 records.
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# tdbtool /usr/local/samba/private/passdb.tdb
tdb>
tdb> check
Database integrity is OK and has 5 records.
tdb>
tdb> quit
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# tdbtool
tdb>
database not open
tdbtool:
create dbname : create a database
open dbname : open an existing database
transaction_start : start a transaction
transaction_commit : commit a transaction
transaction_cancel : cancel a transaction
erase : erase the database
dump : dump the database as strings
keys : dump the database keys as strings
hexkeys : dump the database keys as hex values
info : print summary info about the database
insert key data : insert a record
move key file : move a record to a destination tdb
store key data : store a record (replace)
show key : show a record by key
delete key : delete a record by key
list : print the database hash table and freelist
free : print the database freelist
check : check the integrity of an opened database
speed : perform speed tests on the database
! command : execute system command
1 | first : print the first record
n | next : print the next record
q | quit : terminate
\n : repeat 'next' command
tdb> open /usr/local/samba/private/passdb.tdb
tdb>
tdb> check
Database integrity is OK and has 5 records.
tdb>
tdb> quit
[root@rocky9-samba31 ~]#
TDBファイルの内容を一覧表示する(すべてのレコード)
~tdbdump~
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# tdbdump /usr/local/samba/private/passdb.tdb
{
key(13) = "USER_user001\00"
data(195) = "\00\00\00\00\7F\A9T|\7F\A9T|\00\00\00\00\ED\FC{d\00\00\00\00\7F\A9T|\08\00\00\00user001\00\0F\00\00\00ROCKY9-SAMBA31\00\01\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\01\00\00\00\00\01\00\00\00\00\01\00\00\00\00\E8\03\00\00\01\02\00\00\00\00\00\00\10\00\00\00\88F\F7\EA\EE\8F\B1\17\AD\06\BD\D80\B7Xl\00\00\00\00\10\00\00\00\A8\00\15\00\00\00 \00\00\00\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\EC\04\00\00"
}
{
key(13) = "RID_000003e8\00"
data(8) = "user001\00"
}
{
key(19) = "INFO/minor_version\00"
data(4) = "\00\00\00\00"
}
{
key(9) = "NEXT_RID\00"
data(4) = "\E9\03\00\00"
}
{
key(13) = "INFO/version\00"
data(4) = "\04\00\00\00"
}
[root@rocky9-samba31 ~]#
~tdbtool~
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# tdbtool /usr/local/samba/private/passdb.tdb dump
key 13 bytes
USER_user001
data 195 bytes
[000] 00 00 00 00 7F A9 54 7C 7F A9 54 7C 00 00 00 00 ......T| ..T|...
[010] ED FC 7B 64 00 00 00 00 7F A9 54 7C 08 00 00 00 ..{d... ..T|...
[020] 75 73 65 72 30 30 31 00 0F 00 00 00 52 4F 43 4B user001 ....ROCK
[030] 59 39 2D 53 41 4D 42 41 33 31 00 01 00 00 00 00 Y9-SAMBA 31.....
[040] 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ....... .......
[050] 00 00 00 00 00 01 00 00 00 00 01 00 00 00 00 01 ....... ........
[060] 00 00 00 00 01 00 00 00 00 E8 03 00 00 01 02 00 ....... .......
[070] 00 00 00 00 00 10 00 00 00 88 46 F7 EA EE 8F B1 ....... ..F.....
[080] 17 AD 06 BD D8 30 B7 58 6C 00 00 00 00 10 00 00 .....0.X l......
[090] 00 A8 00 15 00 00 00 20 00 00 00 FF FF FF FF FF ....... ........
[0A0] FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ........ ........
[0B0] 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 EC ....... ........
[0C0] 04 00 00 ..
key 13 bytes
RID_000003e8
data 8 bytes
[000] 75 73 65 72 30 30 31 00 user001
key 19 bytes
INFO/minor_version
data 4 bytes
[000] 00 00 00 00 ...
key 9 bytes
NEXT_RID
data 4 bytes
[000] E9 03 00 00 ...
key 13 bytes
INFO/version
data 4 bytes
[000] 04 00 00 00 ...
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# tdbtool /usr/local/samba/private/passdb.tdb
tdb>
tdb> dump
key 13 bytes
USER_user001
data 195 bytes
[000] 00 00 00 00 7F A9 54 7C 7F A9 54 7C 00 00 00 00 ......T| ..T|...
[010] ED FC 7B 64 00 00 00 00 7F A9 54 7C 08 00 00 00 ..{d... ..T|...
[020] 75 73 65 72 30 30 31 00 0F 00 00 00 52 4F 43 4B user001 ....ROCK
[030] 59 39 2D 53 41 4D 42 41 33 31 00 01 00 00 00 00 Y9-SAMBA 31.....
[040] 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ....... .......
[050] 00 00 00 00 00 01 00 00 00 00 01 00 00 00 00 01 ....... ........
[060] 00 00 00 00 01 00 00 00 00 E8 03 00 00 01 02 00 ....... .......
[070] 00 00 00 00 00 10 00 00 00 88 46 F7 EA EE 8F B1 ....... ..F.....
[080] 17 AD 06 BD D8 30 B7 58 6C 00 00 00 00 10 00 00 .....0.X l......
[090] 00 A8 00 15 00 00 00 20 00 00 00 FF FF FF FF FF ....... ........
[0A0] FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ........ ........
[0B0] 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 EC ....... ........
[0C0] 04 00 00 ..
key 13 bytes
RID_000003e8
data 8 bytes
[000] 75 73 65 72 30 30 31 00 user001
key 19 bytes
INFO/minor_version
data 4 bytes
[000] 00 00 00 00 ...
key 9 bytes
NEXT_RID
data 4 bytes
[000] E9 03 00 00 ...
key 13 bytes
INFO/version
data 4 bytes
[000] 04 00 00 00 ...
tdb>
tdb> quit
[root@rocky9-samba31 ~]#
TDBファイルの内容を一覧表示する(特定のレコード)
以下の操作例では user001 というユーザーの情報のみ表示させています。
~tdbtool~
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# tdbtool /usr/local/samba/private/passdb.tdb show "USER_user001\00"
key 13 bytes
USER_user001
data 195 bytes
[000] 00 00 00 00 7F A9 54 7C 7F A9 54 7C 00 00 00 00 ......T| ..T|...
[010] ED FC 7B 64 00 00 00 00 7F A9 54 7C 08 00 00 00 ..{d... ..T|...
[020] 75 73 65 72 30 30 31 00 0F 00 00 00 52 4F 43 4B user001 ....ROCK
[030] 59 39 2D 53 41 4D 42 41 33 31 00 01 00 00 00 00 Y9-SAMBA 31.....
[040] 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ....... .......
[050] 00 00 00 00 00 01 00 00 00 00 01 00 00 00 00 01 ....... ........
[060] 00 00 00 00 01 00 00 00 00 E8 03 00 00 01 02 00 ....... .......
[070] 00 00 00 00 00 10 00 00 00 88 46 F7 EA EE 8F B1 ....... ..F.....
[080] 17 AD 06 BD D8 30 B7 58 6C 00 00 00 00 10 00 00 .....0.X l......
[090] 00 A8 00 15 00 00 00 20 00 00 00 FF FF FF FF FF ....... ........
[0A0] FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ........ ........
[0B0] 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 EC ....... ........
[0C0] 04 00 00 ..
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# tdbtool /usr/local/samba/private/passdb.tdb
tdb>
tdb> show USER_user001\00
key 13 bytes
USER_user001
data 195 bytes
[000] 00 00 00 00 7F A9 54 7C 7F A9 54 7C 00 00 00 00 ......T| ..T|...
[010] ED FC 7B 64 00 00 00 00 7F A9 54 7C 08 00 00 00 ..{d... ..T|...
[020] 75 73 65 72 30 30 31 00 0F 00 00 00 52 4F 43 4B user001 ....ROCK
[030] 59 39 2D 53 41 4D 42 41 33 31 00 01 00 00 00 00 Y9-SAMBA 31.....
[040] 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ....... .......
[050] 00 00 00 00 00 01 00 00 00 00 01 00 00 00 00 01 ....... ........
[060] 00 00 00 00 01 00 00 00 00 E8 03 00 00 01 02 00 ....... .......
[070] 00 00 00 00 00 10 00 00 00 88 46 F7 EA EE 8F B1 ....... ..F.....
[080] 17 AD 06 BD D8 30 B7 58 6C 00 00 00 00 10 00 00 .....0.X l......
[090] 00 A8 00 15 00 00 00 20 00 00 00 FF FF FF FF FF ....... ........
[0A0] FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ........ ........
[0B0] 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 EC ....... ........
[0C0] 04 00 00 ..
tdb>
tdb>
tdb> quit
[root@rocky9-samba31 ~]#
TDBファイルの内容を編集する
~tdbtoolによるDB操作~
create:データベース作成
※tdbtoolの対話モードに入ってからでないと作成できない。
★ tdbtoolの対話モードからTDBファイルを作成する ★
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# tdbtool
tdb>
tdb> create /usr/local/samba/private/hogehoge.tdb
tdb>
tdb> quite
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# ls -l /usr/local/samba/private/
合計 9
-rw------- 1 root root 696 6月 4 13:24 hogehoge.tdb <--- 作成されたTDBファイル
-rw------- 1 root root 36864 6月 4 11:54 passdb.tdb
-rw------- 1 root root 32768 6月 4 13:14 passdb.tdb.bak
-rw-r--r-- 1 root root 791 6月 4 12:05 passdb.tdb.dump
-rw------- 1 root root 32768 6月 4 12:04 passdb.tdb.hoge
-rw-r--r-- 1 root root 32768 6月 4 12:07 passdb_tdbrestore.tdb
-rw------- 1 root root 45056 5月 31 22:30 secrets.tdb
[root@rocky9-samba31 ~]#
open:データベースを開く
★ tdbtoolの対話モードからTDBファイルを開く ★
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# tdbtool
tdb>
tdb> open /usr/local/samba/private/passdb.tdb.bak
tdb>
tdb> info
Size of file/data: 32768/282
Number of records: 5
Smallest/average/largest keys: 9/13/19
Smallest/average/largest data: 4/43/195
Smallest/average/largest padding: 7/18/56
Number of dead records: 0
Smallest/average/largest dead records: 0/0/0
Number of free records: 1
Smallest/average/largest free records: 31552/31552/31552
Number of hash chains: 131
Smallest/average/largest hash chains: 0/0/1
Number of uncoalesced records: 0
Smallest/average/largest uncoalesced runs: 0/0/0
Percentage keys/data/padding/free/dead/rechdrs&tailers/hashes: 0/1/0/96/0/1/2
tdb>
tdb> quite
[root@rocky9-samba31 ~]#
★ tdbtoolの引数としてTDBファイルを指定する ★
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# tdbtool /usr/local/samba/private/passdb.tdb.bak
tdb>
tdb> info
Size of file/data: 32768/282
Number of records: 5
Smallest/average/largest keys: 9/13/19
Smallest/average/largest data: 4/43/195
Smallest/average/largest padding: 7/18/56
Number of dead records: 0
Smallest/average/largest dead records: 0/0/0
Number of free records: 1
Smallest/average/largest free records: 31552/31552/31552
Number of hash chains: 131
Smallest/average/largest hash chains: 0/0/1
Number of uncoalesced records: 0
Smallest/average/largest uncoalesced runs: 0/0/0
Percentage keys/data/padding/free/dead/rechdrs&tailers/hashes: 0/1/0/96/0/1/2
tdb>
tdb> quite
[root@rocky9-samba31 ~]#
erase:データベース内のレコードをすべて削除
以下の操作例ではレコードを3件追加して、それをすべて削除しています。
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# tdbtool /usr/local/samba/private/hogehoge.tdb
tdb>
tdb> info
Size of file/data: 8192/0
Number of records: 0 <--- レコードが0件になっている
Smallest/average/largest keys: 0/0/0
Smallest/average/largest data: 0/0/0
Smallest/average/largest padding: 0/0/0
Number of dead records: 3
Smallest/average/largest dead records: 32/32/32
Number of free records: 1
Smallest/average/largest free records: 7304/7304/7304
Number of hash chains: 131
Smallest/average/largest hash chains: 0/0/1
Number of uncoalesced records: 0
Smallest/average/largest uncoalesced runs: 0/0/0
Percentage keys/data/padding/free/dead/rechdrs&tailers/hashes: 0/0/0/89/1/1/6
tdb>
tdb> insert HOGEHOGE01 fugafuga01 <--- レコードを追加
tdb> insert HOGEHOGE02 fugafuga02 <--- レコードを追加
tdb> insert HOGEHOGE03 fugafuga03 <--- レコードを追加
tdb>
tdb> info
Size of file/data: 8192/60
Number of records: 3 <--- レコードが3件になっている
Smallest/average/largest keys: 10/10/10
Smallest/average/largest data: 10/10/10
Smallest/average/largest padding: 12/12/12
Number of dead records: 3
Smallest/average/largest dead records: 32/32/32
Number of free records: 1
Smallest/average/largest free records: 7136/7136/7136
Number of hash chains: 131
Smallest/average/largest hash chains: 0/0/1
Number of uncoalesced records: 0
Smallest/average/largest uncoalesced runs: 0/0/0
Percentage keys/data/padding/free/dead/rechdrs&tailers/hashes: 0/0/0/87/1/2/6
tdb>
tdb> dump <--- dumpすると登録された3件のレコードが確認できる
key 10 bytes
HOGEHOGE03
data 10 bytes
[000] 66 75 67 61 66 75 67 61 30 33 fugafuga 03
key 10 bytes
HOGEHOGE01
data 10 bytes
[000] 66 75 67 61 66 75 67 61 30 31 fugafuga 01
key 10 bytes
HOGEHOGE02
data 10 bytes
[000] 66 75 67 61 66 75 67 61 30 32 fugafuga 02
tdb>
tdb> erase <--- すべてのレコードを削除する
tdb>
tdb> info
Size of file/data: 8192/0
Number of records: 0 <--- レコードが0件になっている
Smallest/average/largest keys: 0/0/0
Smallest/average/largest data: 0/0/0
Smallest/average/largest padding: 0/0/0
Number of dead records: 3
Smallest/average/largest dead records: 32/32/32
Number of free records: 3
Smallest/average/largest free records: 32/2418/7136
Number of hash chains: 131
Smallest/average/largest hash chains: 0/0/1
Number of uncoalesced records: 2
Smallest/average/largest uncoalesced runs: 2/2/2
Percentage keys/data/padding/free/dead/rechdrs&tailers/hashes: 0/0/0/89/1/2/6
tdb>
tdb> dump <--- dumpしても何も表示されない(=レコードがない)
tdb>
tdb> q
[root@rocky9-samba31 ~]#
~tdbtoolによるレコード操作~
show:レコードを表示
tdb> show USER_user001\00
key 13 bytes
USER_user001
data 195 bytes
[000] 00 00 00 00 7F A9 54 7C 7F A9 54 7C 00 00 00 00 ......T| ..T|...
[010] ED FC 7B 64 00 00 00 00 7F A9 54 7C 08 00 00 00 ..{d... ..T|...
[020] 75 73 65 72 30 30 31 00 0F 00 00 00 52 4F 43 4B user001 ....ROCK
[030] 59 39 2D 53 41 4D 42 41 33 31 00 01 00 00 00 00 Y9-SAMBA 31.....
[040] 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ....... .......
[050] 00 00 00 00 00 01 00 00 00 00 01 00 00 00 00 01 ....... ........
[060] 00 00 00 00 01 00 00 00 00 E8 03 00 00 01 02 00 ....... .......
[070] 00 00 00 00 00 10 00 00 00 88 46 F7 EA EE 8F B1 ....... ..F.....
[080] 17 AD 06 BD D8 30 B7 58 6C 00 00 00 00 10 00 00 .....0.X l......
[090] 00 A8 00 15 00 00 00 20 00 00 00 FF FF FF FF FF ....... ........
[0A0] FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ........ ........
[0B0] 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 EC ....... ........
[0C0] 04 00 00 ..
tdb>
insert:レコードの追加
tdb>
tdb> insert HOGEHOGE hogehoge
tdb>
tdb> show HOGEHOGE
key 8 bytes
HOGEHOGE
data 8 bytes
[000] 66 75 67 61 66 75 67 61 hogehoge
tdb>
tdb> quite
store:レコードの置換
tdb>
tdb> show HOGEHOGE
key 8 bytes
HOGEHOGE
data 8 bytes
[000] 66 75 67 61 66 75 67 61 hogehoge
tdb>
tdb> store HOGEHOGE HOGEHOGE2
Storing key:
key 8 bytes
HOGEHOGE
data 9 bytes
[000] 48 4F 47 45 48 4F 47 45 32 HOGEHOGE 2
tdb>
delete:レコードの削除
tdb>
tdb> delete HOGEHOGE
tdb>
tdb> show HOGEHOGE
fetch failed
tdb>
move:レコードの移動
以下の操作例では、hogehoge.tdbとfugafuga.tdbを作成し、それぞれに3件と5件のレコードを追加したのち、レコードの移動の様子を確認しています。 動作自体は "移動" ではなく "コピー" のようです。
tdb>
★ TDBを新規作成 ★
tdb> create /usr/local/samba/private/hogehoge.tdb
tdb> create /usr/local/samba/private/fugafuga.tdb
tdb>
★ hogehoge.tdbにレコードを追加 ★
tdb> open /usr/local/samba/private/hogehoge.tdb
tdb>
tdb> insert HOGEHOGE01 hogehoge01
tdb> insert HOGEHOGE02 hogehoge02
tdb> insert HOGEHOGE03 hogehoge03
tdb>
tdb> info /usr/local/samba/private/fugafuga.tdb
Size of file/data: 8192/60
Number of records: 3 <--- レコード3件
:
tdb>
tdb> dump
key 10 bytes
HOGEHOGE03
data 10 bytes
[000] 68 6F 67 65 68 6F 67 65 30 33 hogehoge 03
key 10 bytes
HOGEHOGE01
data 10 bytes
[000] 68 6F 67 65 68 6F 67 65 30 31 hogehoge 01
key 10 bytes
HOGEHOGE02
data 10 bytes
[000] 68 6F 67 65 68 6F 67 65 30 32 hogehoge 02
tdb>
★ fugafuga.tdbにレコードを追加 ★
tdb> open /usr/local/samba/private/fugafuga.tdb
tdb>
tdb> insert FUGAFUGA01 fugafuga01
tdb> insert FUGAFUGA02 fugafuga02
tdb> insert FUGAFUGA03 fugafuga03
tdb> insert FUGAFUGA04 fugafuga04
tdb> insert FUGAFUGA05 fugafuga05
tdb>
tdb> info
Size of file/data: 8192/100
Number of records: 5 <--- レコード5件
:
tdb>
tdb> dump
key 10 bytes
FUGAFUGA05
data 10 bytes
[000] 66 75 67 61 66 75 67 61 30 35 fugafuga 05
key 10 bytes
FUGAFUGA03
data 10 bytes
[000] 66 75 67 61 66 75 67 61 30 33 fugafuga 03
key 10 bytes
FUGAFUGA01
data 10 bytes
[000] 66 75 67 61 66 75 67 61 30 31 fugafuga 01
key 10 bytes
FUGAFUGA04
data 10 bytes
[000] 66 75 67 61 66 75 67 61 30 34 fugafuga 04
key 10 bytes
FUGAFUGA02
data 10 bytes
[000] 66 75 67 61 66 75 67 61 30 32 fugafuga 02
tdb>
★ fugafuga.tdb の FUGAFUGA05 を hogehoge.tdb に移動
tdb>
tdb> open /usr/local/samba/private/fugafuga.tdb
tdb>
tdb> dump
key 10 bytes
FUGAFUGA05
data 10 bytes
[000] 66 75 67 61 66 75 67 61 30 35 fugafuga 05
key 10 bytes
FUGAFUGA03
data 10 bytes
[000] 66 75 67 61 66 75 67 61 30 33 fugafuga 03
key 10 bytes
FUGAFUGA01
data 10 bytes
[000] 66 75 67 61 66 75 67 61 30 31 fugafuga 01
key 10 bytes
FUGAFUGA04
data 10 bytes
[000] 66 75 67 61 66 75 67 61 30 34 fugafuga 04
key 10 bytes
FUGAFUGA02
data 10 bytes
[000] 66 75 67 61 66 75 67 61 30 32 fugafuga 02
tdb>
tdb> move FUGAFUGA05 /usr/local/samba/private/hogehoge.tdb <--- 移動する
key 10 bytes
FUGAFUGA05
data 10 bytes
[000] 66 75 67 61 66 75 67 61 30 35 fugafuga 05
record moved
tdb>
tdb> dump
key 10 bytes
FUGAFUGA05
data 10 bytes
[000] 66 75 67 61 66 75 67 61 30 35 fugafuga 05 <--- moveしても消えてしまうわけではない
key 10 bytes
FUGAFUGA03
data 10 bytes
[000] 66 75 67 61 66 75 67 61 30 33 fugafuga 03
key 10 bytes
FUGAFUGA01
data 10 bytes
[000] 66 75 67 61 66 75 67 61 30 31 fugafuga 01
key 10 bytes
FUGAFUGA04
data 10 bytes
[000] 66 75 67 61 66 75 67 61 30 34 fugafuga 04
key 10 bytes
FUGAFUGA02
data 10 bytes
[000] 66 75 67 61 66 75 67 61 30 32 fugafuga 02
tdb>
★ hogehoge.tdb に FUGAFUGA05 があるかを確認する★
tdb>
tdb> open /usr/local/samba/private/hogehoge.tdb
tdb>
tdb> info
Size of file/data: 8192/80
Number of records: 4 <--- レコードが3件から4件に増えている
:
tdb>
tdb> dump
key 10 bytes
FUGAFUGA05
data 10 bytes
[000] 66 75 67 61 66 75 67 61 30 35 fugafuga 05 <--- fugafuga.tdbからコピーされた
key 10 bytes
HOGEHOGE03
data 10 bytes
[000] 68 6F 67 65 68 6F 67 65 30 33 hogehoge 03
key 10 bytes
HOGEHOGE01
data 10 bytes
[000] 68 6F 67 65 68 6F 67 65 30 31 hogehoge 01
key 10 bytes
HOGEHOGE02
data 10 bytes
[000] 68 6F 67 65 68 6F 67 65 30 32 hogehoge 02
tdb>