1. 파일
- 정규 파일 (regular file) : 텍스트 파일, 바이너리 파일.
- 디렉토리 (directory) : 일련의 디렉토리 항(entry)들을 가진 파일.
> 각 항은 디렉토리에 있는 파일 이름과 inode 번호로 구성되어 있음.
- 특수 파일 : 장치(device) 파일, 파이프 파일 등.
> 장치 파일 : 주변장치(디스크, 프린터 등)를 파일 시스템 내의 파일 이름으로 접근함.
* 블록 장치 : 블럭 형식으로 데이터를 옮기기 위한 장치, 하드디스크 CD-ROM 처럼 주소체계를 가지고 있어서 랜덤으로 접근할 수 있는 장치.
* 블록 장치 파일 : 시스템과 장치 간의 데이터 이동이 블록 단위로 수행됨. 임의 접근 가능.
* 문자 장치 : 한번에 하나의 문자를 전달하기 위한 장치, virtual terminal, serial modem과 같은 것들이 포함됨.
* 문자 장치 파일 : 터미널 이동이 임의 길이의 문자(파이트)열로 수행됨. 임의 접근이 가능 or 불가능.
- 장치 파일은 주장치 번호(장치의 유형) , 부장치 번호(장치의 유닛 - 같은 유형의 여러 장치를 구분)를 가진다.
+파이프 파일 : 한 프로그램의 출력을 중간 파일 없이 다른 파일의 입력으로 바로 보내는 유닉스 메커니즘.
2. 파일의 소유권
- 리눅스에서는 모든 파일과 디렉터리에 대한 접근 권한을 지정하여 권한 부여가 가능하다.
- 권한 부여는 보안 관리상 꼭 필요한 기능.
- 파일 사용자 : 소유자(u), 파일의 그룹에 속하는 사용자(g), 그 외 사용자(o)
- 처음 비트가 파일이면 '-', 디렉터리이면 'd'로 표시..
- 파일의 소유권은 수퍼 사용자 또는 소유자가 변경 가능. > chmod
- 허가권의 유형 : 읽기(r), 쓰기(w), 수행하기(x).
<상대모드>
<절대 모드>
<모드 값의 예, 상태>
3. 파티션
: 디스크 공간의 분할.
> 디스크의 공간을 나누고 각 공간 사용이 다른 공간을 간섭하지 않도록 함.
> 다른 OS를 설치하기 위해서 각 OS를 다른 파티션에 설치함.
- 각 디스크는 대응하는 장치 파일(device file)이 있다.
ex)
- IDE 디스크 : /dev/hd● ( ● = a ~ z)
- SCSI 디스크 : /deb/sd●
- 개수가 다를 때 : 1개 > /dev/hda, 2개 > /dev/hda, /dev/hdb.
- 디스크 파티션을 나누면 : /dev/hda > /dev/hda1, /dev/hda2.
4. 파일 시스템
- 파일을 저장, 삭제, 읽기 등의 파일 관리 기능을 제공.
- 파일에 대한 접근 제어. (보호)
ex)
ext2 : 리눅스 기본 파일 시스템.
ext3 : ext2에 저널링 (journaling) 기능이 추가된 파일 시스템.
- 일반적으로 생성하는 파티션
- / : 루트 파티션. 단일사용자 모드로 수행하기 위해 필요한 핵심 시스템 파일이 저장됨. 핵심 기능들이 보호되도록 다른 파일 시스템과 분리해 놓는다.
- /boot : 리눅스 커널 이미지, 맵 파일 등을 저장함.
- /usr : 사용자 도구, X 윈도 들의 시스템, 주로 유틸리티(서비스 프로그램)들이 저장됨.
+X 윈도 시스템 : GUI환경의 구현을 위한 소프트웨어와 네트워크 프로토콜.
- /var : Spool 디렉토리 (메일, 프린트 등으로 가는 파일을 임시저장)와 로그 파일을 저장함. 부주의하여 매우 큰 파일이 생길 수 있으므로 별도의 파티션으로 분리함.
- /tmp : 사용자 응용 프로그램에서 임시 파일을 저장하는 곳으로 사용함. 시스템의 안정성을 높이기 위해 파티션을 분리할 필요가 있음. (동적이기 때문에 -writing 큰 임시 파일이 생길 수 있다.)
:/tmp 디렉토리는 누구나 읽고 쓸 수 있는 특성 때문에 공격자들이 공격툴을 런칭하는 곳으로 사용됨.
- /home : 사용자 홈 디렉토리.
- /swap : 가상 메모리를 저장함.
- 파티션 만들기 : fdisk, parted
- 파티션 보기 : df, cat /etc/fstab
/etc/fstab : 모든 파티션 정보를 가지고 있음, 부트 과정에서 자동으로 마운트될 수 있음.
4-1. 루트 파티션의 구성
- / (root) : 루트 디렉토리는 최상위 디렉토리이며, 모든 디렉토리는 /(root)를 기준으로 생성됨. /는 모든 디렉토리의 출발점이자 다른 파티션의 연결점.
- /bin : 시스템을 사용하기 위한 기본적인 명령어가 존재하며 싱글 모드로 부팅할 때 사용하는 명령어와 시스템을 복구할 때 사용하는 필수 명령어 등이 존재한다. (ls, mount, rm ....)
- /boot : 부팅에 필요한 커널과 부팅할 때 필요한핵심 파일이 들어있다.
> 시스템을 초기화하는 데 필요한 파일들이 위치함.
- /dev : 장치 파일이 위치한다.
- /etc : 시스템 시작 파일을 포함한 시스템 환경설정에 필요한 설정파일 (시스템의 모양과 동작을 결정하는)이 존재한다.
- /home : 사용자의 홈 디렉토리가 생성되는 곳이다. (ftp, mysql, tomcat 등 별도의 공간을 요구하는 서비스를 위한 데릭토리로 사용할 수 도 있다.)
- /lib : 중요한 동적/ 공유 라이브러리와 커널 모듈들이 위치함.
+라이브러리 : 다양한 위치의 콘텐츠를 한 데 뫃아놓은 가상 폴더.
- /media : 외장하드, 플로피, CD, DVD와 같은 외부장치가 자동으로 마운트되는 위치.
- /mnt : CD - ROM과 플로피 장치 등 일시적인 마운트를 하기 위한 마운트 포인트를 제공한다. 일반적으로 해당 디렉토리는 비어 있으며 CD-ROM 이나 플로피를 마운트한 후 해당 디렉토리로 이동할 경우 해당 매체의 내용을 볼 수 있다.
- /opt : add-on 패키지가 설치되는 디렉토리.
- /root : 시스템 관리자인 수퍼유저의 홈 디렉토리.
- /proc : 실제로 존재하지 않는 일종의 환영이다. 이 파일 시스템은 커널이 메모리 상에 만들어 놓은 것으로 디스크에는 존재하지 않는다.
>커널이 프로세스에게 정보를 전달할 수 있도록 만들어진 가상 파일 시스템.
- /sbin : 관리자(수퍼유저)가 사용하는 시스템 운영에 필요한 명령어가 존재하는 디렉토리.
- /srv : HTTP(/srv/www/) or FTP와 같은 서비스들의 데이터 디렉토리가 위치함.
- /sys : 커널 과정에서 시스템에 대한 정보를 획득하거나 설정할 수 있는 가상 파일 시스템.
- /tmp : 임시 파일을 저장하는 디렉토리. 수시로 파일이 생성되고 삭제됨. 시스템을 재구동 하는 경우, 존재하는 파일은 모두 삭제가 된다. > 파일을 저장하는 용도로 사용할 수 없다.
- /usr : 대부분의 유틸리티, 응용프로그램 및 설정 파일, 라이브러리 등이 위치
> 거의 모든 응용프로그램이 이 곳에 위치하여 일부 설정 파일도 들어 있다.
- /var : 빠르게 갱신되거나 변화되는 가변 데이터들이 위치함.
ex) 시스템 운영할 때 발생되는 로그(log), 메일 송/수신할 때 임시로 저장되는 스풀(spool), 프린터로 전송하기 위해 임시로 저장하는 프린트 스풀 데이터, 아파치(apache) 웹서버 관련 자료(/var/www), MySQL의 데이터 베이스, FTP의 최상위 디렉토리 등이 그 대표적인 예.
5. 파일 시스템 만들기
: 파티션을 만들고 나면, 각 파티션에 파일 시스템을 만들어야한다. > format을 한다.
- ext2 파일 시스템을 만드려면 : mke2fs /dev/hdb3
- ext3 파일 시스템을 만드려면 : mkfs.etc3 /deb/hdb3
- swap 파일 시스템을 만드려면 : mkswap /dev/hdb2
6. 마운트 (Mount)
: 루트 파티션 밑의 한 서브 디렉토리에 파티션을 연결하는 것.
: 루트파티션부터 찾아갈 수 있게 됨
* 즉, 여러가지 하드웨어장치들을 사용하려면 리눅스서버에 인식을 시켜야 되는데 이를 가능하게 해주는 것.
<참조 : 구글링, 리눅스 파일 시스템 기초>
'삽질의 현장 > - 리눅스' 카테고리의 다른 글
[Surro] :: 2. 리눅스 시스템 전체 부팅과정 (0) | 2013.10.31 |
---|---|
[Surro] :: 1. 리눅스 커널의 이해 (0) | 2013.10.29 |