들어가며
https://namamim.tistory.com/103
[Linux]리눅스의 모든 것은 파일로 이루어져있다 - 리눅스 파일 시스템
들어가며OS는 파일 시스템이 없다면 작동하지 않는다고 말할 수 있을 정도로 운영체제 그 자체입니다. 저희가 컴퓨터를 켜면 반겨주는 많은 바탕화면의 아이콘들도 사실은 다 파일들이죠.이 글
namamim.tistory.com
이전 글인 "리눅스의 모든 것은 파일로 이루어져있다 - 리눅스 파일 시스템"을 읽고 오신다면 더 이해가 쉬우실 겁니다.
이 글에선 실제 리눅스의 기본 디렉토리 구조에 대해 공부한 내용을 기록해봤습니다.
디렉토리도 파일이다
리눅스에선 파일의 범주가 남다릅니다. 익숙한 텍스트 파일만 파일이 아니라 마우스, 키보드, 프린터와 같은 장비들조차 파일로 취급해서 리눅스는 처리하고 있습니다. 당연하게도 우리가 흔히 아는 폴더라고 부르는 디렉토리 또한 파일입니다. 일반적인 파일의 범주엔 크게 4 가지가 존재합니다. 일반 파일, 디렉토리 파일, 디바이스 파일, 심볼릭 링크가 있습니다.
1. 일반 파일(General Files)
많이 보는 이미지, 비디오, 프로그램이나 텍스트 파일들이 여기에 속합니다. 이런 파일들은 내부에 아스키 코드나 바이너리 포맷으로 구성되어 있습니다. 이름대로 정말 많이 쓰이는 파일 타입이죠.
2. 디렉토리 파일(Directory Files)
다른 파일들을 저장하는 일종의 컨테이너입니다. 디렉토리 파일 또한 넣을 수 있는데, 이 경우 서브-디렉토리(sub-directory)라고 부릅니다.
3. 디바이스 파일(Device Files)
윈도우에선 내 컴퓨터에 들어가면 여러 디스크가 있는 것을 볼 수 있습니다. 흔히 C:, D:, E 이렇게 표현하죠. 이것과 비슷한 느낌으로 리눅스에도 있습니다. 다만 파일로 존재합니다. /dev/sda1, /dev/sda2 이런 식으로 존재합니다.
4. 심볼릭 링크 (Symbolic Link)
다른 파일이나 디렉토리를 가리키는 파일입니다. 흔히 말하기로 윈도우에 있는 바로가기 아이콘 파일과 유사하다고 말합니다. C++에 나오는 레퍼런스나 포인터와 유사한 것으로 파일을 복제하지 않고 여러 경로에 나둘 수 있게 하는 기법입니다.
리눅스 디렉토리 구조는 트리 형식이다
리눅스 디렉토리는 하나의 거대한 트리 구조라고 생각하셔도 무방합니다. root라는 맨 위에서 / 을 구분으로 뻣어나가는 트리 구조인 것이죠. 모든 디렉토리를 포함한 파일들은 루트의 자식이라고 볼 수 있습니다. 이러한 큰 트리 구조는 자연스럽게 계층을 만들 수 있는데 시스템 파일, 유저 데이터, configuration 파일, 디바이스 파일 등을 분리하기 위해 이렇게 설계된 겁니다.
Root에 있는 대표적인 디렉토리
디렉토리명 | 설명 |
/bin | OS 작동에 필요한 유저 바이너리(실행가능한 파일) e.g,. ls, cp, mv 과 같은 명령어 |
/etc | 시스템 전반적인 셋팅이나 서비스에 필요한 Configuration 파일. e.g,. passwd, fstab |
/home | 홈 디렉토리, 사용자가 맨처음 접속할 때 접근되는 디렉토리. 개별 사용자에 따라 다른 디렉토리를 구분하기 위해 사용한다. e.g,. /home/userA, /home/userB |
/opt | Optional의 줄임말로 선택적으로 쓰는 거나 외부 소프트웨어 패키지들. |
/tmp | 캐시용 임시 공간. 보통 운영체제를 껐다키면 지워집니다. |
/usr | ![]() 사용자 프로그램, 유틸리티, 라이브러리. 내부에 bin, lib과 같은 파일들이 존재합니다. |
/var | log, mail, 임시 파일과 같은 변수 데이터들이 존재합니다. |
또 다른 디렉토리들
디렉토리명 | 설명 |
/boot | 운영체제 부팅에 필요한 부트로더 파일이나 리눅스 커널 파일. |
/dev | Device의 줄임말로 하드웨어 디바이스 파일. |
/lib, /lib32, /lib64 | /bin 이나 /sbin에 있는 바이너리들이 필요한 필수 공유 라이브러리들. |
/lost+found | 오염된 파일을 복구하는데 필요한 파일. |
/mnt | 임시로 외부 디바이스들이나 네트워크 파일시스템을 마운트하는데 쓰는 디렉토리. |
/media | USB 드라이브나 CD와 같이 자동으로 마운트되는 제거가능한 미디어를 마운트하는데 쓰는 디렉토리. |
/proc | 프로세스 id와 같은 작동되고 있는 프로세스들에 대한 정보들을 가지고 있는 가상 파일 시스템용 디렉토리. |
/run | 런타임 환경에서 발생하는 휘발성(volatile) 데이터. |
/sbin | 관리자들을 위한 바이너리(실행 가능한) 파일. 접근하기 위해 관리자 권한이 필요합니다. |
/srv | 웹 서버나 FTP와 같은 서비스들을 위한 데이터. |
/sys | 커널과 하드웨어 디바이스들과의 연결을 위한 가상 파일 시스템. |
디렉토리 상세 설명
/bin 과 /sbin
이 둘은 근본적으로는 사용자가 필요한 명령어 프로그램와 같은 것들을 가지고 있다는 점은 같습니다. 다만 sbin은 관리자 권한이 필요한 명령어, 예를 들어 fsck, reboot, shutdown, ifconfig 등을 가지고 있습니다. 이러한 툴들은 시스템 부팅, 복구 등에 매우 중요한 것으로 일반 사용자들이 건들지 못하게 하기 위해 분리해놓은 것입니다. 다만 운영체제 종류에 따라 이를 아예 따로 관리하는 지 아니면 심볼릭 링크로 구성해놓은 지에 따라 많이 다릅니다. CentOS는 단순하게 두 디렉토리 내부를 동일하게 두 개로 만들었지만 MAC은 심볼릭 링크를 사용하여 연결해놓았다고 알려져 있습니다.
왜 명령어들을 모든 경로에서 사용이 가능할까요?
결국 bin에 들어있는 명령어(프로그램)를 실행할려면 해당 경로에 가서 그 실행 파일을 실행해야 합니다. 하지만 저희가 리눅스를 사용할 때는 그렇지가 않죠. 어떤 경로든간에 ls를 입력하면 그 경로의 정보를 보여줍니다. 이건 리눅스 시스템의 PATH 환경 변수가 설정이 되어있기 때문입니다. /bin, /sbin 두 디렉토리 모두 환경 변수로 지정이 되어있기에 우리는 경로 상관없이 명령어(프로그램)를 작동할 수 있게 됩니다.
/etc
etc 폴더는 대부분의 시스템의 전반적인 설정 파일들이 저장됩니다. 네트워크 관련 설정파일, 사용자 정보 및 암호정보, 파일 시스템 정보, 보안파일, 시스템 초기화 파일등 중요 설정 파일들의 위치해 있습니다.
각각 대표적인 파일 경로들을 나열해보면, 네트워크 관련 설정 파일로 /etc/hosts(아이피 주소와 호스트 이름 매핑)와 /etc/resolv.conf(DNS 서버 설정)이 있고, 사용자 정보 및 암호 정보는 /etc/passwd(유저 계정 정보), /etc/shadow(암호화된 비밀번호)가 있습니다. 시스템 초기화(부트)와 스케줄링에는 /etc/fstab(부팅 시 파일시스템 마운트)과 /etc/crontab(스케줄된 작업) 등이 있습니다.
참고
https://www.geeksforgeeks.org/linux-directory-structure/
https://sasca37.tistory.com/281
'컴퓨터 지식 > Linux&Unix' 카테고리의 다른 글
[Linux]리눅스의 모든 것은 파일로 이루어져있다 - 리눅스 파일 시스템 (6) | 2025.05.02 |
---|