Search

linux directory sturcture

Tag
linux
Create time
2019/12/11
리눅스 디렉터리 구조
리눅스를 많이 접해보지 않은 사람들은 검은색 바탕화면에 여러 글자들이 써있는 것들이 많이 어색할 것이다. 나역시 윈도우만 쓰다가 리눅스를 처음 접해봤을 때 이게 머지..? 라는 생각이 들었다. 조금씩 공부를 해가면서 명령어들을 외우고 사용하며 모르는 것들은 찾아가면서 공부를 했다.
cd라는 명령어라는 것이 디렉터리 간의 이동을 위한 명령어라는 것을 알고 있을 것이다. 막 cd로 이곳 저곳을 돌아다녀보면 / 라는 폴더 밑에 여러가지 폴더들이 있는것을 확인할 수 있다. 처음에는 이런게 먼지도 몰랐기 때문에 맨날 사용하는 내 디렉터리만 건들고 나머지는 거들떠 보지도 않았다.
워게임들을 풀면서 공통적으로 나오는 말이 /etc/ 밑에 passwd 파일이나 shadow 파일 등을 언급하는 경우가 많았는데 그럼 etc 폴더가 머지? 라는 궁금증이 생겼었고 이를 계기로 리눅스의 전체적인 디렉터리 구조를 공부하였고 간략하게 나마 정리를 하고자 한다.
윈도우 디렉터리 구조
위 사진은 윈도우의 파일 탐색기 화면이다. 왼쪽을 보면 각종 폴더들이 있다. 우리는 단순히 마우스로 원하는 폴더로 이동하기 위해 클릭 , 클릭 , 또 클릭을 한다. 리눅스도 똑같다. 리눅스는 터미널 모드에서 cd를 이용하여 원하는 폴더로 이동할 수 있다.
리눅스의 디렉토리 구조는 전체적으로 트리 구조를 하고 있다.
이러한 구조는 파일 시스템 표준안(FSSTND)을 기반으로 하는 것이 바람직하다. 이 표준안은 반드시 따라야하는 강제성은 없지만, 이에 따라 파일 시스템을 구성하게 되면 파일들의 위치가 일관되게 유지되어 프로그램 작성 및 유지보수가 편리해지는 장점이 있기때문에 여러 리눅스 배포판들은 이 표준안을 지키고 있다.
리눅스는 루트라는 최상위 디렉터리가 존재하고 그 하위에 여러가지 디렉터리가 나오게 된다. 루트 디렉터리 밑에는 bin, boot, dev, etc 등등의 디렉터리가 위치하게 되고, 각 디렉터리 하위에 필요한 디렉터리가 또 위치하게 된다.
루트 바로 밑에 있는 디렉터리 들은 리눅스를 실행하는데 있어 매우 중요한 역할을 수행하는 디렉터리이다.
1. /bin
일반적으로 리눅스의 기본 명령어들이 들어있는 디렉터리이다. 부팅에 필요한 명령어들도 존재하며 사용자가 일반적으로 사용하는 ls나 cat 같은  명령어들이 위치하고 있다.
2. /boot
부팅에 핵심적인 커널 이미지와 부팅 정보 파일을 담고있는 디렉터리이다.
3. /dev
시스템 디바이스 파일을 저장하고 있는 디렉토리이다.
4. /etc
시스템의 환경 설정 파일이 있는 디렉터리이다.
시스템의 부팅, 셧다운 시에 필요한 파일들과 시스템의 전반에 걸친 설정 파일들 및 초기 스크립트 파일들이 위치하게 된다. 시스템 전체 환경에 관한 설정을 바꾸려면 이 etc 디렉터리에 포함되어 있는 파일들을 잘 알아야 한다.
또한 사용자의 비밀번호를 관리하는 파일인 passwd 파일과 shadow 파일이 바로 /etc/ 아래에 존재한다.
*중요 폴더*
/etc/rc : /bin/sh 쉘이 부팅되면 자동적으로 실행되는 스크립트파일이 들어있다. 이러한 스크립트는 update, crond, inetd 같은 프로그램을 백그라운드로 실행시킨다.
/etc/init : 이 프로그램은 부팅시에 커널에 의해 가장 먼저 실행된다. init이 실행된 후에 커널 부팅이 완료가 되고 /etc/rc.d/rc와 로그인 관련한 getty 등을 실행하게 된다.
5. /home
사용자의 홈 디렉터리로써 로그인을 했을 때 처음으로 위치하게 되는 디렉토리이다.
6. /lib
부팅과 시스템 운영에 필요한 공유 라이브러리와 커널 모듈이 위치한다. 공유 라이브러리란 여러 가지 프로그램들에의해서 사용되는 기능을 별도의 프로그램으로 분리시켜 놓은 것이다. 커널 모듈도 공유 라이브러리와 같이 커널 안에 자체적으로 포함되지 않고 독립적인 형태로 분리되어 있으면서 부팅 시에 커널에 동적으로 연결되어서 전체적인 커널을 동적으로 구성하게 되는 별도의 파일들을 의미한다.
7. /proc
가상 파일 시스템이라고 하는 곳으로 현재 메모리에 존재하는 작업들이 파일 형태로 존재하는 폴더이다.
8. /root
관리자계정 root 사용자의 홈 디렉터리이다.
9.  /sbin
시스템 관리를 위한 전반적인 실행 유틸리티를 담고 있다.  ifconfig 같은 명령어가 위치한다
10. /tmp
프로세스 진행 중 발생하는 임시 파일들이 저장되는 작업 디렉토리이다. 따라서 이 디렉터리 파일들은 수시로 생성되고 삭제되므로 중요한 자료는 해당 디렉토리에 보관해서는 안된다.
/tmp 디렉토리는 stick bit라는 특수권한이 설정되어 있어 파일의 소유자만이 삭제가 가능하다.
11. /usr
일반 사용자들을 위한 대부분의 프로그램 라이브러리 파일들이 위치한다.
/usr/bin : 응용 프로그램의 실행 파일이 위치함
/usr/sbin : 주로 네트워크 관련 실행 명령어와 실행 데몬들을 포함함
/usr/include : 기본 c 라이브러리 헤더파일과 각종 라이브러리 헤더 파일들이 존재함.
/usr/lib : /usr/bin과 /usr/sbin에 있는 실행 바이너리를 실행하기 위한 라이브러리가 존재한다.
/usr/src : 프로그램 소스 및 커널 소스들이 보관되어 있다.
12. /var
시스템에서 사용되는 동적인 파일들이 저장된다.
시스템 운영중에 시스템 자료 데이터가 변경되면 해당 변경 내용이 이곳에 저장이 된다.
주로 시스템 로그들이 저장된다.