1

글타래: .DS_Store의 비밀

Mac OS X의 Finder는 각각의 디렉토리에 (파일 이름 앞에 점을 붙여서) 보이지 않는 ".DS_Store" 파일을 만들어서, 이 파일 속에 해당 디렉토리 안에 들어있는 파일들의 항목을 포함하는 정보를 담아놓게 됩니다. 그래서 이 .DS_Store를 간단한 글자 편집기로 불러서 읽어 보면 해당 디렉토리의 구조를 살펴볼 수가 있습니다.

여기서 문제가 되는 것은, Mac OS X "client version"에서 Apache를 돌릴 경우 만약 서버 운용자가 Finder에서 웹 디렉토리를 "한 번이라도 열어 본 적"이 있다면 생겼을 .DS_Store 파일로 인해, 악의를 품은 사용자가 웹 브라우저를 통해 http://your.mac.com/some_directory/.ds_store와 같은 주소로 해당 디렉토리에 어떤 파일들이 위치하고 있는 지를 알 수가 있게 되는 보안상의 허점이 생긴다는 것입니다. 

이 문제에 대한 해결책으로는, 아래와 같이 Apache 설정 파일인 httpd.conf에 <FilesMatch> 지시자와 함께 적절한 regular expressions을 써서 해당 파일로의 접근을 막아낼 수가 있습니다.

# The Finder creates an invisible .DS_Store file in each directory.

# For 'no-index' access controls to be effective, we had better forbid

# retrieval of that file as well. Note that we have to protect

# against the same case-insensitivity bug as above.

#

<FilesMatch "^.[Dd][Ss]_[Ss]">

     Order allow,deny

     Deny from all

</FilesMatch>

위의 regular expression에서는 Mac OS X의 대소문자를 구별하지 못하는 문제도 같이 고려되어 있습니다. 물론, 위의 설정이 적용되기 위해서는 터미널에서 다음과 같은 명령으로 Apache를 재시동 하셔야 합니다.

sudo apachectl restart

참고로, Mac OS X Server 10.3.5의 경우에서는 위 문제에 대한 방지로 httpd.conf에 다음과 같이 설정이 되어 있습니다.

#### For Mac OS X Server: Note the method used to deny access to these

#### files so that files on case-insensitive HFS+ volumes are protected.

#### Also note that .DS_Store files created by the Finder are denied here.

#### (Consider adding .FBCIndex files)

#### (Note: Denying .DS_S* may interfere with Finder WebDAV operation)

#

<Files ~ "^.([Hh][Tt]|[Dd][Ss]_[Ss])">

     Order allow,deny

     Deny from all

    Satisfy All

</Files>

여기에는 디렉토리의 Apache 설정 관련 .htaccess 파일과 .htpasswd 파일로의 접근 방지도 함께 추가되어 있음을 보실 수 있습니다.

:arrow: 여기서 제기된 Apache와 .DS_Store 파일에 관한 보안상의 문제는 Mac OS X Server 10.1 이후에서는 이미 고쳐진 것임을 밝혀둡니다.

참고 글: MacInTouch

+ = ²

2

댓글: .DS_Store의 비밀

Apple 기술 문서에 네트웍 접속에 의한 .DS_Store 파일의 생성을 막는 방법이 소개되어서 여기에 옮깁니다.

Mac OS X의 Finder에서 원격 파일 서버로 접근할 때 .DS_Store 파일들이 생성되는 것을 막으려면 다음과 같은 단계들을 따릅니다.

주의: 이 것은 SMB/CIFS, AFP, NFS, 그리고 WebDAV 서버로의 접근에도 모두 적용됩니다.

1. 터미널을 열고,
2. 다음과 같이 입력합니다:

defaults write com.apple.desktopservices DSDontWriteNetworkStores true

3. 리턴 키를 치고,
4. 컴퓨터를 재시동 합니다.

컴퓨터의 다른 모든 사용자들에게도 똑같이 적용하려면, 각각의 사용자 계정으로 로그 인 한 후에 위의 단계들을 반복하거나, 위의 단계들로 수정된 com.apple.desktopservices.plist 파일을 /Library/Preferences 폴더에 복사해 넣으면 됩니다.

이 과정들은 로컬 볼륨에서의 .DS_Store 파일들의 생성을 막지는 못합니다. 또한 이전에 이미 생성되었던 .DS_Store 파일들이 원격 파일 서버로 복사되는 것도 막지를 못한답니다.

:arrow: 참고: .DS_Store 파일들로 조종되는 대부분의 설정들은 예를 들어, Finder 창의 위치, 보기 형태, 아이콘 위치 등과 같이 외관상의 설정들입니다. 하지만, 또한 OS X에서는 Finder의 주석들(comments)을 이 곳에 저장해 놓기 때문에, .DS_Store 파일들의 생성을 막으면 정보의 손실을 읽으킬 수도 있습니다.

+ = ²