WebDAV(Web Distributed Authoring and Versioning)는 http(s)를 기반으로 하여 웹을 읽고 쓸 수 있는 매개체로 만드는 웹 협업 프로토콜이다.
WebDAV와 ftp와의 차이는 http와 ftp의 차이로도 볼 수 있으며 이 한마디로 기나긴 설명을 충분히 갈음할만하다고 생각한다. (stateless vs. stateful, mountable vs. cli 등)
WebDAV는 http의 확장이기 때문에 http 서버 위에서 동작한다.
그러므로 http를 설치한 후 conf.d에 webdav.conf를 작성하기만 하면 된다.
물론 최종적인 WebDAV 서비스는 https로 하겠지만 이 글에서 같이 다루기에는 양이 많아 다음 게시물로 작성하였다.
필자의 NAS 환경인 Centos7을 기준으로 설명한다.
우선 httpd(apache)를 설치한다.
$ sudo yum install httpd
그 후 /etc/httpd/conf.d/webdav.conf를 생성하여 다음과 같이 작성한다.
username 대신 사용하고자 하는 계정을 넣어주면 된다.
이 때 사용하고자 하는 계정의 그룹을 apache로 해주어야 WebDAV가 해당 계정으로 디렉터리에 접근할 수 있다.
# DAV Global Setting DavLockDB /etc/httpd/var/DAVLockDB ServerAdmin Serveradmin@addr.ess DocumentRoot /var/www/html/webdav/ ErrorLog /var/log/httpd/error.log CustomLog /var/log/httpd/access.log combined Alias /Webdav /storage/hdd <VirtualHost *:80> </VirtualHost> <Location /Document> DAV On Options All AuthType Basic AuthName "WebDAV" AuthUserFile /etc/httpd/.htpasswd <Limit GET PROPFIND OPTIONS REPORT> Require user username </Limit> <LimitExcept GET PROPFIND OPTIONS REPORT> Require user username </LimitExcept> </Location>
파일의 각 속성이나 쓰임새를 다루기에는 너무 방대하므로 언젠가 기회가 되면 정리하여 글을 덧붙일 예정이다.
이후 80포트를 오픈하고 webdav를 사용하면 된다.
혹여라도 WebDAV로 디렉터리 접근이 되지 않는다면 SELinux 설정을 확인해보자.
다음과 같이 httpd_sys_rw_content_t 타입의 보안 속성이 있지 않을 경우 apache에서 접근할 수 없다.
drwxrwxrwx. apache apache system_u:object_r:httpd_sys_rw_content_t:s0 dir1 drwxrwxrwx. apache apache system_u:object_r:httpd_sys_rw_content_t:s0 dir2 drwxrwxrwx. apache apache system_u:object_r:httpd_sys_rw_content_t:s0 dir3
속성은 다음처럼 부여한다.
$ sudo chcon -t httpd_sys_rw_content_t -R dir1