Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
<?xml version="1.0" encoding="EUC-KR"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ko" xml:lang="ko"><head>
<meta content="text/html; charset=EUC-KR" http-equiv="Content-Type" />
<!--
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
This file is generated from xml source: DO NOT EDIT
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-->
<title>mod_dav - Apache HTTP Server Version 2.4</title>
<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link rel="stylesheet" type="text/css" href="../style/css/prettify.css" />
<script src="../style/scripts/prettify.min.js" type="text/javascript">
</script>
<link href="../images/favicon.ico" rel="shortcut icon" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/">모듈</a> | <a href="../mod/directives.html">지시어들</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">용어</a> | <a href="../sitemap.html">사이트맵</a></p>
<p class="apache">Apache HTTP Server Version 2.4</p>
<img alt="" src="../images/feather.png" /></div>
<div class="up"><a href="./"><img title="<-" alt="<-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">HTTP Server</a> > <a href="http://httpd.apache.org/docs/">Documentation</a> > <a href="../">Version 2.4</a> > <a href="./">모듈</a></div>
<div id="page-content">
<div id="preamble"><h1>아파치 모듈 mod_dav</h1>
<div class="toplang">
<p><span>가능한 언어: </span><a href="../en/mod/mod_dav.html" hreflang="en" rel="alternate" title="English"> en </a> |
<a href="../fr/mod/mod_dav.html" hreflang="fr" rel="alternate" title="Français"> fr </a> |
<a href="../ja/mod/mod_dav.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> |
<a href="../ko/mod/mod_dav.html" title="Korean"> ko </a></p>
</div>
<div class="outofdate">이 문서는 최신판 번역이 아닙니다.
최근에 변경된 내용은 영어 문서를 참고하세요.</div>
<table class="module"><tr><th><a href="module-dict.html#Description">설명:</a></th><td>Distributed Authoring and Versioning
(<a href="http://www.webdav.org/">WebDAV</a>) 기능</td></tr>
<tr><th><a href="module-dict.html#Status">상태:</a></th><td>Extension</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">모듈명:</a></th><td>dav_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">소스파일:</a></th><td>mod_dav.c</td></tr></table>
<h3>요약</h3>
<p>이 모듈은 아파치에 <a href="http://www.webdav.org">WebDAV</a>
('Web-based Distributed Authoring and Versioning') class 1과
class 2 기능을 추가한다. WebDAV는 원격 웹서버의 자원과
콜렉션(collection)을 <span class="transnote">(<em>역주;</em> 콜렉션은 파일시스템의 디렉토리와
같은 개념이다)</span> 만들고, 옮기고, 복사하고, 지울
수 있도록 HTTP 프로토콜을 확장한 것이다.</p>
</div>
<div id="quickview"><a href="https://www.apache.org/foundation/contributing.html" class="badge"><img src="https://www.apache.org/images/SupportApache-small.png" alt="Support Apache!" /></a><h3>주제</h3>
<ul id="topics">
<li><img alt="" src="../images/down.gif" /> <a href="#example">WebDAV 사용하기</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#security">보안 문제</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#complex">복잡한 설정</a></li>
</ul><h3 class="directives">지시어들</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#dav">Dav</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#davdepthinfinity">DavDepthInfinity</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#davmintimeout">DavMinTimeout</a></li>
</ul>
<h3>Bugfix checklist</h3><ul class="seealso"><li><a href="https://www.apache.org/dist/httpd/CHANGES_2.4">httpd changelog</a></li><li><a href="https://bz.apache.org/bugzilla/buglist.cgi?bug_status=__open__&list_id=144532&product=Apache%20httpd-2&query_format=specific&order=changeddate%20DESC%2Cpriority%2Cbug_severity&component=mod_dav">Known issues</a></li><li><a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2&component=mod_dav">Report a bug</a></li></ul><h3>참고</h3>
<ul class="seealso">
<li><code class="directive"><a href="../mod/mod_dav_fs.html#davlockdb">DavLockDB</a></code></li>
<li><code class="directive"><a href="../mod/core.html#limitxmlrequestbody">LimitXMLRequestBody</a></code></li>
<li><a href="http://www.webdav.org">WebDAV 정보</a></li>
<li><a href="#comments_section">Comments</a></li></ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="example" id="example">WebDAV 사용하기</a></h2>
<p><code class="module"><a href="../mod/mod_dav.html">mod_dav</a></code>를 사용하려면 <code>httpd.conf</code>
파일에 아래과 같이 추가한다:</p>
<div class="example"><p><code>Dav On</code></p></div>
<p>그러면 <code class="module"><a href="../mod/mod_dav_fs.html">mod_dav_fs</a></code> 모듈이 구현하는 DAV
파일시스템 제공자(provider)를 사용한다. 그러므로 이 모듈도
서버에 같이 컴파일되있거나 <code class="directive"><a href="../mod/mod_so.html#loadmodule">LoadModule</a></code> 지시어로 실행중에
읽어들여야 한다.</p>
<p>또, DAV 잠금(lock) 데이터베이스의 위치를 <code>httpd.conf</code>
파일의 전역 부분에 <code class="directive"><a href="../mod/mod_dav_fs.html#davlockdb">DavLockDB</a></code> 지시어를 사용하여
지정해야 한다:</p>
<div class="example"><p><code>
DavLockDB /usr/local/apache2/var/DavLock
</code></p></div>
<p>아파치를 실행하는 <code class="directive"><a href="../mod/mpm_common.html#user">User</a></code>와 <code class="directive"><a href="../mod/mpm_common.html#group">Group</a></code>은 잠금 데이터베이스가
있는 디렉토리에 쓰기 권한을 가져야 한다.</p>
<p>DAV를 사용하는 위치에 접근을 제한하기위해 <code class="directive"><a href="../mod/core.html#location"><Location></a></code> 지시어
안에 <code class="directive"><a href="../mod/core.html#limit"><Limit></a></code>
지시어를 사용할 수 있다. DAV 클라이언트가 한번의 요청에
보낼 수 있는 최대 바이트수를 제한하려면 <code class="directive"><a href="../mod/core.html#limitxmlrequestbody">LimitXMLRequestBody</a></code> 지시어를 사용한다.
"일반적인" <code class="directive"><a href="../mod/core.html#limitrequestbody">LimitRequestBody</a></code>
지시어는 DAV 요청과 관계없다.</p>
<div class="example"><h3>전체 예제</h3><p><code>
DavLockDB /usr/local/apache2/var/DavLock<br />
<br />
<Location /foo><br />
<span class="indent">
Dav On<br />
<br />
AuthType Basic<br />
AuthName DAV<br />
AuthUserFile user.passwd<br />
<br />
<LimitExcept GET OPTIONS><br />
<span class="indent">
require user admin<br />
</span>
</LimitExcept><br />
</span>
</Location><br />
</code></p></div>
<p><code class="module"><a href="../mod/mod_dav.html">mod_dav</a></code>는 Greg Stein이 만든 <a href="http://www.webdav.org/mod_dav/">Apache 1.3용 mod_dav</a>를
기반으로 만들었다. 모듈에 대한 더 자세한 정보는 그 사이트를
참고하라.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="security" id="security">보안 문제</a></h2>
<p>DAV를 사용하면 원격 클라이언트가 서버의 파일을 조작할
수 있기때문에, <code class="module"><a href="../mod/mod_dav.html">mod_dav</a></code>를 사용하기 전에
서버가 안전한지 특별히 관심을 가져야 한다.</p>
<p>서버에서 DAV가 가능한 위치는 인증으로 보호해야 한다.
HTTP Basic Authentication는 추천하지 않는다. 최소한
<code class="module"><a href="../mod/mod_auth_digest.html">mod_auth_digest</a></code> 모듈이 제공하는 HTTP Digest
Authentication을 사용해야 한다. 거의 모든 WebDAV 클라이언트는
이 인증 방식을 지원한다. 아니면 <a href="../ssl/">SSL</a>
연결에서 Basic Authentication을 사용할 수도 있다.</p>
<p><code class="module"><a href="../mod/mod_dav.html">mod_dav</a></code>가 파일을 조작하려면, 아파치를
실행하는 <code class="directive"><a href="../mod/mpm_common.html#user">User</a></code>와
<code class="directive"><a href="../mod/mpm_common.html#group">Group</a></code>은 해당
디렉토리와 파일에 쓰기 권한을 가져야 한다. 또, 새로 생성한
파일은 <code class="directive"><a href="../mod/mpm_common.html#user">User</a></code>와
<code class="directive"><a href="../mod/mpm_common.html#group">Group</a></code>이 소유하게
된다. 그래서 아무나 이 계정에 접근할 수 없도록 하라. DAV
저장소는 아파치만 접근할 수 있다고 가정한다. 아파치를 통하지않고
(예를 들어 FTP나 파일시스템 도구를 사용하여) 파일을 수정함을
허용하면 안된다.</p>
<p><code class="module"><a href="../mod/mod_dav.html">mod_dav</a></code>는 여러 서비스거부 공격의 대상이
될 수 있다. <code class="directive"><a href="../mod/core.html#limitxmlrequestbody">LimitXMLRequestBody</a></code> 지시어를
사용하여 큰 DAV 요청을 읽을때 메모리량을 제한할 수 있다.
<code class="directive"><a href="#davdepthinfinity">DavDepthInfinity</a></code>
지시어를 사용하여 많은 메모리를 소모하기위한 매우 큰 저장소의
<code>PROPFIND</code> 요청을 막을 수 있다. 단순히 클라이언트가
여러 큰 파일들로 디스크공간을 채우는 서비스거부 공격도 가능하다.
아파치에서 이를 막을 직접적인 방법은 없다. 그러므로 신뢰하지않는
사용자에게 DAV 접근을 허용하지 않도록하라.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="complex" id="complex">복잡한 설정</a></h2>
<p>일반적인 질문중 하나는 (PHP 스크립트, CGI 스크립트 등)
동적파일 작업을 위해 <code class="module"><a href="../mod/mod_dav.html">mod_dav</a></code>를 사용하는
방법이다. 이는 <code>GET</code> 요청이 파일 내용을 다운로드하지
않고 항상 스크립트를 실행하므로 어렵다. 해결방법중 하나는
내용에 두개의 URL을 대응하는 것이다. 한 URL은 스크립트를
실행하고, 다른 URL로는 파일을 다운로드하여 DAV로 작업할
수 있다.</p>
<div class="example"><p><code>
Alias /phparea /home/gstein/php_files<br />
Alias /php-source /home/gstein/php_files<br />
<Location /php-source>
<span class="indent">
DAV On<br />
ForceType text/plain<br />
</span>
</Location>
</code></p></div>
<p>이 설정에서 <code>http://example.com/phparea</code>는
PHP 스크립트의 결과를 보여주고,
<code>http://example.com/php-source</code>로는 DAV 클라이언트에서
스크립트를 수정할 수 있다.</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="Dav" id="Dav">Dav</a> <a name="dav" id="dav">지시어</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">설명:</a></th><td>WebDAV HTTP 메써드를 시작한다</td></tr>
<tr><th><a href="directive-dict.html#Syntax">문법:</a></th><td><code>Dav On|Off|<var>provider-name</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">기본값:</a></th><td><code>Dav Off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">사용장소:</a></th><td>directory</td></tr>
<tr><th><a href="directive-dict.html#Status">상태:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">모듈:</a></th><td>mod_dav</td></tr>
</table>
<p>지정한 위치에서 WebDAV HTTP 메써드를 사용하려면
<code class="directive">Dav</code> 지시어를 사용한다:</p>
<div class="example"><p><code>
<Location /foo><br />
<span class="indent">
Dav On<br />
</span>
</Location>
</code></p></div>
<p><code>On</code> 값은 실제로 <code class="module"><a href="../mod/mod_dav_fs.html">mod_dav_fs</a></code>
모듈이 제공하는 기본 제공자인 <code>filesystem</code>의
별칭이다. 어떤 위치에서 DAV를 시작하면 하위공간에서 DAV를
사용안하도록 설정할 수 <em>없음을</em> 주의하라. 완전한
설정예는 <a href="#example">위의 절</a>을 참고하라.</p>
<div class="warning">
서버를 안전하게 구성할때까지 WebDAV을 사용하지 마라. 그렇지
않으면 누구라도 서버를 통해 파일을 분배할 수 있게 된다.
</div>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="DavDepthInfinity" id="DavDepthInfinity">DavDepthInfinity</a> <a name="davdepthinfinity" id="davdepthinfinity">지시어</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">설명:</a></th><td>PROPFIND의 Depth: Infinity 요청을 허가한다</td></tr>
<tr><th><a href="directive-dict.html#Syntax">문법:</a></th><td><code>DavDepthInfinity on|off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">기본값:</a></th><td><code>DavDepthInfinity off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">사용장소:</a></th><td>주서버설정, 가상호스트, directory</td></tr>
<tr><th><a href="directive-dict.html#Status">상태:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">모듈:</a></th><td>mod_dav</td></tr>
</table>
<p><code class="directive">DavDepthInfinity</code> 지시어를 사용하면
'Depth: Infinity' 헤더를 가진 <code>PROPFIND</code> 요청을
허가한다. 이런 요청을 사용하여 서비스거부 공격이 가능하기
때문에 기본적으로 허용하지 않는다.</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="DavMinTimeout" id="DavMinTimeout">DavMinTimeout</a> <a name="davmintimeout" id="davmintimeout">지시어</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">설명:</a></th><td>서버가 DAV 자원에 대해 유지할 잠금의 최소시간</td></tr>
<tr><th><a href="directive-dict.html#Syntax">문법:</a></th><td><code>DavMinTimeout <var>seconds</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">기본값:</a></th><td><code>DavMinTimeout 0</code></td></tr>
<tr><th><a href="directive-dict.html#Context">사용장소:</a></th><td>주서버설정, 가상호스트, directory</td></tr>
<tr><th><a href="directive-dict.html#Status">상태:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">모듈:</a></th><td>mod_dav</td></tr>
</table>
<p>클라이언트가 DAV 자원에 잠금(lock)을 요청할때 서버가
알아서 잠금을 제거할 수 있는 시간을 같이 알려줄 수 있다. 이 값은
단지 요청일뿐이며, 서버는 클라이언트가 요청한 값을 무시하고
클라이언트에게 임의의 시간을 알려줄 수 있다.</p>
<p><code class="directive">DavMinTimeout</code> 지시어는 클라이언트에게
보낼 최소 잠금 시간을 (초단위) 지정한다. Microsoft Web Folders는
기본값으로 120 초를 사용한다. <code class="directive">DavMinTimeout</code>에
(600 초와 같이) 더 높은 값을 사용하면 클라이언트가 네트웍
지연때문에 잠금을 잃게되는 경우를 줄일 수 있다.</p>
<div class="example"><h3>예제</h3><p><code>
<Location /MSWord><br />
<span class="indent">
DavMinTimeout 600<br />
</span>
</Location>
</code></p></div>
</div>
</div>
<div class="bottomlang">
<p><span>가능한 언어: </span><a href="../en/mod/mod_dav.html" hreflang="en" rel="alternate" title="English"> en </a> |
<a href="../fr/mod/mod_dav.html" hreflang="fr" rel="alternate" title="Français"> fr </a> |
<a href="../ja/mod/mod_dav.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> |
<a href="../ko/mod/mod_dav.html" title="Korean"> ko </a></p>
</div><div class="top"><a href="#page-header"><img src="../images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">Comments</a></h2><div class="warning"><strong>Notice:</strong><br />This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our <a href="http://httpd.apache.org/lists.html">mailing lists</a>.</div>
<script type="text/javascript"><!--//--><![CDATA[//><!--
var comments_shortname = 'httpd';
var comments_identifier = 'http://httpd.apache.org/docs/2.4/mod/mod_dav.html';
(function(w, d) {
if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
d.write('<div id="comments_thread"><\/div>');
var s = d.createElement('script');
s.type = 'text/javascript';
s.async = true;
s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
(d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
}
else {
d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
}
})(window, document);
//--><!]]></script></div><div id="footer">
<p class="apache">Copyright 2017 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/">모듈</a> | <a href="../mod/directives.html">지시어들</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">용어</a> | <a href="../sitemap.html">사이트맵</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
if (typeof(prettyPrint) !== 'undefined') {
prettyPrint();
}
//--><!]]></script>
</body></html>