
環境:
Debian 9.3 搭載 Linux X86 サーバー
カーネル: Debian 4.9.65-3+deb9u1
smbclient: バージョン 4.5.12-Debian
cifs-utils: 2:6.7-1
状況:
Backupserver ( backuppc
) は Windows 10 Home クライアントをバックアップする必要があります。
ドメインなし
代替:
他の Win7 クライアントに使用される Cygwin/Rsync は、手作業が必要なため拒否されました。
すでにわかっている前提条件:
Win10Client の DNS エントリ: 完了、テスト済み、動作中
Win10Client の DHCP エントリ: 完了、テスト済み、動作中
SMB1 は安全ではないため、「簡単な方法」は使用しないでください。
smbclientはSMB2/3プロトコルをサポートしているので、例えばSMB1を有効にするためにsmb1レジストリハックを設定する必要はない。
Windows Server 2008 R2 で有効になっている SMB バージョンを確認する方法
問題点:管理共有やその他の共有をマウントできず、smbtree -b -N
私が試したこと:
非管理共有(
$
末尾に「no」)を使用しようとしました管理共有の名前を から または に変更し
C$
ましmC$
たmC
。ドキュメントにテスト共有を追加しました。
テストシェアを追加しました
C:\test
これらはいずれも 経由では表示されませんsmbtree
。
共有に直接接続する(または共有のリストを取得する):
テスト済み:
smbclient -U WIN10Username -L //CLIENT/
protocol negotiation failed: NT_STATUS_CONNECTION_RESET
smbclient -L //CLIENT/
protocol negotiation failed: NT_STATUS_CONNECTION_RESET
SMB2 または SMB3 プロトコルでこれを動作させるにはどうすればよいですか?
答え1
状況は必要なものに応じて多少異なる可能性があるため、ハウツーへの回答には複数の部分が含まれます。
さまざまな検索を通じて見つけた(または見つけたと思われる)すべての情報を含めました。これらは直接的な問題の解決に役立ちました。
デフォルトのDebian 9 StretchカーネルはSMB3をサポートしていません
私のカーネルはSMB3を直接サポートしていないようです
に基づくhttps://lists.debian.org/debian-kernel/2017/04/msg00266.html
引用:
Am 22.04.2017 um 17:21 schrieb Ben Hutchings:
On Sat, 2017-04-22 at 16:19 +0100, Ben Hutchings wrote:
On Sat, 2017-04-22 at 14:47 +0200, [email protected] wrote:
Hi!
It´s not possible to mount a enrypted CIFS Share yet. is it possible
to add the following Kernel changes to Debian 8?
No, we don't backport big features like that.
Of course, if this feature is in Linux 4.9 (I don't know) then you have
the option to install the new kernel version from jessie-backports
(https://backports.debian.org/).
Ben.
私の調査によると、これは Stretch バックポートにも含まれていません (4.11 からのカーネル変更をサポートする cifs-utils でしょうか)
https://packages.debian.org/stretch-backports/allpackages
ただし、新しいカーネルがあるため、バックポート部分については不明ですが、私の場合は、この機能のためにバックポート カーネルにアップグレードしないので、ここで停止しました。
smbtree は SMB3 で動作するためにさらにパラメータが必要です
smbtree を SMB3 で動作させる方法がすぐにはわかりませんでした。また、上記で発見した問題により、SMB3 のアイデアを完全に断念しました。
smbclient はデフォルトでは SMB2 または SMB3 を使用しません。
smbclientのsmbプロトコルのデフォルトバージョンは
SM1 1 1 1
これは Windows 10 ではデフォルトではサポートされていません。
ユースケースでこれが必要な場合は、対応するレジストリ キーを追加する必要があります。
HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters\SMB1 (タイプ DWORD32、値 1 はオン、値 0 はオフ)
Powershell コマンド:
検出する:
Get-Item HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters | ForEach-Object {Get-ItemProperty $_.pspath}
有効にする:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB1 -Type DWORD -Value 1 –Force
無効にする:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB1 -Type DWORD -Value 0 –Force
これはhttps://support.microsoft.com/en-us/help/2696547/windows で smbv1、smbv2、smbv3 の有効化と無効化を検出する方法
SMB1 を動作させるには、Windows 10 でファイル共有の暗号化レベルを変更する必要がある場合があります。
これを直接テストしていないので、実際に必要かどうかはわかりません。
たとえば、ここからこれを行う方法を参照してください:
https://www.tenforums.com/tutorials/51024-change-file-sharing-encryption-level-windows-10-a.html
引用:
ネットワークと共有センターでファイル共有の暗号化レベルを変更するには
コントロール パネルを開き、ネットワークと共有センター アイコンをクリック/タップします。
左側の「詳細な共有設定の変更」リンクをクリック/タップします。(下のスクリーンショットを参照)
[すべてのネットワーク] ネットワーク プロファイルを展開します。
ファイル共有接続で、「40 ビットまたは 56 ビットの暗号化を使用するデバイスでファイル共有を有効にする」を選択します。
作業コマンド
実際に動作させるには
非管理共有:
smbclientコマンドの変更
smbclient -U WIN10Username -L //Client/
に
smbclient -m SMB2 -U WIN10Username -L //Client/
そのクライアントのシェアを表示できます。
実際にアクセスするためのコンソールのマウントパラメータとして:
mount -t cifs -o vers=2.0,username=WIN10Username,password=WIN10Password //CLIENTIP/TESTSHARE MOUNTPOINT
または /etc/fstab エントリとして (起動時に自動マウントされません)
//CLIENTIP/TESTSHARE /MOUNTPOINT cifs vers=2.0,username=WIN10Username,password=WIN10Password 0 0
管理共有
管理共有の場合は、追加のレジストリ変更を 1 つ行う必要があります (ドメインに属していない場合)。
Powershell コマンド:
Set-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\ -Name LocalAccountTokenFilterPolicy -Value 1
ここから引用:
基本的に、これはリモート共有アクセスとメンテナンスの UAC を無効にするものなので、注意してください。
これは意味をよりよく理解するのに役立つ可能性があるため、実際にこれを行う場合は注意してください。
#note the \$ is actually needed!, i did read about Qouting the whole String "//CLIENTIP/C$" but i did not test that
mount -t cifs -o vers=2.0,username=WIN10Username,password=WIN10Password //CLIENTIP/C\$ MOUNTPOINT
backuppc の問題:
共有に対する読み取り権限を持つ、backuppc 専用の別のアカウントが必要になります。
backuppcs smbclientのデフォルトオプションには-m SMB2が含まれていません
backuppc が使用するコマンドは次のとおりです。
/usr/bin/smbclient \\\\CLIENT-NAME\\SHARENAME -U Win10Username -E -N -d 1 -c tarmode\ full -Tc -
これを-m SMB2を含めるように変更します
その後も NT_STATUS_ACCESS_DENIED が返されました:
session setup failed: NT_STATUS_ACCESS_DENIED
session setup failed: NT_STATUS_ACCESS_DENIED
tarExtract: Done: 0 errors, 0 filesExist, 0 sizeExist, 0 sizeExistComp, 0 filesTotal, 0 sizeTotal
-Uの後にパスワードを追加して手動で実行する
/usr/bin/smbclient -m SMB2 \\\\CLIENT-NAME\\SHARENAME -U Win10Username WIN10Password -E -N -d 1 -c tarmode\ full -Tc -
作品
-N を削除すると、同様に機能するパスワードの入力を求められます。
私はこれをbackuppcの構成ファイル内に保存したくなかったので、最終バージョンでは資格情報方式を使用します。
backuppc コマンドと smbclient コマンドの違いを手動で調べようとしたところ、-N
接続時の動作が異なることがわかりました。
-N なしのソリューションが機能しています (ユーザー名、パスワード、または資格情報ファイルの有無は関係ありません。非管理共有または管理共有でも何も変わりません)
/usr/bin/smbclient -m SMB2 \\\\CLIENTNAME\\test3 -U WIN10Username WIN10Password -E -d 5 -c tarmode\ full -Tc -
/usr/bin/smbclient -m SMB2 \\\\CLIENTNAME\\test3 -A /etc/samba/smb.cred -E -d 5 -c tarmode\ full -Tc -
cut
...
NTLMSSP Sign/Seal - Initialising with flags:
Got NTLMSSP neg_flags=0x62088215
NTLMSSP_NEGOTIATE_UNICODE
NTLMSSP_REQUEST_TARGET
NTLMSSP_NEGOTIATE_SIGN
NTLMSSP_NEGOTIATE_NTLM
NTLMSSP_NEGOTIATE_ALWAYS_SIGN
NTLMSSP_NEGOTIATE_EXTENDED_SESSIONSECURITY
NTLMSSP_NEGOTIATE_VERSION
NTLMSSP_NEGOTIATE_128
NTLMSSP_NEGOTIATE_KEY_EXCH
NTLMSSP Sign/Seal - Initialising with flags:
Got NTLMSSP neg_flags=0x62088215
NTLMSSP_NEGOTIATE_UNICODE
NTLMSSP_REQUEST_TARGET
NTLMSSP_NEGOTIATE_SIGN
NTLMSSP_NEGOTIATE_NTLM
NTLMSSP_NEGOTIATE_ALWAYS_SIGN
NTLMSSP_NEGOTIATE_EXTENDED_SESSIONSECURITY
NTLMSSP_NEGOTIATE_VERSION
NTLMSSP_NEGOTIATE_128
NTLMSSP_NEGOTIATE_KEY_EXCH
ドメイン=[CLIENTNAME] OS=[] サーバー=[] ... カット
動作しないバージョン-N
:
/usr/bin/smbclient -m SMB2 \\\\CLIENTNAME\\test3 -U WIN10Username WIN10Password -N -E -d 5 -c tarmode\ full -Tc -
/usr/bin/smbclient -m SMB2 \\\\CLIENTNAME\\test3 -A /etc/samba/smb.cred -N -E -d 5 -c tarmode\ full -Tc -
cut
...
NTLMSSP Sign/Seal - Initialising with flags:
Got NTLMSSP neg_flags=0x62088215
NTLMSSP_NEGOTIATE_UNICODE
NTLMSSP_REQUEST_TARGET
NTLMSSP_NEGOTIATE_SIGN
NTLMSSP_NEGOTIATE_NTLM
NTLMSSP_NEGOTIATE_ALWAYS_SIGN
NTLMSSP_NEGOTIATE_EXTENDED_SESSIONSECURITY
NTLMSSP_NEGOTIATE_VERSION
NTLMSSP_NEGOTIATE_128
NTLMSSP_NEGOTIATE_KEY_EXCH
SPNEGO login failed: Logon failure
...
cut
...
SPNEGO login failed: Access denied
session setup failed: NT_STATUS_ACCESS_DENIED
Backuppc Win10 クライアントの動作ソリューション
上記のすべての情報を考慮すると、次の backuppc オプションを使用して Win10 管理共有をバックアップできます。
SmbClientフルコマンド:
ハードコード:
$smbClientPath -m SMB2 \\$host\$shareName $I_option -U $userName WIN10Password -E -d 5 -c tarmode\ full -Tc$X_option - $fileList
I was unable to use the Password in SmbSharePasswd, but as this wasn't the desired output i did not dig deeper if i made an possible error here.
信用ファイル:
$smbClientPath -m SMB2 \\$host\$shareName $I_option -A /PATH/samb_creditfile -E -d 5 -c tarmode\ full -Tc$X_option - $fileList
Remember you need permissions for the backuppc user on that file.