파일 시스템과 권한 문제
파일 시스템과 권한은 리눅스마스터 2급 시험에서 꾸준히 출제되는 핵심 영역입니다. 단순한 암기보다는 원리를 이해하면 처음 보는 문제도 풀 수 있습니다.
출제 유형 1 — 디렉토리 구조와 경로 문제
리눅스의 주요 디렉토리와 역할을 알아야 합니다.
| 디렉토리 | 역할 |
|---|---|
/ |
루트 디렉토리, 모든 경로의 시작점 |
/etc |
시스템 설정 파일 |
/bin |
기본 명령어 바이너리 |
/usr/bin |
사용자 명령어 바이너리 |
/var |
가변 데이터 (로그, 메일, 스풀) |
/tmp |
임시 파일 (재부팅 시 삭제) |
/home |
사용자 홈 디렉토리 |
/root |
root 사용자 홈 디렉토리 |
/proc |
프로세스와 커널 정보 (가상 파일시스템) |
/dev |
장치 파일 |
/lib |
공유 라이브러리 |
/boot |
부트로더와 커널 이미지 |
경로 문제에서는 절대경로와 상대경로의 차이를 명확히 구분해야 합니다.
- 절대경로:
/으로 시작. 예)/home/user/docs - 상대경로: 현재 디렉토리 기준. 예)
../docs,./script.sh
문제 1
다음 중 시스템 설정 파일이 저장되는 디렉토리로 올바른 것은 무엇인가.
/bin/etc/var/tmp
정답: 2번. /etc는 시스템 설정 파일을 보관하는 디렉토리입니다. /bin은 실행 파일, /var는 가변 데이터, /tmp는 임시 파일 위치입니다.
문제 2
현재 디렉토리가 /home/user/project일 때 /home/user/docs/readme.txt를 가리키는 상대경로로 올바른 것은 무엇인가.
./docs/readme.txt../docs/readme.txt/docs/readme.txthome/user/docs/readme.txt
정답: 2번. 현재 위치에서 한 단계 위(..)로 올라가면 /home/user가 되고, 거기서 docs/readme.txt로 접근합니다.
출제 유형 2 — 파일 권한 문제
chmod 숫자/기호 변환
파일 권한은 소유자(owner), 그룹(group), 기타(others) 세 영역으로 나뉘며 각각 읽기(r=4), 쓰기(w=2), 실행(x=1)으로 구성됩니다.
rwxr-x--- = 750
rwx → 4+2+1 = 7
r-x → 4+0+1 = 5
--- → 0+0+0 = 0
기호 표기와 숫자 표기 변환이 자주 출제됩니다.
| 기호 표기 | 숫자 표기 | 의미 |
|---|---|---|
rwxrwxrwx |
777 | 모든 사용자 전체 권한 |
rwxr-xr-x |
755 | 소유자 전체, 나머지 읽기+실행 |
rw-r--r-- |
644 | 소유자 읽기+쓰기, 나머지 읽기만 |
rwx------ |
700 | 소유자만 전체 권한 |
rwxr-x--- |
750 | 소유자 전체, 그룹 읽기+실행 |
umask 계산
umask는 새 파일과 디렉토리 생성 시 기본 권한을 제한하는 마스크 값입니다.
- 파일 기본 권한: 666 (실행 권한 없음)
- 디렉토리 기본 권한: 777
간편 계산법은 기본 권한에서 umask 값을 빼는 것입니다. 시험에서 자주 출제되는 umask 값(022, 027 등)은 이 방법으로 정확한 결과를 얻습니다.
umask 022일 때
파일 권한: 666 - 022 = 644 (rw-r--r--)
디렉토리 권한: 777 - 022 = 755 (rwxr-xr-x)
umask 027일 때
파일 권한: 666 - 027 = 640 (rw-r-----)
디렉토리 권한: 777 - 027 = 750 (rwxr-x---)
엄밀히 말하면 umask는 뺄셈이 아니라 비트 AND NOT 연산(기본값 & ~umask)입니다. 대부분의 umask 값에서 뺄셈과 결과가 같지만, umask 033처럼 특정 비트가 기본 권한에 포함되지 않는 경우 차이가 발생합니다. 리눅스마스터 시험에서는 022, 027 등 표준 값이 출제되므로 뺄셈 방식으로 충분합니다.
특수 권한
| 특수 권한 | 숫자 | 기호 | 적용 위치 | 효과 |
|---|---|---|---|---|
| SetUID | 4 | s (소유자 x 위치) | 실행 파일 | 소유자 권한으로 실행 |
| SetGID | 2 | s (그룹 x 위치) | 실행 파일/디렉토리 | 그룹 권한으로 실행 |
| Sticky Bit | 1 | t (기타 x 위치) | 디렉토리 | 자신의 파일만 삭제 가능 |
특수 권한은 일반 권한 앞에 추가합니다.
chmod 4755 /usr/bin/passwd # SetUID + 755chmod 1777 /tmp # Sticky Bit + 777
/tmp 디렉토리가 1777인 이유가 바로 Sticky Bit 때문입니다. 누구나 쓸 수 있지만 자신이 만든 파일만 삭제할 수 있습니다.
문제 3
다음 파일의 권한 표기 rw-rw-r--를 숫자로 변환하면 무엇인가.
- 644
- 664
- 660
- 666
정답: 2번. rw-(4+2+0=6), rw-(4+2+0=6), r--(4+0+0=4)이므로 664입니다.
문제 4
umask가 022일 때 새로 생성된 디렉토리의 권한으로 올바른 것은 무엇인가.
- 644
- 755
- 777
- 022
정답: 2번. 디렉토리 기본 권한 777에서 umask 022를 빼면 755입니다.
문제 5
파일에 SetUID 비트가 설정되어 있을 때 소유자의 실행 권한 자리에 표시되는 기호로 올바른 것은 무엇인가.
xsSt
정답: 2번. 실행 권한이 있으면서 SetUID가 설정된 경우 소문자 s로 표시됩니다. 실행 권한이 없는 상태에서 SetUID만 있으면 대문자 S로 표시됩니다.
출제 유형 3 — 파일 검색과 관리
find 조건 조합
# 특정 사용자 소유의 파일 찾기find /home -user alice# 7일 이내 수정된 파일find /var/log -mtime -7# 특정 권한의 파일 찾기find / -perm 4755# 크기가 100MB 이상인 파일find / -size +100M# 여러 조건 조합 (AND)find /home -user alice -name "*.log" -mtime -30
| 옵션 | 의미 |
|---|---|
-name |
이름 패턴 |
-type f / -type d |
파일 / 디렉토리 |
-user |
소유자 |
-group |
그룹 소유자 |
-perm |
권한 |
-mtime -N |
N일 이내 수정 |
-mtime +N |
N일 이전 수정 |
-size +N |
N보다 큰 파일 |
링크 관련 문제
하드링크와 심볼릭링크의 차이를 명확히 알아야 합니다.
| 구분 | 하드링크 | 심볼릭링크 |
|---|---|---|
| 생성 명령 | ln 원본 링크명 |
ln -s 원본 링크명 |
| 원본 삭제 시 | 파일 접근 가능 | 링크 깨짐 |
| 다른 파티션 | 불가 | 가능 |
| 디렉토리 | 불가 (root 예외) | 가능 |
| inode | 동일 | 다름 |
문제 6
다음 중 심볼릭링크를 생성하는 명령어로 올바른 것은 무엇인가.
ln /etc/passwd /tmp/passwd_linkln -s /etc/passwd /tmp/passwd_linklink /etc/passwd /tmp/passwd_linkcp -l /etc/passwd /tmp/passwd_link
정답: 2번. ln -s가 심볼릭링크 생성 명령입니다. -s 없이 사용하면 하드링크가 생성됩니다.
문제 7
다음 find 명령어 중 현재 디렉토리에서 파일 크기가 1MB보다 큰 일반 파일을 찾는 명령어로 올바른 것은 무엇인가.
find . -type f -size +1Mfind . -file -size 1Mfind . -type f -size 1024find . -f -bigger 1M
정답: 1번. -type f로 일반 파일을, -size +1M으로 1MB 초과 크기를 지정합니다. +는 초과, -는 미만을 의미합니다.