윈도우즈의 파일 소유자
리눅스 서버 권한 오류 하나를 고치다가 시작된 대화가, “그럼 윈도우즈 서버는?”이라는 질문으로 이어졌다. 검색해봐도 이 둘을 나란히 놓고 설명하는 글은 잘 보이지 않았다. 그래서 직접 정리해 기록으로 남긴다.
윈도우즈에도 “소유자”가 있을까
결론부터 말하면 있다. 오히려 개념적으로는 리눅스보다 더 정교하다. 리눅스 얘기를 하면서 “이건 여러 사람이 컴퓨터 하나를 같이 쓴다는 전제에서 나온 구조”라고 했었는데, 이 전제 자체는 운영체제를 가리지 않는다. 윈도우즈 서버도 회사에서 여러 부서, 여러 계정이 파일 서버 하나를 같이 쓰는 게 기본 전제이기 때문에, 파일마다 “누가 만들었고 누가 손댈 수 있는가”를 기록해두는 구조가 처음부터 필요했다.
다만 개인용 윈도우즈 PC에서 관리자 계정 하나로만 쓰다 보면 이 구조가 표면에 드러날 일이 없다는 것도 리눅스와 똑같다. “나 혼자 관리자”인 동안은 잠금장치가 있는지조차 모르고 지나가는 것이다.
리눅스 rwx vs 윈도우즈 ACL — 근본적인 차이
윈도우즈 서버(NTFS)의 권한 체계는 ACL(Access Control List, 접근 제어 목록)이라고 부른다. 이름부터 리눅스의 rwx 표기와는 결이 다른데, 실제로 구조도 많이 다르다.
| 리눅스 (rwx) | 윈도우즈 서버 (NTFS ACL) | |
|---|---|---|
| 권한 대상 | 소유자 · 그룹 · 기타, 딱 3부류 | 원하는 만큼 계정/그룹을 개별 등록 |
| 권한 종류 | 읽기 · 쓰기 · 실행, 3가지 | 읽기 · 쓰기 · 수정 · 삭제 · 권한변경 · 소유권변경 등 세분화 |
| 표기 방식 | rwxr-xr-x 처럼 고정 3자리씩 | 계정별로 허용/거부 목록을 줄줄이 나열 |
| 세밀함 | 정해진 틀 안에서 단순 명료 | 계정마다 완전히 다른 조합을 자유롭게 부여 가능 |
리눅스는 “소유자 1명 / 그룹 1개 / 나머지”로 딱 3분류만 되는데, 윈도우즈 ACL은 예를 들어 “A계정은 읽기만, B계정은 읽기+쓰기, C그룹은 전체 거부, D계정은 쓰기는 되지만 삭제는 안 됨” 이런 식으로 계정마다 원하는 만큼 다른 권한을 붙일 수 있다. 아래는 같은 파일 하나를 두 방식으로 표현했을 때의 차이를 나란히 놓은 것이다.
리눅스 방식 (복습)
| – | rwx | r-x | r-x | 1 your-user http 4096 page.php |
| 타입 | 소유자 | 그룹 | 기타 |
3개의 고정된 칸 안에서만 권한을 정할 수 있다
윈도우즈 방식 — 탐색기 보안 탭을 옮기면
| 계정 / 그룹 | 읽기 | 쓰기 | 수정 | 삭제 | 모든 권한 |
| your-user (소유자) | ✓ | ✓ | ✓ | ✓ | ✓ |
| 다른-계정 | ✕ | ✕ | ✕ | ✕ | ✕ |
| 회계팀 (그룹) | ✓ | ✕ | ✕ | ✕ | ✕ |
| Administrators | ✓ | ✓ | ✓ | ✓ | ✓ |
계정·그룹을 원하는 만큼 줄로 추가하고, 항목별로 각각 체크한다
계정마다 완전히 다른 방을 쓴다
윈도우즈에 계정을 여러 개 만들면, 다운로드·문서·바탕화면 같은 폴더가 계정 수만큼 통째로 복제되는 게 아니라 애초에 계정별로 완전히 별개의 폴더로 존재한다. “다운로드”라는 이름이 같아서 하나의 공간을 공유하는 것처럼 느껴지지만, 실제 디스크 경로 자체가 다르다.
C:\Users\
+-- your-user\
| +-- Downloads\ (your-user 전용)
| +-- Documents\
| +-- Desktop\
|
+-- other-account\
| +-- Downloads\ (other-account 전용, 완전히 별개)
| +-- Documents\
|
+-- Public\
+-- Public Downloads\ (모든 계정 공용)
+-- Public Documents\
그래서 your-user 계정으로 로그인해서 브라우저로 뭔가 내려받으면 C:\Users\your-user\Downloads에 저장되고, other-account로 로그인해서 다운로드 폴더를 열어보면 그 계정 소유의 완전히 다른(대개 비어있는) 폴더가 나타난다. 파일이 사라진 게 아니라, 애초에 안 보이는 게 정상인 구조다.
이 격리는 기본적으로 NTFS 권한(ACL)이 만들어준다. 각 계정 폴더는 “본인 계정과 관리자만 접근 가능”하도록 기본값이 설정되어 있어서, 다른 표준 계정으로는 아예 열람 자체가 막힌다.
다 함께 볼 수 있는 공간도 있다 — Public 폴더
격리가 기본값이라고 해서 공유가 불가능한 건 아니다. 윈도우즈는 계정 폴더들과 같은 위치에 Public이라는 특수 폴더를 기본으로 마련해뒀다. 이 폴더는 “이 PC의 모든 계정(Users 그룹)”에게 접근이 열려 있도록 처음부터 ACL이 설정되어 있다.
| 상황 | 방식 |
|---|---|
| 같은 PC, 모든 계정이 공통으로 | C:\Users\Public 활용 |
| 같은 PC, 원하는 폴더만 공유 | 직접 만든 폴더 + 보안 탭에서 Users 그룹 권한 부여 |
| 여러 PC/서버 간 공유 | 네트워크 공유 + 공유 권한·NTFS 권한 이중 설정 |
상속(Inheritance) — 폴더의 권한이 파일로 복사되는 이유
Public 폴더 안에 새 파일을 만들면, 그 파일도 자동으로 모든 계정에게 열람이 가능해진다. 이건 폴더의 ACL이 파일에 “적용되는” 게 아니라, 파일이 생성되는 순간 부모 폴더의 ACL을 그대로 복사해서 자기 것으로 저장하기 때문이다. 이 자동 복사 과정을 상속이라고 부른다.
C:\Users\Public\ ACL: Users 그룹 = 허용 (원본)
└── 자료.hwp ACL: Users 그룹 = 허용 (Public에서 상속받음)
폴더 속성 → 보안 탭 → 고급에 들어가면 “상속 사용 안 함”이라는 버튼이 있는데, 이게 바로 이 자동 복사를 끊는 스위치다. 여기서 끊고 나면 그 폴더(와 그 안에서 새로 만들어질 파일들)는 더 이상 부모 폴더를 따라가지 않고 독립적인 권한을 갖게 된다.
세분화된 권한 — “읽기만” vs “수정도 가능”
보안 탭에서 체크할 수 있는 권한 항목들을 정리하면 다음과 같다.
| 권한 | 의미 |
|---|---|
| 읽기 | 파일 내용 열람, 목록 보기 |
| 쓰기 | 내용 수정, 새 파일 생성 |
| 읽기 및 실행 | 읽기 + 프로그램 실행 |
| 수정 | 읽기 + 쓰기 + 삭제 포함 |
| 모든 권한 (전체 제어) | 권한 자체를 바꿀 권한까지 포함 |
“읽기 및 실행”만 체크하고 “쓰기”·”수정”은 빼면, 그 계정은 열어보기만 되고 고치거나 지울 수는 없는 상태가 된다 — 이론상으로는.
애초에 이게 다 “파일 시스템” 안에 내장된 기능이다
여기서 한 가지 짚고 넘어갈 게 있다. NTFS는 원래 FAT32, exFAT과 같은 층위의 개념 — 즉 파일을 디스크에 저장하는 방식(파일 시스템)이다. 그런데 NTFS는 파일을 저장하는 기본 기능에 더해, 각 파일·폴더마다 소유자와 ACL을 기록하는 자리를 파일 시스템 구조 자체에 마련해뒀다. FAT32는 애초에 그런 정보를 저장할 공간 자체가 없다.
| 파일 시스템 | 소유권/ACL 지원 | 주 용도 |
|---|---|---|
| FAT32 / exFAT | 없음 — 누가 꽂든 그냥 다 열림 | USB, SD카드 등 이동식 저장장치, 기기 간 호환성 중시 |
| NTFS | 있음 — 파일마다 소유자·ACL 기록 | 윈도우즈 시스템 드라이브, 다중 사용자·서버 환경 |
그래서 리눅스의 rwx가 ext4라는 파일 시스템 자체에 내장된 기능인 것처럼, 윈도우즈의 ACL도 NTFS라는 파일 시스템 자체에 내장된 기능이다. FAT32 드라이브를 NTFS로 바꾸고 싶으면 관리자 권한 명령 프롬프트에서 아래처럼 변환할 수 있다.
convert D: /fs:ntfs
일반 가정용 윈도우즈(10, 11 등)의 C드라이브도 기본적으로 NTFS다. 그러니 “서버용 파일 시스템을 가져다 썼다”기보다, 원래 윈도우즈가 기본으로 쓰는 방식을 이동식 저장장치에도 똑같이 적용한 것에 가깝다. 다만 개인 PC에서 관리자 혼자 쓸 때는 그 안에 내장된 ACL이 딱히 어떤 제약도 걸지 않을 뿐이다.
정리
리눅스든 윈도우즈든, 파일에 소유자와 권한이라는 개념이 붙는 이유는 결국 하나다 — 여러 사용자가 하나의 시스템을 함께 쓸 때, 누가 무엇을 볼 수 있고 손댈 수 있는지를 파일 하나하나에 명시해둬야 하기 때문이다. 그 구현 방식이 다를 뿐이다.
- 리눅스는 소유자·그룹·기타 3칸에 rwx를 압축해서 표기한다
- 윈도우즈는 계정·그룹별로 원하는 만큼 줄을 늘려가며 세밀하게 나열한다(ACL)
- 개인 PC에서 안 보이던 게 서버로 가면 드러나는 이유도 똑같다 — “혼자 쓰는 컴퓨터”라는 전제가 깨지는 순간 이 구조가 필요해지기 때문이다
Permission denied 한 줄에서 시작한 질문이, 결국 두 운영체제가 “공유”라는 같은 문제를 서로 다른 방식으로 풀어온 이야기로 이어졌다.