Windowsでファイル共有できなくなった話

昨日、Windows をクリーンセットアップしたら、ファイル共有ができなくなって慌てました。
解決方法と併せてご紹介したいと思います。

目次

やること

Windows PC から共有フォルダに接続した際、エラーになる場合の解消方法について説明します。

※他の PC からは問題なくアクセスできるのに(特定の PC から共有フォルダに接続しようとすると)エラーになる場合の対処法です。

現象

Windows 10 の初期化機能を使って OS をまるっとリセットしたら、共有フォルダに繋がらなくなりました。
結構、焦ります。

結果としては、サーバとクライアントで資格情報(ユーザーID・パスワード)を揃えることで解消しました。

環境

以下の環境で発生しました。
※下記クライアントPC(Windows 10)を初期化したら発生した事案です。

クライアント(PC)

サーバ(NAS)

  • ハードウェア
    Banana Pi M1 Classic
  • OS
    Armbian(Ubuntu Bionic with Armbian Linux 4.19.62-sunxi)です。
# head -n 4 /etc/armbian.txt 
--------------------------------------------------------------------------------
Title:          Armbian 5.90 Bananapi Ubuntu bionic next
Kernel:         Linux 4.19.57
Build date:     05.07.2019

# uname -r
4.19.62-sunxi
  • Samba
    バージョン 4.7.6 を使っています。
# samba -V
Version 4.7.6-Ubuntu

原因

原因は、匿名認証(匿名ユーザー)機能です。

Windows 10(1709)以降、匿名認証が無効化されました。
※匿名認証とは、認証されていない(識別できない)ユーザーでアクセスする機能です。

つまり以下のようになっているわけです。

  1. 接続先(この場合は、共有フォルダ)と同じ資格情報(ユーザーID・パスワード)で無い
  2. 認証できないので、匿名認証となる
  3. OS(Windows 10)側で匿名認証が無効化されているため、エラーとなり接続できない

解決方法

ずばり

  • PC と NAS(ファイル共有)に同じユーザーID・パスワードのアカウントを作る

です。

操作手順

私の場合の解決方法は「Windows 資格情報にユーザーID・パスワードを登録する」でした。

以下、Windows(クライアント)側に、ファイル共有(サーバ)側のユーザーID・パスワードを登録する手順です。

[ファイル名を指定して実行] に control を入力して [OK] を押下して、コントロールパネルを開く

ファイル名を指定して実行

ユーザーアカウントを選択

Windows 資格情報の管理を選択

[資格情報マネージャー] 下の [Windows 資格情報の管理] をクリックします。

Windows 資格情報を追加

[Windows 資格情報の追加] をクリックします。

接続先・資格情報の追加

NAS(ファイルサーバ)の IP アドレス・ユーザ名・パスワードを入力して、[OK] をクリックします。

資格情報の確認

Windows 資格情報欄に、登録したユーザID・パスワードが登録されていることを確認します。

その他、試したこと

他で役立つかもしれないので、載せておきますね。

共有の詳細設定

「パブリックフォルダーの共有を有効にする」ことで解決するケースもあるようですが、今回は効果なしでした。

SMBv1

以前から SMB(Samba)プロトコルのバージョンが v1 だと繋がらない現象があります。

base on SMBv1 は、Windows 10 バージョン1709、Windows Server バージョン1709以降のバージョンでは既定でインストールされません。 | Microsoft Docs

※この(SMBv1 の)問題は Windows 10 に限りません。
(Windows では、SMBv2 は Vista で初搭載されました)。

これは、以下で解消されます。

  • Windows(クライアント)側で SMBv1 を有効にする
  • ファイル共有(サーバ)側で SMBV2 を有効にする

Windows(クライアント)側で SMBv1 を有効にする

SMBバージョン確認

現在の Windows が SMB のどのバージョンをサポートしているか確認します。

コマンドは Microsoft 公式サイトで公開されています。

base on lanmanworkstation
2019/12/25

  • 識別
    sc.exe qc lanmanworkstation

試しに打ってみると、SMBv2 でした。 ※下記 `MRxSmb20` の部分です。

C:\Users> sc qc lanmanworkstation
[SC] QueryServiceConfig SUCCESS

SERVICE_NAME: lanmanworkstation
TYPE               : 20  WIN32_SHARE_PROCESS
START_TYPE         : 2   AUTO_START
ERROR_CONTROL      : 1   NORMAL
BINARY_PATH_NAME   : C:\WINDOWS\System32\svchost.exe -k NetworkService -p
LOAD_ORDER_GROUP   : NetworkProvider
TAG                : 0
DISPLAY_NAME       : Workstation
DEPENDENCIES       : Bowser
   : MRxSmb20
   : NSI
SERVICE_START_NAME : NT AUTHORITY\NetworkService

SMBv1有効化

SMBv1 有効化についても Microsoft 公式サイトに掲載されています。

base on Windows 10 および Windows Server 2016 の既定で無効になっている SMB2 のゲスト アクセス
<span class='notes'>最終更新日: 2020/06/25</span>
<span class='headline2'>解決方法</span>
安全でないゲスト アクセスを有効にする場合は、次のグループ ポリシー設定を構成できます。

Computer configuration\administrative templates\network\Lanman Workstation
「安全でないゲスト ログオンを有効にする」

ただ、私の場合はこれを設定しても接続できませんでした。
※上記コマンド `sc qc lanmanworkstation` でも有効化を確認できませんでした。
(`MRxSmb10` が表示されませんでした)。

ファイル共有(サーバ)側で SMBv2 を有効にする

Samba は(SMBv3 までサポートしていますが)デフォルトでは SMBv1 が有効になっています。

SMBv2有効化

samba 設定ファイル `/etc/samba/smb.conf` に1行 `max protocol = SMB2` 追加して、サーバをリブートします。

# cd /etc/samba/
# diff -u smb.conf_bk20200629 smb.conf
--- smb.conf_bk20200629 2020-06-29 10:35:17.661630266 +0000
+++ smb.conf    2020-06-29 10:56:46.302898590 +0000
 #======================= Global Settings =======================

 [global]
+max protocol = SMB2

要再起動です。

SMBv2有効化の確認

smbstatus コマンドで確認できます。

# smbstatus -b

Samba version 4.7.6-Ubuntu
PID     Username     Group        Machine                                   Protocol Version  Encryption           Signing              
----------------------------------------------------------------------------------------------------------------------------------------
2515    nobody       nogroup      192.168.0.000 (ipv4:192.168.0.000:49906)  SMB2_10           -                    -                    
2515    nobody       nogroup      192.168.0.000 (ipv4:192.168.0.000:49906)  SMB2_10           -                    -                    
...

プロトコルバージョン SMB2_10 は SMBv2 です。

base on SMB2_10

  • SMB2_10: Windows 7 の SMB2 プロトコル
    SMB2 を指定した場合、デフォルトでは SMB2_10 が選択される。