[OS-003][입문] 파일 경로와 권한을 안전하게 확인하기 > IT 기술 공유

본문 바로가기
사이트 내 전체검색

IT 기술 공유

[OS-003][입문] 파일 경로와 권한을 안전하게 확인하기

페이지 정보

profile_image
작성자 기술팀장
댓글 0건 조회 251회 작성일 26-08-30 14:34

본문

[이번 수업]
파일시스템은 운영체제가 파일과 디렉터리를 이름·경로로 정리해 저장하는 방식입니다. 연습 폴더와 파일을 만들고 상대 경로·절대 경로를 확인한 뒤, macOS/Linux의 권한 비트와 Windows의 ACL(접근 제어 목록)을 비교합니다.

[선수지식]
OS-001의 운영체제 역할과 OS-002의 프로세스 개념을 알면 좋습니다. Python 3와 터미널만 사용합니다.

[학습목표]
1. 상대 경로와 절대 경로를 구분합니다.
2. 파일·디렉터리 권한의 의미를 설명합니다.
3. 최소 권한으로 로컬 파일을 보호합니다.

[핵심개념]
경로(path)는 파일의 위치를 나타냅니다. 상대 경로 `permission_lab/private.txt`는 현재 작업 디렉터리를 기준으로 하고, 절대 경로는 macOS/Linux의 `/Users/...`, Windows의 `C:\Users\...`처럼 루트부터 적습니다. 디렉터리는 다른 항목을 담는 컨테이너이며 파일은 데이터를 담습니다.

macOS/Linux의 기본 권한은 소유자(owner), 그룹(group), 기타 사용자(others)마다 읽기 r, 쓰기 w, 실행 x로 표시합니다. 숫자 표기에서 r=4, w=2, x=1이므로 `600`은 소유자만 읽기·쓰기 가능하다는 뜻입니다. 디렉터리의 r은 이름 목록 보기, w는 항목 생성·삭제, x는 내부 경로 통과 의미라 파일의 x와 다릅니다. Windows는 단순한 세 묶음 대신 사용자·그룹별 ACE를 모은 DACL을 주로 사용합니다.

[따라하기]
아래 내용을 `file_lab.py`로 저장하세요.

```python
from pathlib import Path
import os
import stat

lab = Path("permission_lab")
lab.mkdir(exist_ok=True)
note = lab / "private.txt"
note.write_text("나만 보는 연습 파일\n", encoding="utf-8")

if os.name == "posix":
    note.chmod(0o600)

print("relative:", note)
print("absolute:", note.resolve())
print("is_file:", note.is_file())
print("mode:", stat.filemode(note.stat().st_mode))
```

macOS/Linux는 `python3 file_lab.py`, Windows PowerShell은 `python file_lab.py`를 실행합니다. 공통 예상 결과는 relative에 연습 경로, absolute에 전체 경로, is_file에 True가 표시되는 것입니다. macOS/Linux의 mode는 보통 `-rw-------`입니다. `ls -l permission_lab/private.txt`로도 확인하세요. Windows의 mode 표시는 실제 ACL과 정확히 대응하지 않으므로 `icacls permission_lab\private.txt`로 DACL을 읽습니다. 이 실습은 Windows 권한을 변경하지 않습니다.

macOS/Linux에서 원상 확인을 원하면 `chmod 600 permission_lab/private.txt`를 다시 실행합니다. 연습이 끝나면 폴더를 파일 탐색기에서 직접 삭제하세요. 경로를 눈으로 확인하지 않은 채 재귀 삭제 명령을 복사하지 않습니다.

[흔한 실수]
문제 해결을 위해 무조건 `chmod 777`을 쓰면 모든 사용자에게 지나친 권한을 줄 수 있습니다. 상대 경로는 실행 위치가 바뀌면 다른 파일을 가리킵니다. 공백이 있는 경로를 셸에서 따옴표로 감싸지 않거나 파일의 실행 권한과 디렉터리의 통과 권한을 같다고 생각하는 것도 흔한 실수입니다. Windows ACL을 Unix 숫자 권한과 일대일로 해석하지 마세요.

[보안 주의]
본인 소유의 `permission_lab`에서만 실습하고 시스템·공유·서버 경로에는 적용하지 않습니다. 권한은 암호화가 아니며 관리자나 저장장치 접근까지 막아 주지 않습니다. 프로그램이 사용자에게 받은 파일명을 처리한다면 `..`, 절대 경로, 심볼릭 링크로 기준 폴더 밖에 나가지 않는지 검증하세요. 비밀키 파일은 저장 필요성부터 줄이고 최소 권한과 별도 비밀 관리 도구를 사용합니다.

[직접 해볼 과제]
`public.txt`를 하나 더 만들고 macOS/Linux에서는 644로 설정해 두 파일의 mode를 비교하세요. Windows에서는 두 파일의 `icacls` 결과를 저장하고 어떤 사용자·그룹이 읽을 수 있는지 한 줄로 설명합니다.

[확인문제]
1. 상대 경로가 실행 위치에 따라 달라지는 이유는 무엇인가요?
2. Unix 계열에서 권한 600은 누구에게 어떤 권한을 주나요?
3. 디렉터리의 실행 x 권한은 무엇을 허용하나요?

[다음 학습]
전체 순환의 다음 수업은 NET-003 ‘DNS가 이름을 주소로 바꾸는 과정’입니다. 운영체제 과정을 이어가려면 OS-004 ‘셸 파이프·리다이렉션·텍스트 처리’를 학습하세요.

[공식 참고 자료]
Python pathlib: https://docs.python.org/3/library/pathlib.html
Linux chmod 시스템 호출: https://man7.org/linux/man-pages/man2/chmod.2.html
Microsoft icacls: https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/icacls

댓글목록

등록된 댓글이 없습니다.

회원로그인

회원가입

사이트 정보

회사명 : 회사명 / 대표 : 대표자명
주소 : OO도 OO시 OO구 OO동 123-45
사업자 등록번호 : 123-45-67890
전화 : 02-123-4567 팩스 : 02-123-4568
통신판매업신고번호 : 제 OO구 - 123호
개인정보관리책임자 : 정보책임자명

접속자집계

오늘
2,106
어제
5,103
최대
16,772
전체
773,160
Copyright © 소유하신 도메인. All rights reserved.