[NAS 구축] 6. WebDAV 설치

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 디렉터리를 만들지 않고 마운트된 스토리지를 직접 접근하도록 설정하였다.
만약 dav 디렉터리를 만들어 사용하고 싶다면 DocumentRoot를 설정하고 <Directory> 설정을 통해 dav 디렉터리를 오픈할 수 있다.
하지만 필자처럼 Document 경로 밖의 디렉터리를 접근하고 싶다면 <Location> 설정을 사용해야 한다.

# DAV Global Setting
DavLockDB       /etc/httpd/var/DAVLockDB
ServerAdmin     Serveradmin@addr.ess
ErrorLog        /var/log/httpd/error.log
CustomLog       /var/log/httpd/access.log combined

Alias   /Webdav       /storage/hdd

<Location /Webdav>
    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>

파일의 각 속성이나 쓰임새를 다루기에는 너무 방대하므로 언젠가 기회가 되면 정리하여 글을 덧붙일 예정이다.

이제 apache에 계정을 등록하면 된다.
httpd를 처음 깔았다면 /etc/httpd/.htpasswd 파일이 없을 것이므로 htpasswd 사용 시 -c 옵션으로 파일을 생성하며 사용자를 등록하자.
만약 파일이 존재하는 경우 -c를 빼고 사용하면 된다.
참고로 -c를 쓰는 순간 기존 파일이 덧씌워진다는 점을 주의하자.

$ htpasswd -c /etc/httpd/.htpasswd <AccountName>

이후 80포트를 오픈하고 webdav를 사용하면 된다.
혹여라도 WebDAV로 디렉터리 접근이 되지 않는다면 폴더 권한과 SELinux 설정을 확인해보자.
폴더 권한의 경우 apache가 쓰기 가능한 상태인지 확인하면 되며 (불가능하다면 apache를 그룹으로 설정한 후 그룹에 대한 쓰기 권한을 일괄 부여하면 편하다)
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

SELinux 속성은 다음처럼 부여한다.

$ sudo chcon -t httpd_sys_rw_content_t -R dir1
Series Navigation<< [NAS 구축] 5. 토렌트 서버 설치[NAS 구축] 7. WebDAV에 Let’s Encrypt SSL 인증서 적용 >>

댓글 남기기