環境:
Linux X86サーバーとDebian 9.3
カーネル: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を有効にする必要はありません。
どのSMBバージョンがWindows Server 2008 R2で有効になっているかを確認する方法
問題:管理用またはその他の共有をマウントできない、またはsmbtree -b -N
でそれらを表示できない
私が試したこと:
非管理共有を使用しようとしました(末尾に$
はありません)
管理共有の名前を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プロトコルでこれを機能させるにはどうすればよいですか?
必要に応じて状況が少し異なる場合があるため、howtoへの回答には複数の部分が含まれています。
直接の問題を解決するのに役立つさまざまな検索を介して、見つけた(または見つけたと信じている)すべてを含めました。
私のカーネルはSMB3を直接サポートしていないようです
に基づいていますhttps://lists.debian.org/debian-kernel/2017/04/msg00266.html
qoute:
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.
私の研究から、それはストレッチバックポートにもありません(4.11からのカーネル変更をサポートするためのcifs-utils?)
https://packages.debian.org/stretch-backports/allpackages
ただし、新しいカーネルがあるため、バックポートの部分はわかりませんが、私の場合は、この機能のバックポートカーネルにアップグレードしないため、ここで停止しました。
SmbtreeをSMB3で動作させる方法はすぐにはわかりませんでした。問題があったので、上記で判明したSMB3のアイデアを完全に削除しました。
https://www.samba.org/samba/docs/current/man-html/smbtree.1.html
Smbclientのsmbプロトコルのデフォルトバージョンは
SMB1
これは、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
SMB1も機能させるには、Windows 10でファイル共有の暗号化レベルを変更する必要がある場合があります。
これを直接テストしなかったので、実際に必要かどうかはわかりません:
ここからこれを行う方法の例を参照してください:
https://www.tenforums.com/tutorials/51024-change-file-sharing-encryption-level-windows-10-a.html
Qoute:
ネットワークと共有センターでファイル共有の暗号化レベルを変更するには
コントロールパネルを開き、[ネットワークと共有センター]アイコンをクリック/タップします。
左側の[共有の詳細設定を変更]リンクをクリック/タップします。 (下のスクリーンショットを参照)
All Networksネットワークプロファイルを展開します。
[ファイル共有接続]で、[40ビットまたは56ビットの暗号化を使用するデバイスでファイル共有を有効にする]を選択します
今実際に物事を働かせるために
非管理共有:
smbclientコマンドの変更
smbclient -U WIN10Username -L //Client/
に
smbclient -m SMB2 -U WIN10Username -L //Client/
そのクライアントの共有を表示できます。
コンソールが実際にアクセスするためのmountparamとして:
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に固有の別のアカウントが必要になります。
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
上記のすべての情報があれば、Win10管理共有を次のbackuppcオプションでバックアップできます。
SmbClientFullCmd:
ハードコード:
$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.
Credfile:
$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.