昨日、Windows をクリーンセットアップしたら、ファイル共有ができなくなって慌てました。
解決方法と併せてご紹介したいと思います。
目次
やること
Windows PC から共有フォルダに接続した際、エラーになる場合の解消方法について説明します。
※他の PC からは問題なくアクセスできるのに(特定の PC から共有フォルダに接続しようとすると)エラーになる場合の対処法です。
現象
Windows 10 の初期化機能を使って OS をまるっとリセットしたら、共有フォルダに繋がらなくなりました。
結構、焦ります。
結果としては、サーバとクライアントで資格情報(ユーザーID・パスワード)を揃えることで解消しました。
環境
以下の環境で発生しました。
※下記クライアントPC(Windows 10)を初期化したら発生した事案です。
クライアント(PC)
- ハードウェア
FMV LIFEBOOK AH77/D - OS
Windows 10 Pro x64(2004)
サーバ(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)以降、匿名認証が無効化されました。
※匿名認証とは、認証されていない(識別できない)ユーザーでアクセスする機能です。
つまり以下のようになっているわけです。
- 接続先(この場合は、共有フォルダ)と同じ資格情報(ユーザーID・パスワード)で無い
- 認証できないので、匿名認証となる
- OS(Windows 10)側で匿名認証が無効化されているため、エラーとなり接続できない
解決方法
ずばり
- PC と NAS(ファイル共有)に同じユーザーID・パスワードのアカウントを作る
です。
操作手順
私の場合の解決方法は「Windows 資格情報にユーザーID・パスワードを登録する」でした。
以下、Windows(クライアント)側に、ファイル共有(サーバ)側のユーザーID・パスワードを登録する手順です。
[ファイル名を指定して実行] に control
を入力して [OK] を押下して、コントロールパネルを開く
ユーザーアカウントを選択
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 が選択される。