Webフォルダサーバー構築(WebDAV)

最終更新日: 2017.05.24

<<トップページ <<新着情報 <<逆引き集 <<リンク集 <<サイト内検索 <<メルマガ <<Scientific Linuxで自宅サーバー構築 <<Fedoraで自宅サーバー構築

■概要

内部と外部で共有するWindowsファイルサーバーを構築する。
ここでは、WebサーバーのWebDAV機能を利用して、一般ユーザーcentosのホームディレクトリ内のwebdavというディレクトリ(/home/centos/webdav)を内部からはSambaでファイル共有し、外部からはWebフォルダでファイル共有する。
なお、外部からアクセスする場合、BASIC認証によるユーザー名とパスワードによるアクセス制限をかける。また、ユーザー名とパスワードが盗聴される恐れがあるため、SSLによる暗号化通信アクセス(https)のみ許可するようにする。

WebサーバーWebサーバー間通信内容暗号化Sambaファイルサーバーが構築済であること


■ACLアクセス制御の有効化

Sambaではホームディレクトリのユーザー権限でファイルアクセスするが、WebDAVではApacheの実行ユーザーであるapache権限でアクセスするため、Sambaで作成したファイルの参照・更新をWebDAV経由で行えない。逆も同様。
そこで、ACLアクセス制御機能を利用して、WebDAVでアクセスするディレクトリのみ、apache権限での参照・更新を可能にする。
[root@centos ~]# vi /etc/fstab ← fstab編集
※/homeディレクトリを別パーティションにしている場合
LABEL=/home             /home                   ext3    defaults        1 2
↓
LABEL=/home             /home                   ext3    defaults,acl    1 2 ← /homeディレクトリのACLアクセス制御を有効化

[root@centos ~]# mount -o remount /home ← ACLアクセス制御を即時有効化

※/homeディレクトリを別パーティションにしていない場合
/dev/VolGroup00/LogVol00 /                       ext3    defaults       1 1
↓
/dev/VolGroup00/LogVol00 /                       ext3    defaults,acl   1 1 ← /(ルート)ディレクトリのACLアクセス制御を有効化※

[root@centos ~]# mount -o remount / ← ACLアクセス制御を即時有効化

■共有ディレクトリ作成

[root@centos ~]# useradd -s /sbin/nologin centos ← centosユーザー登録

[root@centos ~]# passwd centos ← centosユーザーパスワード設定
Changing password for user centos.
New UNIX password: ← パスワード応答
Retype new UNIX password: ← パスワード応答(確認)
passwd: all authentication tokens updated successfully.

[root@centos ~]# chmod 711 /home/centos/ ← centosのホームディレクトリのパーミッションを変更

[root@centos ~]# mkdir /home/centos/webdav/ ← 共有ディレクトリ作成

[root@centos ~]# chown centos. /home/centos/webdav/ ← 共有ディレクトリの所有者をcentosに変更

[root@centos ~]# setfacl -m g:apache:rwx,g:apache:rwx /home/centos/webdav/
 ← 共有ディレクトリへapacheグループ権限で参照・更新・実行を許可

[root@centos ~]# setfacl -m d:g:apache:rwx,g:apache:rwx /home/centos/webdav/
 ← 共有ディレクトリへ新規作成するファイルへapacheグループ権限で参照・更新・実行を許可

[root@centos ~]# setfacl -m g:centos:rwx,g:centos:rwx /home/centos/webdav/
 ← 共有ディレクトリへcentosグループ権限で参照・更新・実行を許可

[root@centos ~]# setfacl -m d:g:centos:rwx,g:centos:rwx /home/centos/webdav/
 ← 共有ディレクトリへ新規作成するファイルへcentosグループ権限で参照・更新・実行を許可

[root@centos ~]# ll /home/centos/ ← ACLアクセス設定確認
合計 3
drwxrwxr-x+ 2 centos centos 1024 11月 28 17:00 dav ← パーミッションの後ろに+が付いていること

[root@centos ~]# getfacl /home/centos/webdav/ ← 共有ディレクトリのACL設定確認
getfacl: Removing leading '/' from absolute path names
# file: home/centos/dav
# owner: centos
# group: centos
user::rwx
group::r-x
group:apache:rwx ← apacheグループによる参照・更新・実行が許可されている
group:centos:rwx ← centosグループによる参照・更新・実行が許可されている
mask::rwx
other::r-x
default:user::rwx
default:group::r-x
default:group:apache:rwx ← 新規作成するファイルにapacheグループによる参照・更新・実行が許可されている
default:group:centos:rwx ← 新規作成するファイルにcentosグループによる参照・更新・実行が許可されている
default:mask::rwx
default:other::r-x

※ACL設定をクリアする場合
[root@centos ~]# setfacl -b /home/centos/webdav/ ← /home/centos/webdav/ディレクトリのACL設定クリア

■WebDAV設定

(1)mod_encodingインストール
WindowsでWebDAVディレクトリを扱うWebフォルダ機能では、日本語ファイル名が文字化けするため、これを解決するため、mod_encodingをインストールする。
WebDAV環境における日本語ファイル名の問題参照
なお、mod_encoding導入により、SambaでもWebフォルダでも文字化けしなくなるが、文字コードがUTF-8のため、システムの文字コードをEUCにしている場合、コンソール上では文字化けしてしまうが、Samba+WebDAVでのファイル共有さえできればいいので問題なし。
mod_encodingのインストールに必要なapxsを含んだhttpd-develをインストールする
[root@centos ~]# yum -y install httpd-devel ← httpd-develインストール

[root@centos ~]# wget http://webdav.todo.gr.jp/download/mod_encoding-20021209.tar.gz ← mod_encodingダウンロード

※最新版のURLはダウンロードページで確認すること

[root@centos ~]# wget http://webdav.todo.gr.jp/download/experimental/mod_encoding.c.apache2.20040616 ← Apache2版mod_encodingダウンロード

※最新版のURLはダウンロードページで確認すること

[root@centos ~]# tar zxvf mod_encoding-20021209.tar.gz ← mod_encoding展開

[root@centos ~]# /bin/mv mod_encoding.c.apache2.20040616 mod_encoding-20021209/mod_encoding.c ← Apache2版mod_encodingに差し替え

[root@centos ~]# cd mod_encoding-20021209/lib/ ← ディレクトリ移動

[root@centos lib]# ./configure && make && make install ← iconv-hookライブラリインストール

[root@centos lib]# cd .. ← ディレクトリ移動

Namazuの検索文字列の文字化け対処⇒参考
Apacheバージョンが2.2系の場合
[root@centos mod_encoding-20021209]# wget http://www.aconus.com/~oyaji/faq/mod_encoding.c-apache2.2-20060520.patch
 ← mod_encodingパッチダウンロード

[root@centos mod_encoding-20021209]# patch -p0 < mod_encoding.c-apache2.2-20060520.patch ← mod_encodingパッチ施工
patching file mod_encoding.c

[root@centos mod_encoding-20021209]# ./configure --with-apxs=/usr/sbin/apxs --with-iconv-hook ← Makefile作成

[root@centos mod_encoding-20021209]# vi Makefile ← Makefile編集
LIBS =  -liconv_hook
↓
LIBS = -L/usr/local/lib -liconv_hook ← 変更

install-exec-local:
        $(APXS) -i mod_encoding.so
        ↓
        $(APXS) -i -a -n encoding mod_encoding.la ← 変更

[root@centos mod_encoding-20021209]# make && make install ← mod_encodingインストール

[root@centos mod_encoding-20021209]# cd ← ディレクトリ移動

[root@centos ~]# rm -rf mod_encoding-20021209 ← mod_encoding展開先ディレクトリを削除

[root@centos ~]# rm -f mod_encoding-20021209.tar.gz ← ダウンロードしたファイルを削除

Apacheバージョンが2.0系の場合
[root@centos mod_encoding-20021209]# wget http://www.aconus.com/~oyaji/faq/mod_encoding.c-apache2.0-20060520.patch
 ← mod_encodingパッチダウンロード

[root@centos mod_encoding-20021209]# patch -p0 < mod_encoding.c-apache2.0-20060520.patch ← mod_encodingパッチ施工
patching file mod_encoding.c

[root@centos mod_encoding-20021209]# ./configure --with-apxs=/usr/sbin/apxs --with-iconv-hook ← mod_encodingのconfigure

[root@centos mod_encoding-20021209]# vi Makefile ← Makefile編集
LIBS =  -liconv_hook
↓
LIBS = -L/usr/local/lib -liconv_hook ← 変更

install-exec-local:
        $(APXS) -i mod_encoding.so
        ↓
        $(APXS) -i -a -n encoding mod_encoding.la ← 変更

[root@centos mod_encoding-20021209]# make && make install ← mod_encodingインストール

[root@centos mod_encoding-20021209]# cd ← ディレクトリ移動

[root@centos ~]# rm -rf mod_encoding-20021209 ← mod_encoding展開先ディレクトリを削除

[root@centos ~]# rm -f mod_encoding-20021209.tar.gz ← ダウンロードしたファイルを削除

(2)mod_encoding設定
[root@centos ~]# vi /etc/httpd/conf.d/mod_encoding.conf ← mod_encoding設定ファイル作成
EncodingEngine        on

SetServerEncoding     UTF-8

DefaultClientEncoding UTF-8 CP932 EUCJP-MS

AddClientEncoding "Microsoft .* DAV 1.1" ASCII CP932 UTF-8
AddClientEncoding "Microsoft .* DAV" UTF-8 CP932
AddClientEncoding "(Microsoft .* DAV $)" UTF-8 CP932
AddClientEncoding "(Microsoft .* DAV 1.1)" CP932 UTF-8
AddClientEncoding "Microsoft-WebDAV*" UTF-8 CP932
AddClientEncoding "RMA/*" CP932
AddClientEncoding "xdwin9x/" CP932
AddClientEncoding "cadaver/" UTF-8 EUCJP-MS
AddClientEncoding "Mozilla/" EUCJP-MS

[root@centos ~]# /etc/rc.d/init.d/httpd restart ← Apache再起動
httpd を停止中:                                            [  OK  ]
httpd を起動中:                                            [  OK  ]

(3)WebDAV設定
[root@centos ~]# vi /etc/httpd/conf.d/webdav.conf ← WebDAV設定ファイル作成
Alias /webdav/centos /home/centos/webdav
<Directory "/home/centos/webdav">
    DAV On
    SSLRequireSSL
    AllowOverride None
    Options None
    AuthType Basic
    AuthName WebDAV
    AuthUserFile /etc/httpd/conf/.htpasswd
    Require user centos
    アクセス元ホストを制限する場合(ここから)
    【CentOS7の場合】
    Require local
    Require ip 192.168.1.0/24 ← 内部(例:192.168.1.XXX)からのアクセスを許可
    Require host .ppp.asahi-net.or.jp ← 外部(例:xxx.ppp.asahi-net.or.jp)からのアクセスを許可

    【CentOS6の場合】
    Order deny,allow
    Deny from all
    Allow from 192.168.1.0/24 ← 内部(例:192.168.1.XXX)からのアクセスを許可
    Allow from .ppp.asahi-net.or.jp ← 外部(例:xxx.ppp.asahi-net.or.jp)からのアクセスを許可
    アクセス元ホストを制限する場合(ここまで)
</Directory>

[root@centos ~]# /etc/rc.d/init.d/httpd restart ← Apache再起動
httpd を停止中:                                            [  OK  ]
httpd を起動中:                                            [  OK  ]

(4)BASIC認証用ユーザー登録
/etc/httpd/conf/.htpasswdがない場合
[root@centos ~]# htpasswd -c /etc/httpd/conf/.htpasswd centos ← BASIC認証用ユーザー新規登録
New password: ← パスワード応答
Re-type new password: ← パスワード応答(確認)
Adding password for user centos

既に/etc/httpd/conf/.htpasswdがある場合
[root@centos ~]# htpasswd /etc/httpd/conf/.htpasswd centos ← BASIC認証用ユーザー追加登録
New password: ← パスワード応答
Re-type new password: ← パスワード応答(確認)
Adding password for user centos

■WebDAV確認

(1)Windows側でWebフォルダの設定
マイネットワークネットワークプレースの追加



次へ



次へ



「インターネットまたはネットワークのアドレス」へ共有するディレクトリのアドレス(例:https://サーバー名/webdav/centos)を入力して次へ



BASIC認証用ユーザー名とパスワードを入力してOK



次へ



完了

(2)Samba⇔WebDAV間での相互アクセス確認
・Samba経由で/home/centos/webdav/ディレクトリに作成したファイル(Word文書等)をWebDAV経由で参照(※1)できること

・Samba経由で/home/centos/webdav/ディレクトリに作成したファイル(Word文書等)をWebDAV経由で更新(※1)できること

・WebDAV経由で/home/centos/webdav/ディレクトリに作成(※2)したファイル(Word文書等)をSamba経由で参照できること

・WebDAV経由で/home/centos/webdav/ディレクトリに作成(※2)したファイル(Word文書等)をSamba経由で更新できること

※1 Webフォルダ上で該当ファイルをダブルクリックすれば参照することができるが、更新する場合はいったんローカルにコピーしてから更新し、更新が終わったらWebフォルダ上に上書きコピーする

※2 Webフォルダ上でファイルを新規作成することはできないので、ローカルで作成したファイルをWebフォルダ上にコピーする






▲このページのトップへ戻る

LPIロゴ Copyright© 2005-2017 fallenangels, All rights reserved.
ご自由にリンクしてください(連絡は不要です)
本ページへのご意見・ご要望、誤字・脱字・リンク切れ等のご連絡はこちらからお願いします