맨위로가기

확장 파일 속성

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

확장 파일 속성은 파일에 대한 추가 정보를 저장하는 데 사용되는 메타데이터로, 여러 운영 체제에서 지원된다. AIX, BeOS/Haiku, FreeBSD, Linux, macOS, OpenBSD, OS/2, Solaris, Windows NT 등 다양한 운영 체제에서 구현되며, 각 시스템은 확장 속성을 구현하는 방식과 기능에 차이가 있다. 예를 들어, Linux는 다양한 파일 시스템에서 xattr을 지원하며, macOS는 HFS+ 파일 시스템의 속성 파일 기능을 사용하여 확장 속성을 지원한다. 이러한 확장 속성은 파일 관리, 데이터 관리, 시스템 기능 등 다양한 목적으로 활용된다.

더 읽어볼만한 페이지

  • 메타데이터 - DOAJ
    DOAJ는 과학 및 학술 저널의 오픈 액세스 가시성을 높이고 이용 편의성을 향상시켜 접근성과 영향력을 확대하며, 피어 리뷰를 거친 학술지를 엄격하게 심사하여 수록하고 모든 콘텐츠를 무료로 제공하는 오픈 액세스 저널 디렉토리이다.
  • 메타데이터 - 해시태그
    해시태그는 2007년 트위터에서 관심 주제를 묶기 위해 제안되어 마이크로블로깅 네트워크에서 널리 사용되기 시작했으며, 다양한 분야에서 활용되고 언어학적 분석의 대상이 되기도 한다.
  • 파일 시스템 - 부트 섹터
    부트 섹터는 시스템 부팅 코드를 담은 저장 매체의 특정 영역으로, 볼륨 부트 레코드(VBR)와 마스터 부트 레코드(MBR)로 나뉘며, BIOS는 이를 실행하고 UEFI는 부트로더를 직접 로드하지만 바이러스 공격에 취약하다.
  • 파일 시스템 - ZFS
    ZFS는 Jeff Bonwick 등이 설계하고 구현한 파일 시스템으로, 데이터 무결성, 스냅샷, RAID-Z 등의 기능을 제공하며, 썬 마이크로시스템즈에서 개발되어 OpenZFS 프로젝트를 통해 다양한 운영체제에서 사용된다.
확장 파일 속성
파일 속성 개요
일반 정보
종류파일 시스템 기능
사용 운영 체제리눅스
macOS
윈도우 NT
특징
설명파일에 연결된 메타데이터 확장
기능접근 제어 목록 (ACL)
파일 생성자
파일 인코딩
체크섬
디지털 서명
장점파일 시스템 메타데이터 기능을 확장하여 보안 및 기능 향상
구현
리눅스ext2, ext3, ext4, JFS, XFS, Btrfs 파일 시스템에서 지원
macOSHFS Plus, APFS 파일 시스템에서 지원
윈도우 NTNTFS 파일 시스템에서 지원
활용
예시파일의 접근 권한 제어, 파일 유형 저장, 파일 관련 정보 저장 등에 활용
보안파일 접근 제어 목록을 통해 파일 접근 권한을 세밀하게 제어 가능
관리파일 생성자, 파일 인코딩 등의 정보를 저장하여 파일 관리 효율성을 높임

2. 구현

AIX, FreeBSD, 리눅스, macOS 등 여러 운영 체제에서 확장 파일 속성(Extended File Attributes)을 구현하여 사용하고 있다.


  • AIX: AIX의 JFS2 v2 파일 시스템은 `getea`, `setea` 등의 명령어를 통해 확장 파일 속성을 지원한다.[2]
  • BeOS/Haiku: BeOS와 Haiku는 파일 시스템 수준에서 확장 파일 속성을 지원하며, 관계형 데이터베이스와 유사한 쿼리 기능을 제공한다. 파일 관리자, 메일 서비스 등에서 널리 활용된다.[8][9]
  • FreeBSD: FreeBSDUFS1, UFS2, ZFS 파일 시스템에서 확장 속성을 지원하며, 사용자 및 시스템 네임스페이스를 제공한다.[10]
  • Linux: 리눅스 커널 2.6 이후 버전부터 ext2, ext3, ext4, JFS, ReiserFS, XFS 등 다양한 파일 시스템에서 확장 속성을 지원한다.[11] 사용자, 신뢰, 보안, 시스템 네임스페이스를 제공하며, SELinux 등에서 활용된다. `getfattr`, `setfattr` 명령어로 관리할 수 있다.[17]
  • macOS: Mac OS X 10.4 이후 버전부터 HFS+ 파일 시스템에서 확장 속성을 지원한다.[18] `xattr` 유틸리티를 통해 관리할 수 있다. 웹에서 다운로드 받은 파일은 `com.apple.quarantine` 속성으로 표시된다.[23]
  • OS/2: OS/2는 HPFS 및 FAT 파일 시스템에서 확장 속성을 지원한다. 파일 유형, 주석, 아이콘 등에 활용된다.
  • Solaris: 솔라리스 9 이상 버전에서는 파일 포크를 통해 확장 속성을 지원한다.[26]
  • Windows NT: 윈도우 NTFAT, HPFS, NTFS에서 확장 속성을 지원하며, OS/2 서브시스템 및 Windows Subsystem for Linux에서 활용된다. NTFS는 대체 데이터 스트림(ADS) 형태로 확장 속성을 저장할 수 있다.

2. 1. AIX

AIX에서, JFS2 v2 파일 시스템은 확장 파일 속성을 지원하며, `getea` 명령어를 사용하여 접근할 수 있다.[2] `getea`[3], `setea`[4], `listea`[5], `statea`[6] 및 `removeea`[7] API는 확장 파일 속성 가져오기, 설정, 나열, 정보 얻기, 삭제를 지원한다.

2. 2. BeOS/Haiku

과거 BeOS와 Haiku 같은 후속 운영 체제에서 확장 파일 속성은 기본 프로그램 및 타사 프로그램에서 널리 사용되었다.

Be 파일 시스템은 속성의 색인 생성 및 쿼리를 허용하여 파일 시스템에 관계형 데이터베이스와 유사한 특성을 부여한다. BeOS와 유사한 시스템에서 확장 속성의 사용은 다양하다. 예를 들어, BeOS와 Haiku의 파일 관리자인 Tracker와 OpenTracker는 파일 아이콘의 위치를 속성에 저장하고,[8] Haiku의 "메일" 서비스는 모든 메시지 내용과 메타데이터를 확장 파일 속성에 저장하며,[9] 파일의 MIME 유형은 해당 속성에 저장된다. 확장 파일 속성은 BeOS와 유사한 시스템의 GUI에서 파일 관리자(종종 Tracker 또는 그 파생 제품)를 통해 보고 편집할 수 있다.

2. 3. FreeBSD

FreeBSD 5.0 이상 버전에서 UFS1, UFS2, 그리고 ZFS 파일 시스템은 확장된 속성을 지원한다.[10] 모든 일반 파일은 확장된 속성 목록을 가질 수 있다. 각 속성은 이름과 관련된 데이터로 구성된다. 이름은 널 종료 문자열이어야 하며, 작은 정수 네임스페이스 식별자로 식별되는 네임스페이스에 존재한다. 현재 사용자 및 시스템 네임스페이스, 두 개의 네임스페이스가 존재한다. 사용자 네임스페이스는 이름 지정 또는 내용과 관련하여 제한이 없다. 시스템 네임스페이스는 주로 커널에서 접근 제어 목록 및 강제 접근 제어에 사용된다.

2. 4. Linux

리눅스 커널 2.6 버전 이후부터 확장 파일 속성을 지원한다. ext2, ext3, ext4, JFS, ReiserFS, XFS 등의 파일 시스템에서 확장 속성(xattr)을 사용할 수 있다.[11] 확장 속성은 이름과 관련 데이터로 구성되며, 이름은 널 종료 문자열로 네임스페이스 식별자와 점(.)으로 시작해야 한다.

현재 사용자(user), 신뢰할 수 있는(trusted), 보안(security), 시스템(system)의 네 가지 네임스페이스가 존재한다. 사용자 네임스페이스는 이름과 내용에 제한이 없으며, 시스템 네임스페이스는 주로 커널에서 접근 제어 목록에 사용된다. 보안 네임스페이스는 SELinux 등에서 활용된다.

1997년에 철회된 POSIX.1e 초안의 확장 속성 개념은 2002년경 리눅스에 추가되었다.[13][14] 2016년 기준으로, Beagle, OpenStack Swift, Dropbox, KDE의 의미적 메타데이터 프레임워크 (Baloo), Chromium, Wget, cURL, Snapcraft 등에서 확장 속성을 사용하고 있다.

리눅스 커널은 확장 속성의 이름은 최대 255바이트, 값은 최대 64KiB까지 허용한다.[15] XFSReiserFS도 이와 유사하지만, ext2/3/4 및 btrfs는 더 작은 제한을 두어 파일의 모든 속성(이름 및 값)이 하나의 "파일 시스템 블록"(일반적으로 4KiB)에 맞도록 요구한다.

확장 속성은 `attr` 패키지의 `getfattr` 및 `setfattr` 명령을 사용하여 접근하고 수정할 수 있다.[17]

2. 5. macOS

Mac OS X 10.4 및 이후 버전은 HFS+ 파일 시스템의 속성 파일 B*-트리 기능을 사용하여 확장 속성을 지원하며, 이는 명명된 포크를 허용한다. HFS+의 명명된 포크는 익스텐션을 통해 임의로 많은 양의 데이터를 지원하지만, 확장 속성에 대한 OS 지원은 인라인 속성만 지원하여 크기를 단일 B*-트리 노드 내에 맞출 수 있는 크기로 제한한다. 모든 일반 파일은 확장 속성 목록을 가질 수 있다. HFS+는 임의의 수의 명명된 포크를 지원하며, macOS가 확장 속성 수에 제한을 두는지는 알려져 있지 않다.[18]

각 속성은 이름과 관련 데이터로 구성된다. 이름은 널 종료된 유니코드 문자열이다. 네임스페이스 제한이 없으며 속성 이름으로 통합 유형 식별자와 유사한 역 DNS 문자열을 사용하는 것이 관례이다.

macOS는 Linux와 유사한 API를 사용하여 파일 또는 디렉토리에서 확장 속성을 나열,[18] 가져오기,[19] 설정,[20] 및 제거[21]하는 것을 지원한다. 명령줄에서 이러한 기능은 ''xattr'' 유틸리티를 통해 제공된다.[22]

macOS 10.5부터 웹에서 시작된 파일은 확장 파일 속성을 통해 com.apple.quarantine으로 표시된다.[23] 일부 구형 macOS 버전(예: Mac OS X 10.6)에서는 일반적인 코코아 응용 프로그램(TextEdit, Preview 등)에서 저장 시 사용자 공간 확장 속성이 보존되지 않았다.

2. 6. OpenBSD

OpenBSD 소스 코드에서 확장 파일 속성에 대한 지원은 접근 제어 목록에 대한 관심 부족으로 인해 2005년에 제거되었다.[24] OpenBSD의 네이티브 파일 시스템인 fss는 확장 파일 속성을 지원한다. 이들은 플래그로 참조되며, chflags 명령어로 제어할 수 있다.

2. 7. OS/2

OS/2 버전 1.2 이상에서, 고성능 파일 시스템은 확장 속성을 염두에 두고 설계되었지만, DOS의 FAT 파일 시스템에서도 이에 대한 지원이 소급 적용되었다.[25] FAT 파티션을 사용하는 다른 운영 체제와의 호환성을 위해 OS/2 속성은 루트 디렉터리에 위치한 단일 파일에 저장된다.[25] 이 파일은 일반적으로 확장 속성을 지원하는 운영 체제가 디스크를 관리할 때 접근할 수 없지만, 예를 들어 DOS에서는 자유롭게 조작할 수 있다.[25] 확장 속성을 가진 파일과 디렉터리는 이 파일 내에서 하나 이상의 클러스터를 사용한다.[25] 처음 사용된 클러스터의 논리적 클러스터 번호는 소유 파일 또는 디렉터리의 디렉터리 항목 내에 저장된다.[25] 이 두 바이트는 FAT32 파일 시스템에서 다른 용도로 사용되므로, OS/2 확장 속성은 이 파일 시스템에 저장할 수 없다.[25]

Workplace Shell과 같은 OS/2 버전 2.0 이상의 일부는 파일 유형 식별, 주석, 컴퓨터 아이콘 및 파일에 대한 키워드와 같은 목적으로 여러 표준화된 확장 속성(''EA''라고도 함)을 사용한다. 해석 언어 렉스(Rexx)로 작성된 프로그램은 더 빠른 실행을 위해 코드의 이미 파싱된 버전을 확장 속성으로 저장한다.

2. 8. Solaris

솔라리스 9 이상 버전에서는 파일이 "확장 속성"을 가질 수 있는데, 이는 실제로 포크이다.[26] "확장 속성"의 최대 크기는 파일의 최대 크기와 같으며, 파일과 동일한 방식으로 읽고 쓸 수 있다. 내부적으로는 일반 파일처럼 저장되고 액세스되므로 이름에 "/" 문자를 포함할 수 없으며 소유권 및 권한이 상위 파일과 다를 수 있다.[26]

네트워크 파일 시스템 버전 4는 솔라리스와 거의 동일한 방식으로 확장 속성을 지원한다.

2. 9. Windows NT

윈도우 NT에서는 길이 제한이 있는 확장 파일 속성을 FAT[25], HPFS, NTFS에서 지원한다. 이는 OS/2 서브시스템의 일부로 구현되었다. 특히 Interix POSIX 서브시스템의 NFS 서버에서 유닉스 스타일 권한을 구현하기 위해 사용된다. Windows 10 앤니버서리 업데이트에 추가된 Windows Subsystem for Linux는 유사한 목적으로 확장 파일 속성을 사용하며, 리눅스 파일 모드, 소유자, 장치 ID (해당하는 경우) 및 파일 시간을 저장한다.[27]

또한, NTFS는 대체 데이터 스트림 (ADS) 형태의 임의 길이 확장 파일 속성을 저장할 수 있는데, 이는 일종의 리소스 포크이다. 파일 관리자 Total Commander의 플러그인, 예를 들어 "NTFS Descriptions" 및 "QuickSearch eXtended"는 ADS에 포함된 메타데이터로 파일 목록을 필터링하거나 검색하는 것을 지원한다.[28][29] NTFS-3G는 ADS를 FUSE의 확장 파일 속성에 매핑하는 것을 지원하며, 파일 속성도 동일한 방식으로 매핑한다.[30]

Windows NT는 OS/2와 동일한 방식으로 FAT 및 HPFS에서 확장 속성을 지원한다. NTFS 파일 시스템 역시 OS/2 서브시스템에 적합하도록, 여러 유효한 파일 포크 중 하나로서 확장 속성을 저장하도록 설계되었다. OS/2 확장 속성은 네이티브 OS/2와 동일한 방식으로 모든 OS/2 프로그램에서 접근할 수 있으며, BackupRead 및 BackupWrite 시스템 콜을 통해 모든 Windows 프로그램에서도 접근할 수 있다. 특히 Interix POSIX 서브시스템 상의 NFS 서버에서 유닉스 스타일의 권한을 구현하기 위해 사용된다.

참조

[1] 문서 xattr Linux
[2] 웹사이트 getea Command https://www.ibm.com/[...] IBM 2017-07-11
[3] 웹사이트 getea Subroutine https://www.ibm.com/[...] IBM 2017-07-11
[4] 웹사이트 setea Subroutine https://www.ibm.com/[...] IBM 2017-07-11
[5] 웹사이트 listea Subroutine https://www.ibm.com/[...] IBM 2017-07-11
[6] 웹사이트 statea Subroutine https://www.ibm.com/[...] IBM 2017-07-11
[7] 웹사이트 removeea Subroutine https://www.ibm.com/[...] IBM 2017-07-11
[8] 웹사이트 Attributes https://www.haiku-os[...] Haiku, Inc. 2021-01-28
[9] 웹사이트 Workshop: Managing Emails https://www.haiku-os[...] Haiku, Inc. 2021-01-28
[10] 문서 extattr FreeBSD
[11] 웹사이트 "[PATCH 13/16] f2fs: add xattr and acl functionalities" http://lkml.iu.edu/h[...] 2012-10-05
[12] 뉴스 Posix.1e? https://groups.googl[...] comp.security.unix 2002-04-30
[13] 웹사이트 v2.5.3 git commit log https://git.kernel.o[...] 2002-02-05
[14] 웹사이트 Red Hat Enterprise Linux AS 3 Release Notes (x86 Edition) https://web.archive.[...] Red Hat 2017-07-11
[15] 웹사이트 linux/include/uapi/linux/limits.h https://git.kernel.o[...] 2012-10-13
[16] 문서 xattr Linux
[17] 웹사이트 Commands for Manipulating Filesystem Extended Attributes https://savannah.non[...] 2017-07-11
[18] 문서 listxattr Darwin
[19] 문서 getxattr Darwin
[20] 문서 setxattr Darwin
[21] 문서 removexattr Darwin
[22] 문서 xattr Darwin
[23] 웹사이트 Launch Services Release Notes https://developer.ap[...]
[24] 웹사이트 CVS log for src/sys/ufs/ufs/Attic/extattr.h https://cvsweb.openb[...] 2005-07-03
[25] 웹사이트 Implementation of extended attributes on the FAT file system http://www.tavi.co.u[...] 2000-10-28
[26] 문서 fsattr Solaris
[27] 웹사이트 WSL File System Support https://blogs.msdn.m[...] MSDN 2016-06-15
[28] 웹사이트 NTFS Descriptions 1.2.1 https://totalcmd.net[...] 2018-04-16
[29] 웹사이트 QuickSearch eXtended http://totalcmd.net/[...] 2018-04-16
[30] 웹사이트 Extended Attributes https://web.archive.[...]
[31] 웹사이트 listxattr man page for Mac OS X http://developer.app[...]
[32] 웹사이트 getxattr man page for Mac OS X http://developer.app[...]
[33] 웹사이트 setxattr man page for Mac OS X http://developer.app[...]
[34] 웹사이트 removexattr man page for Mac OS X http://developer.app[...]



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com