見出し画像

392.3 Sambaの保守

主題392:Sambaの基礎
392.3 Sambaの保守

LinuC300の試験範囲である主題390~397まであるうちの「主題392:Sambaの基礎」から「392.3 Sambaの保守」についてのまとめ

  • 重要度:2

  • 説明:
    Sambaのインストールに含まれている各種ツールおよびユーティリティについて知っていること。

  • 主要な知識範囲
    - 稼働中のSamba デーモンの監視および操作
    - Samba設定および状態に関するデータの定期的なバックアップを行う

  • 重要なファイル、用語、ユーティリティ:
    - smbcontrol
    - smbstatus
    - tdbbackup


(補足)
Sambaユーザーは事前に作成されています。
(別記事 Appendix (準備その4)ユーザーを作成する 参照)


稼働中のSamba デーモンの監視および操作

~smbcontrolコマンド~
smbcontrolコマンドはSambaプロセス(smbd、nmbd、winbindd)に対してメッセージを送信するコマンドである。
all を指定するとすべてのSambaプロセスにまとめてメッセージを送信できる。
メッセージには debug、ping、reload-config、shutdown などがある。

debug:デバッグレベルを変更する
debuglevel:デバッグレベルを確認する
0~10 の範囲で一時的に変更できる。
デバッグクラスを指定しなかった場合はすべてのデバッグクラスが変更される。
特定のデバッグクラスのみ変えることもできる。

★ デバッグレベルを確認 ★
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# smbcontrol smbd debuglevel
PID 3325: all:2 tdb:2 printdrivers:2 lanman:2 smb:2 rpc_parse:2 rpc_srv:2 rpc_cli:2 passdb:2 sam:2 auth:2 winbind:2 vfs:2 idmap:2 quota:2 acls:2 locking:2 msdfs:2 dmapi:2 registry:2
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# smbcontrol nmbd debuglevel
PID 3327: all:2 tdb:2 printdrivers:2 lanman:2 smb:2 rpc_parse:2 rpc_srv:2 rpc_cli:2 passdb:2 sam:2 auth:2 winbind:2 vfs:2 idmap:2 quota:2 acls:2 locking:2 msdfs:2 dmapi:2 registry:2
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# smbcontrol winbindd debuglevel
PID 3322: all:2 tdb:2 printdrivers:2 lanman:2 smb:2 rpc_parse:2 rpc_srv:2 rpc_cli:2 passdb:2 sam:2 auth:2 winbind:2 vfs:2 idmap:2 quota:2 acls:2 locking:2 msdfs:2 dmapi:2 registry:2
[root@rocky9-samba31 ~]#

★ smbdのすべてのデバッグクラスのデバッグレベルを変更する ★
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# smbcontrol smbd debug 5
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# smbcontrol smbd debuglevel
PID 3325: all:5 tdb:5 printdrivers:5 lanman:5 smb:5 rpc_parse:5 rpc_srv:5 rpc_cli:5 passdb:5 sam:5 auth:5 winbind:5 vfs:5 idmap:5 quota:5 acls:5 locking:5 msdfs:5 dmapi:5 registry:5
[root@rocky9-samba31 ~]#

★ smbdの特定のデバッグクラスだけデバッグレベルを変更する ★
tdbクラスだけ 10 にして、それ以外のクラスは 2 とする
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# smbcontrol smbd debug "2 tdb:10"
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# smbcontrol smbd debuglevel
PID 3325: all:2 tdb:10 printdrivers:2 lanman:2 smb:2 rpc_parse:2 rpc_srv:2 rpc_cli:2 passdb:2 sam:2 auth:2 winbind:2 vfs:2 idmap:2 quota:2 acls:2 locking:2 msdfs:2 dmapi:2 registry:2
[root@rocky9-samba31 ~]#

ping:プロセスが動作しているか確認する

★ smbd ★
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# smbcontrol smbd ping
PONG from pid 673
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# ps -aef | grep 673
root         673       1  0 21:11 ?        00:00:00 /usr/local/samba/sbin/smbd -D
root         677     673  0 21:11 ?        00:00:00 /usr/local/samba/sbin/smbd -D
[root@rocky9-samba31 ~]#

★ nmbd ★
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# smbcontrol nmbd ping
PONG from pid 675
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# ps -aef | grep 675
root         675       1  0 21:11 ?        00:00:00 /usr/local/samba/sbin/nmbd -D
[root@rocky9-samba31 ~]#

★ winbindd ★
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# smbcontrol winbindd ping
PONG from pid 713
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# ps -aef | grep 713
root         713       1  0 21:20 ?        00:00:00 /usr/local/samba/sbin/winbindd -D
root         714     713  0 21:20 ?        00:00:00 /usr/local/samba/sbin/winbindd -D
[root@rocky9-samba31 ~]#

★ all ★
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# smbcontrol all ping
PONG from pid 675
PONG from pid 713
PONG from pid 677
PONG from pid 673
[root@rocky9-samba31 ~]#

reload-config:プロセスを停止することなく設定を再読み込みする

[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# smbcontrol smbd reload-config
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# smbcontrol nmbd reload-config
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# smbcontrol winbindd reload-config
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# smbcontrol all reload-config
[root@rocky9-samba31 ~]#

shutdown:プロセスを停止させる

[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# smbcontrol all ping
PONG from pid 675
PONG from pid 713
PONG from pid 677
PONG from pid 673
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# smbcontrol all shutdown
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# smbcontrol all ping
No replies received
[root@rocky9-samba31 ~]#

~smbstatusコマンド~
Sambaサーバーの状態を確認することができる。

-b | --brief:簡単な出力を表示する。

[root@rocky9-samba31 ~]# smbstatus  -b

Samba version 3.6.25
PID     Username      Group         Machine
-------------------------------------------------------------------
349       user00        user00        sakuzo-win10   (192.168.56.1)
[root@rocky9-samba31 ~]#

-d | --debuglevel=level:デバッグレベルを変更する。
smb.confの log level の指定よりも優先される。

[root@rocky9-samba31 ~]# smbstatus  -d

Samba version 3.6.25
PID     Username      Group         Machine
-------------------------------------------------------------------
349       user00        user00        sakuzo-win10   (192.168.56.1)

Service      pid     machine       Connected at
-------------------------------------------------------
IPC$         349   sakuzo-win10    Mon Jun  5 22:29:46 2023
share1       349   sakuzo-win10    Mon Jun  5 22:29:46 2023

Locked files:
Pid          Uid        DenyMode   Access      R/W        Oplock           SharePath   Name   Time
--------------------------------------------------------------------------------------------------
349          1000       DENY_NONE  0x81        RDONLY     NONE             /var/samba_share/share1   .   Mon Jun  5 22:29:47 2023
349          1000       DENY_NONE  0x81        RDONLY     NONE             /var/samba_share/share1   .   Mon Jun  5 22:29:47 2023

[root@rocky9-samba31 ~]#

-j | --json:(Samba4のみ)より詳細な情報を、人が読みやすい形の代わりに JSON 形式で出力する。

-L | --locks:ロックのリストだけを表示する。

[root@rocky9-samba31 ~]# smbstatus -L
Locked files:
Pid          Uid        DenyMode   Access      R/W        Oplock           SharePath   Name   Time
--------------------------------------------------------------------------------------------------
349          1000       DENY_NONE  0x81        RDONLY     NONE             /var/samba_share/share1   .   Mon Jun  5 22:29:47 2023
349          1000       DENY_NONE  0x81        RDONLY     NONE             /var/samba_share/share1   .   Mon Jun  5 22:29:47 2023

[root@rocky9-samba31 ~]#

-p | --processes :プロセスの一覧を表示する。

[root@rocky9-samba31 ~]# smbstatus -p

Samba version 3.6.25
PID     Username      Group         Machine
-------------------------------------------------------------------
349       user00        user00        sakuzo-win10   (192.168.56.1)
[root@rocky9-samba31 ~]#

-S | --shares:接続の一覧だけを表示する。

[root@rocky9-samba31 ~]# smbstatus  -S

Service      pid     machine       Connected at
-------------------------------------------------------
IPC$         349   sakuzo-win10    Mon Jun  5 22:29:46 2023
share1       349   sakuzo-win10    Mon Jun  5 22:29:46 2023

[root@rocky9-samba31 ~]#

--debug-stdout:(Samba4のみ)デバッグ出力を標準出力にリダイレクトする

-u | --user=<username>:username で 指定したユーザーに関する情報だけを表示する。

[root@rocky9-samba31 ~]# smbstatus -u user00

Samba version 3.6.25
PID     Username      Group         Machine
-------------------------------------------------------------------
349       user00        user00        sakuzo-win10   (192.168.56.1)

Service      pid     machine       Connected at
-------------------------------------------------------
IPC$         349   sakuzo-win10    Mon Jun  5 22:29:46 2023
share1       349   sakuzo-win10    Mon Jun  5 22:29:46 2023

Locked files:
Pid          Uid        DenyMode   Access      R/W        Oplock           SharePath   Name   Time
--------------------------------------------------------------------------------------------------
349          1000       DENY_NONE  0x81        RDONLY     NONE             /var/samba_share/share1   .   Mon Jun  5 22:29:47 2023
349          1000       DENY_NONE  0x81        RDONLY     NONE             /var/samba_share/share1   .   Mon Jun  5 22:29:47 2023

[root@rocky9-samba31 ~]#

-v | --verbose:詳細な出力を表示する。

[root@rocky9-samba31 ~]# smbstatus -v
using configfile = /usr/local/samba/lib/smb.conf

Samba version 3.6.25
PID     Username      Group         Machine
-------------------------------------------------------------------
349       user00        user00        sakuzo-win10   (192.168.56.1)
Opened /usr/local/samba/var/locks/connections.tdb

Service      pid     machine       Connected at
-------------------------------------------------------
IPC$         349   sakuzo-win10    Mon Jun  5 22:29:46 2023
share1       349   sakuzo-win10    Mon Jun  5 22:29:46 2023

Locked files:
Pid          Uid        DenyMode   Access      R/W        Oplock           SharePath   Name   Time
--------------------------------------------------------------------------------------------------
349          1000       DENY_NONE  0x81        RDONLY     NONE             /var/samba_share/share1   .   Mon Jun  5 22:29:47 2023
349          1000       DENY_NONE  0x81        RDONLY     NONE             /var/samba_share/share1   .   Mon Jun  5 22:29:47 2023

[root@rocky9-samba31 ~]#

Samba設定および状態に関するデータの定期的なバックアップを行う

~tdbbackup~
※Samba4では tdb-tools というパッケージをインストールする必要がある。
※samba_backupを使うという情報もあるがSamba4.10で削除されsamba-toolに置き換えられているようです。

★ Samba3の場合★
[root@rocky9-samba31 ~]# 
[root@rocky9-samba31 ~]# tdbbackup
Usage: tdbbackup [options] <fname...>

   -h            this help message
   -s suffix     set the backup suffix
   -v            verify mode (restore if corrupt)
   -n hashsize   set the new hash size for the backup
[root@rocky9-samba31 ~]#

★ Samba4の場合 ★
[root@rocky9-samba41 ~]#
[root@rocky9-samba41 ~]# dnf install tdb-tools
[root@rocky9-samba41 ~]#
[root@rocky9-samba41 ~]# tdbbackup
Usage: tdbbackup [options] <fname...>

   -h            this help message
   -s suffix     set the backup suffix
   -v            verify mode (restore if corrupt)
   -n hashsize   set the new hash size for the backup
   -l            open without locking to back up mutex dbs
   -r            open with read only locking
[root@rocky9-samba41 ~]#

バックアップを取る

[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# smbd -b | grep PRIVATE
   PRIVATE_DIR: /usr/local/samba/private
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# ls -l /usr/local/samba/private/
合計 3
-rw------- 1 root root 16384  526 23:09 passdb.tdb
-rw------- 1 root root 45056  531 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 16384  526 23:09 passdb.tdb <--- バックアップ元
-rw------- 1 root root  8192  63 00:58 passdb.tdb.bak <--- バックアップ先
-rw------- 1 root root 45056  531 22:30 secrets.tdb
[root@rocky9-samba31 ~]#

-v:整合性を確認する

[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# tdbbackup -v /usr/local/samba/private/passdb.tdb.bak
/usr/local/samba/private/passdb.tdb.bak : 3 records
[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 16384  526 23:09 passdb.tdb
-rw------- 1 root root  8192  63 00:58 passdb.tdb.bak
-rw------- 1 root root  8192  63 01:02 passdb.tdb.hoge <--- suffixで指定した文字が付加された 
-rw------- 1 root root 45056  531 22:30 secrets.tdb
[root@rocky9-samba31 ~]#

~各種TDBファイル~
TDBファイルはユーザー情報だけでなく様々な情報を格納するのに利用されている。

[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# find /usr/local/samba/ -type f -name "*.tdb"
/usr/local/samba/var/locks/mutex.tdb
/usr/local/samba/var/locks/gencache_notrans.tdb
/usr/local/samba/var/locks/sessionid.tdb
/usr/local/samba/var/locks/locking.tdb
/usr/local/samba/var/locks/notify.tdb
/usr/local/samba/var/locks/brlock.tdb
/usr/local/samba/var/locks/account_policy.tdb
/usr/local/samba/var/locks/printing/printers.tdb
/usr/local/samba/var/locks/messages.tdb
/usr/local/samba/var/locks/winbindd_cache.tdb
/usr/local/samba/var/locks/gencache.tdb
/usr/local/samba/var/locks/registry.tdb
/usr/local/samba/var/locks/serverid.tdb
/usr/local/samba/var/locks/printer_list.tdb
/usr/local/samba/var/locks/notify_onelevel.tdb
/usr/local/samba/var/locks/group_mapping.tdb
/usr/local/samba/var/locks/connections.tdb
/usr/local/samba/var/locks/netsamlogon_cache.tdb
/usr/local/samba/var/locks/share_info.tdb
/usr/local/samba/private/passdb.tdb
/usr/local/samba/private/secrets.tdb
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# testparm -sv | grep "/usr/local/samba/var/locks"
               :
        lock directory = /usr/local/samba/var/locks
        state directory = /usr/local/samba/var/locks
        cache directory = /usr/local/samba/var/locks
        pid directory = /usr/local/samba/var/locks
               :
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# testparm -sv | grep "/usr/local/samba/private"private dir = /usr/local/samba/private
               :
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# smbd -b | grep DIR
               :
   LOCKDIR: /usr/local/samba/var/locks
   STATEDIR: /usr/local/samba/var/locks
   CACHEDIR: /usr/local/samba/var/locks
   PIDDIR: /usr/local/samba/var/locks
   PRIVATE_DIR: /usr/local/samba/private
               :
[root@rocky9-samba31 ~]#

参考文献


この記事が気に入ったらサポートをしてみませんか?