KaliLinux 2017.1: ファイルサーバのWebDAVをインストールする

WebDAVのインストール方法について記載します。

1 WebDAVをインストールする

  • この記事ではhttpsの為にデフォルトのSSL/TLS証明書を使っています。別にSSL/TLS証明書を用意している場合はそちらをお使いください。
  • SSLを利用するのでhttpsやdavsで接続してください。
  • Digest認証を使用します。ユーザ名はWEBDAV_USERNAMEの値で、パスワードはWEBDAV_PASSWORDの値です。
#!/bin/sh

set -e

[ -z "${WEBDAV_USERNAME}" ] && \
  WEBDAV_USERNAME=webdav
[ -z "${WEBDAV_PASSWORD}" ] && \
  WEBDAV_PASSWORD=webdav

sudo apt install -y apache2
sudo systemctl enable apache2

cat <<EOF | sudo tee /etc/apache2/sites-available/webdav.conf
Alias /webdav /var/www/webdav

<VirtualHost _default_:443>
  SSLEngine on
  SSLCertificateFile    /etc/ssl/certs/ssl-cert-snakeoil.pem
  SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
</VirtualHost>

<Location /webdav>
  DAV On
  SSLRequireSSL
  AuthType Digest
  AuthName webdav
  AuthUserFile /etc/apache2/.webdav
  Require valid-user
</Location>
EOF

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

for mod in dav dav_fs dav_lock ssl auth_digest; do
  sudo a2enmod ${mod}
done
sudo a2ensite webdav
sudo systemctl restart apache2

yes "${WEBDAV_PASSWORD}" | \
  sudo htdigest -c /etc/apache2/.webdav webdav ${WEBDAV_USERNAME}

2 WebDAVへアクセスする

davfsのマウントを可能にするdavfs2パッケージをインストールします。

$ sudo apt install -y davfs2

mount -t davfsでマウントします。証明書を組み込んでいないので警告がでます。

$ sudo mount -t davfs https://localhost/webdav /mnt
Please enter the username to authenticate with server
https://localhost/webdav or hit enter for none.
  Username: webdav
Please enter the password to authenticate user webdav with server
https://localhost/webdav or hit enter for none.
  Password:
/sbin/mount.davfs: the server certificate does not match the server name
  issuer:      <server>
  subject:     <server>
  identity:    <server>
  fingerprint: 0f:12:e7:65:67:63:7a:a8:e5:54:14:69:dd:6f:b5:80:1c:01:9f:cd
You only should accept this certificate, if you can
verify the fingerprint! The server might be faked
or there might be a man-in-the-middle-attack.
Accept certificate for this session? [y,N] y

/mnt/hello.txtを書き込みます。

$ echo hello | sudo tee /mnt/hello.txt

即座にファイルを反映させる為にアンマウントします。

$ sudo umount /mnt

WebDAVのディレクトリにファイルが反映されています。

$ sudo cat /var/www/webdav/hello.txt
hello