前書き

WebDAVは、ユーザーがサーバー上のファイルを管理できるようにするHTTPプロトコルの拡張機能です。 WebDAVサーバーを使用するには多くの方法があります。 たとえば、WordまたはExcelドキュメントをWebDAVサーバーにアップロードすることで、同僚と共有できます。 URLを渡すだけで、家族や友人と音楽コレクションを共有することもできます。 これらはすべて、何もインストールしなくても実現できます。

リモートサーバー上のファイルを管理するには多くの方法があります。 WebDAVには、https://en.wikipedia.org/wiki/File_Transfer_Protocol [FTP]やhttps://en.wikipedia.org/wiki/Samba_(software)[Samba]などの他のソリューションに勝るいくつかの利点があります。 この記事では、Apacheサーバーを構成して、認証を使用してWindows、Mac、LinuxからのネイティブWebDAVアクセスを許可する方法を説明します。

なぜWebDAVなのか?

WebDAVにはいくつかの利点があります。

  • すべての主要なオペレーティングシステム(Windows、Mac、Linux)のネイティブ統合。 WebDAVを使用するためにサードパーティのソフトウェアをインストールする必要はありません。

  • 部分転送のサポート。

  • 認証の選択肢が増えました。 HTTPを使用するということは、https://en.wikipedia.org/wiki/NT_LAN_Manager [NTLM]、https://en.wikipedia.org/wiki/Kerberos_(protocol)[Kerberos]、https://en.wikipedia.orgを意味します/ wiki / Lightweight_Directory_Access_Protocol [LDAP]など すべて可能です。

状況によっては、WebDAVがニーズに最適なソリューションになる場合があります。

なぜApacheなのか?

Linux上のWebDAVをサポートする多くのWebサーバーがあります。 ただし、ApacheにはWebDAVプロトコルの最も準拠した実装があります。 執筆時点では、http://nginx.org/ [Nginx]およびhttp://www.lighttpd.net/[Lighttpd]のWebDAVは機能していますが、部分的にしか機能していません。

前提条件

  • Ubuntu 14.04 *サーバーが必要です。

始める前に、まず* sudo *アクセス権を持つユーザーを作成しましょう。 * root *としてコマンドを実行できますが、セキュリティ上の懸念から推奨されません。 Ubuntu 14.04でのユーザーの追加に優れた記事があります。もっと知りたいですか?

ユーザーを作成する

最初にDigital Oceanインスタンスを作成すると、* root としてログインできる資格情報が提供されます。 * root *として、まず alex *というユーザーを追加しましょう。

adduser alex

以下に示すように、ユーザー* alex のパスワードを作成するように求められます。 ユーザー alex *に関する情報のプロンプトがさらに表示されます。 必要に応じて入力できます。

Adding user `alex' ...
Adding new group `alex' (1000) ...
Adding new user `alex' (1000) with group `alex' ...
Creating home directory `/home/alex' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for alex
Enter the new value, or press ENTER for the default
       Full Name []:
       Room Number []:
       Work Phone []:
       Home Phone []:
       Other []:
Is the information correct? [Y/n] y

ユーザーへのsudo特権の付与

新しいユーザーを作成した後、次のステップはユーザーに* alex * sudo特権を付与することです。 まだ* root としてログインしていると仮定して、次のコマンドを入力してユーザー alex sudo *グループに追加します。

usermod -aG sudo alex
  • sudo グループのユーザーには、 sudo 特権が付与されます。 これで、ユーザー alex *としてログアウトおよびログインできます。

ステップ1-Apacheのインストール

Apacheをインストールしましょう。

sudo apt-get update
sudo apt-get install apache2

Apache Webサーバーがインストールされ、実行されている必要があります。

ステップ2-WebDAVのセットアップ

WebDAVをセットアップするには、3つのステップがあります。 場所を指定し、必要なモジュールを有効にして、構成します。

ディレクトリの準備

WebDAVを提供するためのフォルダーを指定する必要があります。 このために、新しいディレクトリ「+ / var / www / webdav 」を作成します。 また、Apacheに書き込みを許可するには、所有者を ` www-data +`(Apacheユーザー)に変更する必要があります。

sudo mkdir /var/www/webdav
sudo chown -R www-data:www-data /var/www/

モジュールを有効にする

次に、http://man.he.net/man8/a2enmod [a2enmod]を使用してWebDAVモジュールを有効にします

sudo a2enmod dav
sudo a2enmod dav_fs

Apacheモジュールは + / etc / apache2 / mods-available +`にあります。 これにより、 `+ / etc / apache2 / mods-available`から + / etc / apache2 / mods-enabled`へのシンボリックリンクが作成されます。

設定

お気に入りのテキストエディターを使用して、 `+ / etc / apache2 / sites-available / 000-default.conf +`で構成ファイルを開くか作成します。

nano /etc/apache2/sites-available/000-default.conf

1行目に、* DavLockDB *ディレクティブ構成を追加します。

DavLockDB /var/www/DavLock

そして、VirtualHostセクション内の* Alias および Directory *ディレクティブ:

Alias /webdav /var/www/webdav

<Directory /var/www/webdav>
   DAV On
</Directory>

編集後、ファイルは次のようになります。

DavLockDB /var/www/DavLock
<VirtualHost *:80>
       # The ServerName directive sets the request scheme, hostname and port that
       # the server uses to identify itself. This is used when creating
       # redirection URLs. In the context of virtual hosts, the ServerName
       # specifies what hostname must appear in the request's Host: header to
       # match this virtual host. For the default virtual host (this file) this
       # value is not decisive as it is used as a last resort host regardless.
       # However, you must set it for any further virtual host explicitly.
       #ServerName www.example.com

       ServerAdmin [email protected]
       DocumentRoot /var/www/html

       # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
       # error, crit, alert, emerg.
       # It is also possible to configure the loglevel for particular
       # modules, e.g.
       #LogLevel info ssl:warn

       ErrorLog ${APACHE_LOG_DIR}/error.log
       CustomLog ${APACHE_LOG_DIR}/access.log combined

       # For most configuration files from conf-available/, which are
       # enabled or disabled at a global level, it is possible to
       # include a line for only one particular virtual host. For example the
       # following line enables the CGI configuration for this host only
       # after it has been globally disabled with "a2disconf".
       #Include conf-available/serve-cgi-bin.conf

       Alias /webdav /var/www/webdav

       <Directory /var/www/webdav>
           DAV On
       </Directory>
</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

DavLockDBディレクティブは、DAV Lockデータベースの名前を指定します。 ファイルへのパスでなければなりません。 ファイルを作成する必要はありません。 ディレクトリは、Apacheサーバーによって書き込み可能である必要があります。

Aliasディレクティブは、リクエストを `+ http:// your.server / webdav `へのマッピングを ` / var / www / webdav +`にマッピングしますフォルダ。

Directoryディレクティブは、 `+ / var / www / webdav +`フォルダーに対してWebDAVを有効にするようApacheに指示します。 mod_davの詳細については、Apacheのドキュメントをご覧ください。

Apacheサーバーを再起動すると、認証なしでWebDAVサーバーが動作するようになります。

次のようにApacheサーバーを再起動します。

sudo service apache2 restart

テスト

認証なしのWebDAVでは、ユーザーの読み取りアクセスのみが許可されます。 テストのために、サンプルファイルを作成しましょう。

echo "this is a sample text file" | sudo tee -a /var/www/webdav/sample.txt
  • sample.txt というテキストファイルを / var / www / webdav *に作成する必要があります。 テキストを含む必要があります_thisはサンプルテキストファイルです。

これで、外部コンピューターからログインを試すことができます。 WebDAVサーバーは* http:// <your.server.com> / webdav *にあります。 簡潔にするため、Macでは資格情報なしでログインする方法のみを示しています。

Macでは、* Finder を開きます。 メニューバーで、 Go を見つけて、 Connect to Server *オプションを選択します。

image:https://assets.digitalocean.com/articles/webdav_access/1.png [WebDAV Macステップ1]

[ゲストとして接続]オプションを選択します。 次に、[接続]をクリックします。

image:https://assets.digitalocean.com/articles/webdav_access/2.png [WebDAV Mac Step 2]

ログインする必要があります。 その共有ファイルシステムに接続して、 `+ webdav `フォルダーに入ると、以前に作成されたファイル ` sample.txt +`が表示されるはずです。 ファイルはダウンロード可能でなければなりません。

image:https://assets.digitalocean.com/articles/webdav_access/3.png [WebDAV Macステップ3]

ステップ3-認証の追加

認証のないWebDAVサーバーは安全ではありません。 このセクションでは、ダイジェスト認証スキームを使用してWebDAVサーバーに認証を追加します。

基本認証またはダイジェスト認証?

多くの認証スキームが利用可能です。 この表は、異なるオペレーティングシステムでのさまざまな認証スキームの互換性を示しています。 HTTPSを提供している場合、SSL証明書が有効である(自己署名ではない)と想定していることに注意してください。

image:https://assets.digitalocean.com/articles/webdav_access/4.png [WebDAV互換性]

  • HTTP *を使用している場合は、すべてのオペレーティングシステムで機能するため、https://en.wikipedia.org/wiki/Digest_access_authentication [Digest authentication]を使用します。 * HTTPS *を使用している場合、https://en.wikipedia.org/wiki/Basic_access_authentication [Basic authentication]を使用するオプションがあります。

SSL証明書を必要とせずにすべてのオペレーティングシステムで機能するため、* Digest *認証スキームについて説明します。

ダイジェスト認証

ユーザーのパスワードを保存するファイル( `+ users.password +`と呼ばれる)を生成しましょう。 ダイジェスト認証には、ユーザーのネームスペースとして機能する* realm フィールドがあります。 * webdav *を realm として使用します。 最初のユーザーは alex *と呼ばれます。

ダイジェストファイルを生成するには、依存関係をインストールする必要があります。

sudo apt-get install apache2-utils

次にユーザーを追加します。 以下のコマンドを使用してユーザーパスワードファイルを生成します。

sudo htdigest -c /etc/apache2/users.password webdav alex

これにより、ユーザー* alex *がパスワードファイルに追加されます。 * alex *のパスワードを作成するためのパスワードプロンプトが表示されます。

その後ユーザーを追加するには、* c *フラグを削除する必要があります。 * chris *というユーザーを追加する別の例です。 プロンプトが表示されたらパスワードを作成します。

sudo htdigest /etc/apache2/users.password webdav chris

また、Apacheがパスワードファイルを読み取ることを許可する必要があるため、所有者を変更します。

sudo chown www-data:www-data /etc/apache2/users.password

パスワードファイルが作成されたら、 `+ / etc / apache2 / sites-available / 000-default.conf +`で設定を変更する必要があります。

  • Directory *ディレクティブに次の行を追加します

AuthType Digest
AuthName "webdav"
AuthUserFile /etc/apache2/users.password
Require valid-user

最終バージョンは次のようになります(コメントは削除されます)。

DavLockDB /var/www/DavLock

<VirtualHost *:80>
   ServerAdmin [email protected]
   DocumentRoot /var/www/html

   ErrorLog ${APACHE_LOG_DIR}/error.log
   CustomLog ${APACHE_LOG_DIR}/access.log combined

   Alias /webdav /var/www/webdav

   <Directory /var/www/webdav>
       DAV On
       AuthType Digest
       AuthName "webdav"
       AuthUserFile /etc/apache2/users.password
       Require valid-user
   </Directory>
</VirtualHost>

mod_authnモジュールには、認証ディレクティブの定義が含まれています。

  • AuthType ディレクティブは、Apacheに `+ / var / www / webdav +`ディレクトリに対して Digest *スキームを使用した認証が必要であることを指示します。

ダイジェスト*認証には、 webdav として設定した realm の値が必要です。 * Realm *は名前空間のように機能します。 同じ名前のユーザーがいる場合は、 realm の異なる値を使用してユーザーを分離できます。 * AuthName *ディレクティブを使用して、 realm *の値を設定します。

  • AuthUserFile *ディレクティブは、パスワードファイルの場所を示すために使用されます。

  • Require *ディレクティブは、自身を認証する有効なユーザーのみがこのディレクトリにアクセスできることを示しています。

最後に、ダイジェストモジュールを有効にし、サーバーを再起動して設定を有効にします。

sudo a2enmod auth_digest
sudo service apache2 restart

ステップ4-ファイルへのアクセス

Mac、Windows、Linux(Ubuntu)のネイティブファイルブラウザーからWebDAVサーバーにアクセスする方法を示します。 すべてのオペレーティングシステムからサーバー上のファイルを追加、編集、および削除することはできますが、簡潔にするために、Macのみでファイルとフォルダーの操作をデモします。

Webブラウザを使用して、インターネット経由でファイルにアクセスすることもできます。

認証を追加する前にドライブをテストした場合は、ドライブを取り出して再接続する必要があります。

Mac

Macでは、* Finder を開きます。 メニューバーで、 Go を見つけて、 Connect to Server *オプションを選択します。

image:https://assets.digitalocean.com/articles/webdav_access/5.png [WebDAV Macステップ1]

サーバーのアドレスを入力します。 * http:// <your.server> / webdav *である必要があります。 *接続*を押します。

image:https://assets.digitalocean.com/articles/webdav_access/6.png [WebDAV Macステップ2]

ユーザー名とパスワードの入力を求められます。 サーバーで作成したユーザーのいずれかを入力し、*接続*を押します。

image:https://assets.digitalocean.com/articles/webdav_access/7.png [WebDAV Mac Step 3]

接続すると、ディレクトリが* Finder *に表示されます。

image:https://assets.digitalocean.com/articles/webdav_access/8.png [WebDAV Macステップ4]

ファイルをコピーして `+ webdav +`ディレクトリに保存し、サブディレクトリを作成できます。 サーバー上のディレクトリの初期状態は次のとおりです。

image:https://assets.digitalocean.com/articles/webdav_access/9.png [WebDAV Macステップ5]

Finderを使用して、ファイルを追加したり名前を変更したり、通常とまったく同じように新しいディレクトリを作成したりできます。 以下が最終結果です。

image:https://assets.digitalocean.com/articles/webdav_access/10.png [WebDAV Macステップ6]

Windows

Windowsでは、* File Explorer *を開きます。 左側のサイドバーに、*ネットワーク*アイコンがあります。

image:https://assets.digitalocean.com/articles/webdav_access/11.png [WebDAV Windowsステップ1]

ネットワーク*アイコンを右クリックします。 オプション Map network drive *を含むコンテキストメニューが表示されます。 それをクリックしてください。

image:https://assets.digitalocean.com/articles/webdav_access/12.png [WebDAV Windowsステップ2]

フォルダフィールドにサーバーアドレスを入力します。 * http:// <your.server> / webdav *である必要があります。 ログインが異なる場合は、[異なる資格情報を使用して接続]を選択します。 * Finish *を押します。

image:https://assets.digitalocean.com/articles/webdav_access/13.png [WebDAV Windowsステップ3]

ユーザー名とパスワードの入力を求められます。 それらを入力して* OK *を押します。

image:https://assets.digitalocean.com/articles/webdav_access/14.png [WebDAV Windowsステップ4]

接続すると、* File Explorer *の左側のサイドバーにネットワークドライブとして表示されます。

image:https://assets.digitalocean.com/articles/webdav_access/15.png [WebDAV Windowsステップ5]

Linux(Ubuntu)

LinuxデスクトップオペレーティングシステムとしてUbuntu 14.04を使用しています。 Ubuntuで、* Files *を開きます。 左側のサイドバーにある[サーバーに接続]オプションがあります。 それをクリックしてください。

image:https://assets.digitalocean.com/articles/webdav_access/16.png [WebDAV Linuxステップ1]

サーバーのアドレスを入力します。 * dav:// <your.server> / webdav *である必要があります。 *接続*を押します。

image:https://assets.digitalocean.com/articles/webdav_access/17.png [WebDAV Linuxステップ2]

ユーザー名とパスワードの入力を求められます。 それらを入力し、*接続*を押します。

image:https://assets.digitalocean.com/articles/webdav_access/18.png [WebDAV Linuxステップ3]

接続すると、ディレクトリが* Network *リストの下に表示されます。

image:https://assets.digitalocean.com/articles/webdav_access/19.png [WebDAV Linuxステップ4]

結論

この記事では、Ubuntu 14.04でApacheを使用してWebDAVサーバーをセットアップする方法を説明しました。 また、サーバーを保護するためにダイジェスト認証を構成する方法についても説明しました。 最後に、ネイティブファイルブラウザを使用して、3つの主要なオペレーティングシステムすべてからWebDAVサーバーに接続する方法を示しました。