序章

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

リモートサーバー上のファイルを管理する方法はたくさんあります。 WebDAVには、FTPSambaなどの他のソリューションに比べていくつかの利点があります。 この記事では、認証を使用してWindows、Mac、およびLinuxからのネイティブWebDAVアクセスを許可するようにApacheサーバーを構成する方法について説明します。

なぜWebDAVなのか?

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

  • すべての主要なオペレーティングシステム(Windows、Mac、Linux)でのネイティブ統合。 WebDAVを使用するためにサードパーティのソフトウェアをインストールする必要はありません。
  • 部分転送のサポート。
  • 認証のためのより多くの選択肢。 HTTPを使用しているということは、 NTLM Kerberos LDAPなどを意味します。 すべて可能です。

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

なぜApacheなのか?

LinuxでWebDAVをサポートするWebサーバーはたくさんあります。 ただし、ApacheにはWebDAVプロトコルの最も準拠した実装があります。 執筆時点では、NginxおよびLighttpdのWebDAVは機能しますが、部分的にしか機能しません。

前提条件

Ubuntu14.04サーバーが必要です。

始める前に、まずsudoアクセス権を持つユーザーを作成しましょう。 root としてコマンドを実行できますが、セキュリティ上の懸念からお勧めしません。 詳細については、 Ubuntu14.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権限を付与する

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

usermod -aG sudo alex

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

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

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

sudo apt-get update
sudo apt-get install apache2

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

ステップ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/

モジュールの有効化

次に、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

最初の行に、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 webmaster@localhost
        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ロックデータベースの名前を指定します。 ファイルへのパスである必要があります。 ファイルを作成する必要はありません。 ディレクトリは、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に作成する必要があります。 テキストが含まれている必要があります。これはサンプルテキストファイルです。

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

Macの場合は、Finderを開きます。 メニューバーでGoを見つけ、サーバーに接続オプションを選択します。

WebDAV Mac Step 1

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

WebDAV Mac Step 2

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

WebDAV Mac Step 3

ステップ3—認証の追加

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

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

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

WebDAV compatibility

HTTP を使用している場合は、すべてのオペレーティングシステムで機能するため、ダイジェスト認証を使用してください。 HTTPS を使用している場合は、基本認証を使用するオプションがあります。

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

ダイジェスト認証

ユーザーのパスワードを保存するファイル(users.passwordと呼ばれる)を生成してみましょう。 ダイジェスト認証には、ユーザーの名前空間として機能するrealmフィールドがあります。 レルムとしてwebdavを使用します。 最初のユーザーは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 webmaster@localhost
    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 ディレクティブは、/var/www/webdavディレクトリに対して、Digestスキームを使用した認証が必要であることをApacheに指示します。

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の場合は、Finderを開きます。 メニューバーでGoを見つけ、サーバーに接続オプションを選択します。

WebDAV Mac Step 1

サーバーアドレスを入力します。 そのはず http:// / webdav接続を押します。

WebDAV Mac Step 2

ユーザー名とpsswordの入力を求められます。 サーバー上に作成したユーザーの1つを入力し、接続を押します。

WebDAV Mac Step 3

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

WebDAV Mac Step 4

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

WebDAV Mac Step 5

Finderを使用すると、通常どおりにファイルを追加または名前変更したり、新しいディレクトリを作成したりできます。 以下は最終結果です。

WebDAV Mac Step 6

ウィンドウズ

Windowsでは、ファイルエクスプローラーを開きます。 左側のサイドバーに、ネットワークアイコンがあります。

WebDAV Windows Step 1

ネットワークアイコンを右クリックします。 オプションネットワークドライブのマップを含むコンテキストメニューが表示されます。 それをクリックします。

WebDAV Windows Step 2

フォルダフィールドにサーバーアドレスを入力します。 そのはず http:// / webdav 。 ログインが異なる場合は、別のクレデンシャルを使用して接続を選択してください。 終了を押します。

WebDAV Windows Step 3

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

WebDAV Windows Step 4

接続すると、ファイルエクスプローラーの左側のサイドバーにネットワークドライブとして表示されます。

WebDAV Windows Step 5

Linux(Ubuntu)

LinuxデスクトップオペレーティングシステムとしてUbuntu14.04を使用しています。 Ubuntuで、ファイルを開きます。 これは、左側のサイドバーにあるサーバーに接続オプションです。 それをクリックします。

WebDAV Linux Step 1

サーバーアドレスを入力します。 そのはず dav:// / webdav接続を押します。

WebDAV Linux Step 2

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

WebDAV Linux Step 3

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

WebDAV Linux Step 4

結論

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