Evidence-Based Life

人生における、あらゆる意志決定に科学的エビデンスを...

CentOS7: wsddをインストールしてsamba サーバーをWindows10エクスプローラのネットワークに表示する

IPアドレスを入力すればCentOS7上のsambaサーバーにアクセスできるが、Windows10のネットワークでsambaサーバーが表示されない。Windows側でCIFS 1.0に設定する方法があるが、セキュリティの問題があるらしいので、Web Service on Devices(WSD)を使う方法で設定した。しかし、epelレポジトリからyumでインストールしたwsddの設定ファイルに間違いがあり、1日近くかかった。手順をメモしておく。

 

  1. yum を使ってepelレポジトリからwsddをインストール。
  2. firewalldのwsddのサービスを記述した/usr/lib/firewalld/services/wsdd.xmlのincludeの行をコメントアウト。これを修正しないとfirewall-cmdでポートを開こうとすると、"ERROR: Failed to load service file '/usr/lib/firewalld/services/wsdd.xml': PARSE_ERROR: Unexpected element include"とエラーが出て起動できない。"include"が問題なことがわからず時間がかかる。このエラーメッセージを見たときに"include"を動詞と理解し、"予期しない要素が含まれている"と理解してしまった。これにより設定ファイル内の"予期しない要素”を探したが、それがどれだか、手がかりがなく、全く分からなかった。しかし、エラーメッセージを再度見直したときに、このエラーメッセージはincludeを名詞とみなして、"予期しない要素「include」"と理解すべきことに気づいて、やっと解決した。エラーメッセージを"予期しない要素が含まれている"とすると、この文は、"Unexpected element is included"でなければならないので、英文理解と文法の矛盾にすぐ気づくべきだった。一方、辞書を確認すると、includeの品詞は動詞しかないので、直感的な品詞判断は正しかった。英文エラーメッセージの理解において、直感的な品詞判断を優先して文法構造の整合性を見落としたため、眼の前のエラーメッセージに問題となる箇所が表現されていても、なかなか解決できなかった。良い教訓となった。
  3. firewall-cmdを使ってfirewalldのサービスにwsddとwsdd-httpを追加して、firewallのwsddの動作に必要なポートを開く。
  4. wsddを立ち上げるsystemctl用の設定ファイル/etc/systemd/system/wsdd.serviceが間違っているので修正する。ExecStartの行を"ExecStart = /bin/wsdd --ipv4only -i eno1 -d home"に修正した。ここは、それぞれの環境ごとに違うので修正してください。
  5. systemctlでwsddを起動。この時点で、Windows10のネットワークからsambaサーバーが見えるようになるが、エクスプローラに表示されたsambaサーバーをダブルクリックすると"エラーコード: 0x80070035, ネットワークパスが見つかりません"と出る。
  6. このエラーはsambaサーバーの名前がIPアドレスに変換できないためと推測し、Windows10のhostsファイルにsambaサーバーのIPアドレスを追加した。これにより、エクスプローラに表示されたsambaサーバーのダブルクリックでフォルダが見えるようになりアクセスできた。