isLandcenter 非番中

ブログトップ | ログイン

SUSE Linux から Samba/Windows 共有をマウントしてバックアップ(openSUSE Leap15/SLE15)

ここでは、SUSE Linux (openSUSE Leap15/SUSE Linux Enterprise 15)から、Windows Share (Windows 共有)や、Samba をマウントしてバックアップする方法について説明しています。

ニップンのランサムウェア被害の様に、わずかなセキュリティリスクを突いた「その気に情熱を持つヒトビト」から防御を高めるためにも、若干のコストや手間がかかってもシステムの多様性は必要だと思います。

ニップンランサムウェア被害から私達にできること

マウントするには mount か mount.cifs コマンドを使います。

バックアップは cp や rsync, tar などの色々なコマンドが使えます。

通常は # mount -o user=myname,password=mypassword //Samba_or_Windows/share /MountPoint (/ です \ ではありません)でマウントできるのですが、vers=n.n でSMB のバージョン指定をしなければならない場合があります。

※ Windows サーバーのバックアップなどで、シェルスクリプトで自動化するには user=myname,password=mypasswd とパスワードを記述しなければなりません。あるいは /etc/fstab にも記述して、パーマネントマウントさせる事もできる様ですが、ここでは割愛します。

-- openSUSE Leap 15.2 の場合

mount.cifs で Windows10 の共有をマウント

opensuse152:~ # mkdir /mnt/cifs
opensuse152:~ # mount.cifs -o user=myname //192.168.1.33/D /mnt/cifs
Password for myname@//192.168.1.33/D: ********
opensuse152:~ # ls /mnt/cifs
$RECYCLE.BIN System Volume Information download tmp
.DS_Store Downloads apps pagefile.sys
opensuse152:~ #
opensuse152:~ # umount /mnt/cifs


mount コマンドで SMBv2 でsamba に接続する場合

opensuse152:~ # mount -o user=myname,vers=2.0 //192.168.1.240/share /mnt/cifs
Password for myname@//192.168.1.240/share: *******
opensuse152:~ #
opensuse152:~ # ls /mnt/cifs/

mount.cifs コマンドで SMBv2 で接続する場合

opensuse152:~ # mount.cifs -o user=myname,vers=2.0 //192.168.1.240/share /mnt/cifs
Password for myname@//192.168.1.240/share: *******
opensuse152:~ #

-- SLE15sp2 の場合

vers= オプションを付けないと、"Operation not supported" になる場合があります。明示的に SMB プロトコルのバージョンを指定します。

sle153:~ # mount -o username=myname //192.168.1.239/share /mnt/cifs
Password for myname@//192.168.1.239/share: *******
mount error(95): Operation not supported
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
sle153:~ # mount -o username=myname,vers=2.0 //192.168.1.239/share /mnt/cifs
Password for myname@//192.168.1.239/share: *******
sle153:~ #
sle153:~ # umount /mnt/cifs
sle153:~ #
sle153:~ # mount -o username=myname,vers=3.0 //192.168.1.239/share /mnt/cifs
Password for myname@//192.168.1.239/share: *******
sle153:~ #


-- mount.cifs のヘルプを見てみましょう(抜粋)

vers=arg
SMB protocol version. Allowed values are:

· 1.0 - The classic CIFS/SMBv1 protocol.

      : 中略

. · 3.1.1 or 3.11 - The SMBv3.1.1 protocol that was introduced in Microsoft Windows 10 and Win-
dows Server 2016.

      : 中略

· default - Tries to negotiate the highest SMB2+ version supported by both the client and
server.

If no dialect is specified on mount vers=default is used. To check Dialect refer to
/proc/fs/cifs/DebugData

Note too that while this option governs the protocol version used, not all features of each
version are available.

The default since v4.13.5 is for the client and server to negotiate the highest possible ver-
sion greater than or equal to 2.1. In kernels prior to v4.13, the default was 1.0. For ker-
nels between v4.13 and v4.13.5 the default is 3.0.

version 4.13.5 では、より新しいバージョンか、2.1 でネゴシエーションしますが、デフォルトでは SMBv2.0 で通信するようです。

opensuse152:~ # smbd -V
Version 4.11.14-git.247.8c858f7ee14lp152.3.19.1-SUSE-oS15.0-x86_64
opensuse152:~ #

どうも古いバージョンの様です。


-- SMB のバージョンの確認方法

実際 SMB 接続したコンピュータと、SMB プロトコルのバージョンを確認してみました。

smb のプロトコルバージョンの確認方法(Samba 側)

opensuse152:~ # smbstatus -b
Samba version 4.11.14-git.247.8c858f7ee14lp152.3.19.1-SUSE-oS15.0-x86_64
PID Username Group Machine Protocol Version Encryption Signing
----------------------------------------------------------------------------------------------------------------------------------------
6126 myname users 192.168.1.33 (ipv4:192.168.1.33:61470) SMB2_10 - -
23487 myname users 192.168.1.44 (ipv4:192.168.1.44:50304) SMB3_11 - partial(AES-128-CMAC)
26401 myname users 192.168.1.240 (ipv4:192.168.1.240:55066) SMB3_00 - partial(HMAC-SHA256)
opensuse152:~ #


smb のプロトコルバージョンの確認方法(Windows 側)

管理者モードで PowerShell を起動します。

PS C:\WINDOWS\system32> Get-SmbConnection

ServerName ShareName UserName Credential Dialect NumOpens
---------- --------- -------- ---------- ------- --------
abianca share GOBLIN\kenn GOBLIN\myname 3.1.1 1


PS C:\WINDOWS\system32>

サンプルスクリプト

仮に、シェルを作ってマウントからバックアップ、アンマウントを行うとすれば、次の様なスクリプトを実行すればよい事になります。ここでは、コピーなどの操作を行った後、 sync でディスクキャッシュを書き込み、5秒スリープさせてから umount で強制アンマウントさせています。

cron で自動化してもよいでしょうし、アテンドして手動で動作を確認して実行しても良いでしょう。マウントされているかどうかの判断は、マウント先に特定のファイル(ここでは /mounted.txt ) を置いて、このファイルがあれば、マウントされている、と判断しています。

#!/bin/bash
mkdir /cifs
mount.cifs -o user=backupuser,vers=2.0,password=password //192.168.1.240/share /cifs
FILE="/cifs/mounted.txt"
if [ -e $FILE ];then
echo "Mounted."
##### Your Backup operation Here ! ######
sync
sleep 5
fi
umount /cifs
umount -f /cifs
umount -l /cifs
rmdir /cifs

なお、バックアップそのものの操作は次の様な操作が想定されます。詳細はそれぞれのコマンドの man ページで確認してください。

cp コマンドで、ファイルの新規ファイルかアップデートがあれば、/backup にディレクトリごとに表示しながらコピーする

cp -vRu /cifs/* /backup

rsync コマンドで、進捗情報を表示しながらアーカイブモードでコピーする。バックアップ元を誤削除してもバックアップ先にはファイルが残る。

rsync -av /cifs/ /backup/

or

バックアップ元のファイルが削除された場合、-- delete オプションで、バックアップ先も削除して同期させる。週に一度程度やっておくと良いでしょう。

rsync -av --delete /cifs/ /backup

tar を使ってアーカイブファイルに圧縮する。

tar cvzf /backup/backup.tar.gz /cifs/*

tar を使って、テープ装置に金庫にオフライン保管を作成する場合 ( /dev/st0 はあくまでも一例です)

tar cvzf /dev/st0 /cifs/

- 参考 -

mount.cifs — Common Internet File System (CIFS) を使用したマウント



Windows11 を再展開、やり直し、Sysprep





by islandcenter | 2021-09-26 11:01 | SUSE | Comments(0)