리눅스는 유닉스 계열을 바탕으로 만들어진 오픈소스 운영체제이다. 그래서 유닉스와 마찬가지로 모든 것들을 파일로 관리한다. 또한, 리눅스의 경우 계층구조(트리구조)의 디렉토리를 가지고 있는데, 이것은 용도에 따라 구분되며, 이를 파일시스템이라고 부른다.
파일종류
일반 파일
데이터 저장에 사용되는 파일이다. 리눅스에서 사용되는 파일 대부분이 일반 파일에 속한다. 실행 파일, 데이터 파일, 이미지 파일은 바이너리(1과 0의 형태) 파일이라고 부른다. 텍스트 파일은 아스키(ASCII)코드로 구성되어 vi, vim 명령어 등의 문서 편집기 명령어로 내용을 보거나 수정할 수 있다. 그 외 다른 파일들은 확장자에 맞는 특정 응용 프로그램이 있어야 확인할 수 있다.
디렉토리 파일
디렉토리 역시 파일 종류 중 하나이며, 해당 디렉토리에 저장되어 있는 정보와 하위 디렉토리에 대한 정보를 담고 있다.
링크 파일
링크 파일은 원본 파일을 대신해서 사용하기 위해 다른 파일명으로 지정된 파일을 뜻한다. 쉽게 설명하면, 윈도우 운영체제의 바로가기 기능과 유사하다.
장치 파일
장치(하드웨어)들을 관리하는 파일이다. 실제로 하드 디스크나, CPU, CD-ROM과 같이 유형의 장치들을 파일화하여 관리한다.
디렉토리의 역할과 개념
/
: 최상위 디렉토리
- 마운트 되는 리눅스 파일 시스템이 있는 최상위 디렉토리.
- 시스템의 근간을 이루는 가장 중요한 디렉토리.
- 파티션 설정 시 반드시 존재하여야 함.
- 절대경로의 기준이 되는 디렉토리.
/bin
: 기본 실행 명령어(실행파일)가 저장되어있는 디렉토리
- 리눅스의 기본 명령어(binary)들이 들어있는 디렉토리.
- 시스템을 운영하는데 기본적인 명령어들이 모여있는 디렉토리.
- 부팅에 필요한 명령어들이 위치하며 부팅 후 시스템의 사용자들이 사용할 수 있는
일반적인 명령어들도 위치하고 있음.
/boot
: 부팅 관련 파일 디렉토리
- 부팅에 핵심적인 커널 이미지와 부팅 정보 파일을 담고 있는 디렉토리.
/dev
: 장치를 쓸 때 필요한 특수 파일 디렉토리
- 시스템 디바이스(device) 파일을 저장하고 있는 디렉토리.
- 하드디스크 장치파일 /dev/sda, CD-ROM 장치파일 /dev/cdrom 등과 같은 장치
파일들이 존재하는 디렉토리. - /dev위치에 백도어파일이 숨겨져 있는 장소로 유명했음. 관리자들의 관심이 소홀한
디렉토리이기 때문에 백도어 파일을 숨겨두기에 최적의 장소로 인식됨. 따라서 기본
장치파일 외에 다른 생소한 파일이 생성되어 있는가를 주기적으로 확인해야함.
/etc
: 시스템 설정 파일 디렉토리
- 시스템 환경설정 파일이 있는 디렉토리.
- 네트워크 관련 설정 파일, 사용자 정보 및 암호 정보, 파일 시스템 정보, 보안 파일,
시스템 초기화 파일 등 중요 설정 파일들이 위치한 디렉토리.
/home
: 일반 사용자의 홈 디렉토리
- 일반 사용자의 홈 디렉토리가 만들어지는 디렉토리.
- 대부분 사용자의 ID와 동일한 이름의 디렉토리가 자동으로 생성됨.
/lib
: 공유 라이브러리 디렉토리
- 커널 모듈 파일과 라이브러리 파일이 있는 디렉토리.
- /lib/modules: 커널 모듈 파일들 존재.
- 대부분의 라이브러리들은 링크로 연결되어 있음.
/media
: 임시 마운트 디렉토리
- DVD, CD-ROM, USB 메모리스틱 등과 같은 탈부착이 가능한 장치들의
마운트포인트 (mount point)로 사용되는 디렉토리.
/mnt
: 입출력 장치 연결 마운트 디렉토리
- ount 명령을 사용하여, 마운트 시킨 cd-rom, floppy disket등이 들어가는 디렉토리
- 여러 가지 기타의 파일 시스템을 마운트 하는 곳으로. 가끔씩, cdrom와 플로피
장치를 마운트 하기 위해서 /cdrom과 /floppy 디렉토리가 사용되지만, 데비안이 아닌
다른 배포본에서도 이렇게 쓰이는지는 확신할 수 없다. /mnt는 /mount라고도 불린다. - 다른 장치들을 마운트 할 때 일반적으로 사용하는 디렉토리
- 다른 디렉토리를 사용하여도 됨
/proc
: 커널과 프로세스를 위한 가상 파일 시스템들이 저장돼 있는 디렉토리
- 일명 “가상파일시스템”이라고 하는 곳에 현재 메모리에 존재하는 모든 작업들이
파일형태로 존재하는 곳 - 디스크상에 실재 존재하는 것이 아닌 메모리상에 존재하기 떄문에
“가상파일시스템”이라고 함
/root
: 관리자 홈 디렉토리
- 시스템 최고 관리자인 root 사용자의 개인 홈 디렉토리
/sbin
: 시스템 명령어가 저장되어 있는 디렉토리
- fconfig, e2fsck, ethtool, halt, shutdown 과 같은 주로 시스템관리자들이 사용하는
시스템 관리자용 명령어를 저장하고 있는 디렉토리
/tmp
: 공용 디렉토리 및 임시 저장소
- 시스템을 사용하는 모든 사용자들이 공동으로 사용하는 디렉토리
ex) mysql에서 사용하는 mysql.sock 등과 같은 소켓파일
아파치에서 사용하는 session file
등이 생성되기도 함 - ex)와 같이 시스템의 일반적인 사용자 또는 각종 프로세스에서 사용되는 파일들이
생성되는 위치이다 - 웹해킹에 사용되는 파일이 업로드 되는 위치이기도 하기 때문에 주의가 요구되는
디렉토리이다.
/usr
: 시스템이 아닌 일반사용자가 사용하는 프로그램이 설치되는 디렉토리
- c++, chsh, cpp, crontab, du, find 등과 같이 일반사용자들용 명령어들은 /usr/bin에
위치 - 시스템관리자 전용명령어를 제외한 거의 모든 일반적 리눅스 명령어들이 존재하는
위치가 /usr/bin 이다. - 특히 /usr/local 디렉토리는 사용자들이 설치한 어플리케이션이 설치되는 위치이다.
- /usr/sbin에는 각종 어플리케이션 설치시에 생성되는 명령어들과 네트워크에 관련된
명령어들이 주로 존재
/var
: 시스템 운영중에 저장되는 자료가 저장되어 있는 디렉토리
- 시스템 운용중에 생성되었다가 삭제되는 데이터를 일시적으로 저장하기 위한
디렉토리. - 거의 모든 시스템로그파일은 /var/log에 저장
- DNS의 zone 설정파일은 /var/named에 저장
- 메일파일은 /var/spool/mail에 저장
- 크론설정파일은 /var/spool/cron에 저장
/lost+found
: 파일 시스템마다 존재할 수 있는 디렉토리
- 이 디렉토리는 fsck 또는 e2fsck 등과 같은 파일시스템 체크 및 복구유틸리티 실행
후에 주로 생성 되는 것으로서 복구되지 않은 채로 블록(block)에만 존재하는 파일
즉, 연결이 끊어진 inode 들이 숫자파일형태로 존재하는 곳이다. - 숫자 형태로 존재하는 파일들은 mv명령어로 파일 이름만 바꾸면 바로 복구될 수
있다. - 이 위치에 존재하는 텍스트파일의 경우에는 file 이라는 명령어와 cat 또는 vi 등의
명령어로 파일의 내용 등을 확인한 후에 복구 가능하므로 경우에 따라서는 매우
중요한 역할을 하는 디렉토리 - 이 디렉토리를 삭제해도 시스템에는 아무런 영향이 없으나
- 꼭 필요한 파일이 이 디렉토리에 복구되지 않은 채로 남아있을 수 있기 때문에
반드시 확인후에 삭제해야 한다.
이미지 출처
https://www.linuxyogi.com/linux-directory-structure-file-system-hierarchy/
'DevOps > Linux' 카테고리의 다른 글
[Linux] 리눅스 네트워크 네임스페이스 (1) | 2023.02.06 |
---|---|
[Linux] 리눅스 표준 스트림과 파이프라인, 리다이렉션 (1) | 2022.12.30 |
[Linux] 프록시 서버의개념, NGINX 리버스 프록시와 캐싱 (0) | 2022.12.29 |
[Linux] NGINX 개념과 각 환경에서 설치방법 (0) | 2022.12.15 |
[Linux] Read, Write, Execute 권한, chmod 권한 변경 (0) | 2022.12.02 |