Welcome to My World (www.dgmayor.com)

4차 산업 혁명 기초 IT 지식

3. 운영체제 - 리눅스 Ubuntu 구조 등...

dgmayor 2022. 2. 24. 14:57
728x90

 

- 우분투 소개 -

 

우분투는 리눅스 배포판의 한 종류이다.

 

리눅스 배포판들은 겉으로 보이는 모양이 많이 다를 수 있지만 내부 시스템 구조는 일관성을 띄고 있다.

 

콘솔을 이용하게 되면 리눅스 시스템에 직접 접근해서 작업을 수행할 수 있어서, 리눅스 배포판 종류와 상관없이

 

거의 비슷하게 사용할 수 있다는 장점이 있다.

 

 

 



  1. 우분투의 파일시스템 구조


  - 우분투는 MS윈도우와 같이 드라이브 ( C: 나 D: ) 라는 개념이 없다.


  - 우분투의 파일 시스템은 단 하나의 파일 시스템으로 구성되어야 한다.
(간단하게 말해 우분투는 무조건 C:나 D: 라는 하나의 드라이브만 존재해야 한다는 것이다.)


  - 이는 리눅스 시스템의 공통된 특징으로 다른 리눅스 배포판도 마찬가지 이다.






  2. 우분투 파일시스템의 최상위 루트 (root) 디렉토리


  - 우분투의  파일 시스템의 최상위는 루트 디렉토리 (/) 라고 부르는 공간이다.
    이는 MS 윈도우로 비유하자나면 C:\와 비슷한 것이다. (C: 드라이브의 가장 최상위 폴더는 C:\ 이기 때문이다.)


  - 리눅스는 드라이브라는 개념이 없고 무조건 루트 디렉토리(/) 부터 존재하기 때문에 다른 저장장치에 접근하려면
    특정 디렉토리를 해당 저장 장치에 연결해서 접근해야 한다.






  3. 우분투의 디렉토리 구조


  - 우분투의 디렉토리 구조에서 가장 큰 특징은 운영체제의 다양한 시스템 파일들이 한곳에 모여있는게 아니라 
    많은 디렉토리에 분산되어 있다는 점이다.


  - 이는 우분투 뿐만이 아니라 리눅스 기반의 배포판들의 특징이다.

 

 

 

 

- 우분투의 디렉토리 구조 - 

 

 

 

/

"루트 디렉토리"라고 불리우며 리눅스 파일 시스템에서 가장 최상위 디렉토리이면서 파일 시스템의 근간을 이루는 기본 디렉토리로 모든 디렉토리 구조의 시작입니다. 이름이 루트이다 보니 저도 자꾸 /root 와 헤깔립니다. 그러나 /root 는 사용자 계정 중의 하나인 시스템 관리자의 계정입니다.

/boot

리눅스 커널이 저장되어 있는 디렉토리로서 리눅스 boot에 필요한 각종 booting지원 파일들이 저장되어 있습니다. 예로 부팅 이미지, 시스템 맵, 모듈 정보, 리눅스 커널 등이 들어 있습니다.

/dev

시스템의 각종 디바이스들에 접근하기 위한 디바이스 드라이버들이 저장되어 있는 디렉토리로 하드디스크에 차지하는 공간이 없는 가상 디렉토리이다. 대표적으로는 하드 드라이브, 플로피, 씨디롬, 시리얼 포트 그리고 루프팩장치 등이 존재합니다.

리눅스 시스템은 윈도우와 달리 각종 디바이스 장치들을 하나의 파일로 취급합니다. 따라서 시스템은 각각의 장치 정보를 /dev 디렉토리에 존해하는 해당 장치 파일로 부터 가지고 와서 처리합니다.

각 장치는 제어하기 위한 디바이스 드라이버 파일이 존재하는데, 크게 2가지가 있습니다. 하나는 통신포트, 프린터 포트, 터미널 장치처럼 한번에 한 바이트씩 차례로 오가는 단방향의 문자 장치가 있고, 또 하나는 버퍼를 사용하여 한번에 블록 단위로 처리하는 블록 장치가 있습니다.

앞서 말씀드린바와 같이 이 디렉토리에는 하드디스크의 공간을 차지하는 곳이 아닙니다. 디바이스 드라이버 파일을 만들고 이를 등록하면 이 폴더에 나타나게 되는데, 등록하는 방법에는 콘솔에서 직접 mknod 명령을 사용하거나 /dev/MAKEDEV 라는 스크립트를 이용할 수 있습니다.

장치 하나를 볼까요?

[root@jwCentOS dev]# ls -al ttyS0
crw-rw---- 1 root uucp 4, 64 3월 18 15:45 ttyS0

퍼미션 부분의 crw-rw---- 첫번째 문자 c 는 문자 장치를 나타냅니다. b 이면 블록 장치입니다. 그리고 uucp 다음에 나오는 첫 번째 숫자가 디바이스 드라이버의 메이저 번호이고 다음 숫자가 마이너 번호인데, (1) 각 장치에는 고유 번호인 메이저 번호가 있고 (2) 이 메이저 번호를 가지고 커널은 어떤 디바이스 드리이버를 사용할지를 결정하게 됩니다. (3) 또한 같은 디바이스 드라이버를 사용하는 같은 장치가 여러 개가 있을 때, (4) 디바이스 드라이버는 마이너 번호로 각 장치를 구별하게 됩니다.

예를 들어 시리얼 포트 첫번째가 메이저 번호 4번이고 마이너 번호가 64라면 두번째 시리얼 포트는 메이저 번호가 같은 4번이면서 마이너 번호가 65가 됩니다.

(1) 첫 번째 시리얼 포트를 사용하게 되면, (2) 커널은 메이저 번호 4번으로 디바이스 드라이버를 선택하고 (3) 디바이스 드라이버에 마이너 번호를 전달해 줍니다. 그러면 (4) 디바이드 드라이버는 마이너 번호로 어떤 장치를 제어할 지를 판단하게 됩니다.

몇 가지 대표적인 장치를 보겠습니다.

디렉토리 명 설    명
/dev/fd0 프로피 디스크 드라이브
/dev/hda 첫 번째 슬롯 마스터 IDE 하드 디스크 드라이브
/dev/hdb 첫 번째 슬롯 슬레이브 IDE 하드 디스크 드라이브
/dev/hdc 두 번째 슬롯 마스터 IDE 하드 디스크 드라이브
/dev/hdd 두 번째 슬롯 슬레이브 IDE 하드 디스크 드라이브
/dev/sda 첫 번째 SCSI 하드 디스크 드라이브
/dev/sdb 두 번째 SCSI 하드 디스크 드라이브
/dev/st0 첫 번째 SCSI 테이프 드라이브
/dev/st1 두 번째 SCSI 테이프 드라이브
/dev/scd0 첫 번째 SCSI CD 롬 드라이브
/dev/scd1 두 번째 SCSI CD 롬 드라이브
/dev/cdrom IDE CD 롬 드라이브
/dev/mouse 마우스
/dev/ttyS0 COM 1 시리얼 포트
/dev/ttyS1 COM 2 시리얼 포트
/dev/lp0 첫 번째 병렬 포트
/dev/lp1 두 번째 병렬 포트
/dev/console 시스템의 콘솔 장치입니다.
/dev/null 아무것도 없는 장치(?) 하수구라고 생각하시면 되겠습니다. 예로 어떤 출력을 해야 하는데, 그 출력을 그냥 버리고 싶다면 출력 방향을 이 장치로 설정하면 그냥 하수구로 버리듯이 모든 출력이 사라집니다.
이 장치는 프로그램에서 열기 명령을 사용하면 항상 OK가 됩니다. 그러므로 프로그램에서도 디버깅에 상용되며, 셀 명령 실행에서 보기 싫은 출력 문자열을 없앨 때에도 사용됩니다.
/dev/zero /dev/null처럼 가상 파일이면서 이 장치에 쓰기를 하면 출력이 사라지지만 특정한 길이의 초기화된 더미 파일을 임시 스왑 파일을 만들 때 사용한다고 합니다. 아직은 도대체 뭔 소리인지 잘 모르겠습니다. --;

/proc

MS 윈도즈의 작업 관리자를 보면 실행 중인 프로세스의 정보가 출력되는 것처럼 시스템의 각종 프로세서, 프로그램 정보 그리고 하드웨어적인 정보들이 저장되어 있습니다. 이 티렉토리도 /dev처럼 가상 파일 시스템으로 하드 디스크의 물리적인 공간을 사용하지 않고 메모리 상에 존재합니다.

예로 cpuinfo 를 출력해 보시면 CPU 정보를 보실 수 있습니다.

]# cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 15
model name : Intel(R) Core(TM)2 CPU 6300 @ 1.86GHz
stepping : 6
cpu MHz : 1932.425
cache size : 2048 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 10
wp : yes
flags : fpu vme pse tsc msr pae cx8 pge cmov acpi mmx fxsr sse sse2
bogomips : 3914.89

역시 대표적인 정보를 알아 보겠습니다.

cat ****   설    명
/proc/1/status 첫번째 프로세스의 상태를 출력합니다.
/proc 아래에 프로세스 별로 번호에 맟춘 디렉토리가 있으며, 각 디렉토리에 프로세스별 정보가 있습니다. 예로,  /proc/1
/proc/cpuinfo cpu 에 대한 타입, 제조사, 모델, 성능 등에 관한 정보가 출력
/proc/devices 현재 동작 중인 디바이스 드라이버 목록
/proc/dma 현재 어떤 DMA 채널을 사용 중인지를 출력
/proc/filesystems 커널에 설정되어 있는 파일 시스템 목록
/proc/interrupts 어떤 인터럽트가 사용 중이고 각각의 인터럽트가 얼마나 사용되었는지를 출력
/proc/ioports 현재 어떤 I/O 포트가 사용 중인지를 출력
/proc/kcore 현재 시스템에서 사용중인 메로리의 실제 이미지로 실제 메모리의 내용을 모두 가진 것처럼 보이지만 프로그램이 필요로 하는 부분의 이미지만을 필요할 때 만들어 제공
/proc/kmsg 커널에 의해서 출력되는 메시지들을 저장하고 있는 파일
/proc/loadavg 현재 시스템의 평균 부하량(Load Average)에 대한 정보를 출력
/proc/ksyms 시스템 커널이 사용하고 있는 심볼들에 대한 정보를 저장하고 있는 파일
/proc/meminfo 사용중인 메모리의 사용량을 출력. 가상 메모리에 대한 정보도 얻을 수 있습니다.
/proc/self /proc를 억세스하는 프로그램의 프로세스 디렉토리에 대한 심볼릭 링크로 두개의 프로세스가 /proc에 접근하면 각각은 서로 다른 링크를 가지게 됩니다. 이것은 주로 프로그램이 자신의 프로세스 디렉토리에 쉽게 접근할 수 있도록 해줍니다.
/proc/stat 시스템의 현재 상태에 대한 다양한 정보를 저장하고 있는 파일
/proc/uptime 시스템이 얼마나 오래 동작했는지에 대한 정보를 저장하고 있는 파일
/proc/version 시스템이 현재 사용중인 커널 버전에 대한 정보를 저장하고 있는 파일

/bin

binaries의 약어로 이진 파일들이며 리눅스에서 가장 기본이 되는 명령어들이 모여 있는 디렉토리입니다. 파일 목록을 보여주는 ls 라든지 일반 사용자가 root 계정으로 잠시 로그인하게 해주는 su 라든 하는 일반 사용자를 포함한 모든 사용자들이 사용하는 프로그램이 들어 있습니다.

또한 이곳에는 부팅에 필요한 명령어들이 위치하여 부팅한 후에 시스템의 계정 사용자들이 사용할 수 있는 일반적인 명령어들도 위치 하고 있습니다.

프로그램이 많아서 모두 설명드릴 수 없지만 자주 사용하는 몇 가지를 올립니다.

프로그램  설    명
cat 파일 내용을 출력
chgrp 파일의 그룹 속성 변경
chmod 파일의 접근 권한 변경
chown 파일의 소유자 변경
cp 파일 복사
cut 특정 필드를 파일 밖으로 복사
date  현재 날짜 출력
df 파일 시스템별 용량 출력
dmesg 부팅 메시지 출력
grep 파일 안의 특정 패턴을 검색
gupzip
gzip
파일 압축
hostname 컴퓨터 이름 출력
kill 프로세스 죽이기
link 링크 만들기
ls 파일 목록 출력
mkdir 디렉토리 만들기
mount 장치를 시스템에 연결
mv 파일 이동/파일 이름 변경
netstat 현재 연결된 네트워크에 대한 모든 정보
ping 상대 P.C. 가 네트워크에 연결되어 있는지 확인
ps 실행 중인 프로세스 목록
pwd 현재 작업 디렉토리 출력
rm 파일 삭제
rmdir 디렉토리 삭제
rpm rpm 관리자
sleep 초 단위 대기
su 사용자 변경
tar 여러 개의 파일을 묶거나 풀기
touch 크기가 0인 파일을 만들거나 파일의 날짜/시간을 변경
umount mount 해제
unlink link 파일 제거
usleep 1/1,000,000초 단위로 대기
vi vi 에디터

 

/sbin

시스템 관리를 위한 다양한 프로그램이 들어 있는 디렉토리입니다. 매우 많은 프로그램이 들어 있어서 모두 설명을 드리기에는 어렵고 몇가지를 정리해 보겠습니다.

프로그램  설    명
clock 현재의 날짜와 시간을 출력
fdisk 파티션을 새로 생성하거나 삭제
findfs 라벨에 해당되는 파티션 정보 구하기
fixfiles 파일과 관련하여 많은 거부 상황이 발생할 때 사용
grub grub 부팅 관리자 관련 프로그램
grub-install
grub-md5-crypt
grub-terminfo
halt 시스템 종료
ifconfig 네트워크 설정
ifdown 네트워크 종료
ifup 네트워크 시작 
*** 네트워크 설정 상태를 변경하셨다면 ifdown 과 ifup으로 네트워크를 다시
*** 시작하실 수 있으나 /etc/init.d/network restart 로 한버에 재 시작할 수 있습니다.
lilo lilo 부팅 관리자 프로그램
mkfs 하드 디스크 파티션을 리눅스 파일 시스템
poweroff halt 와 같이 시스템 종료
reboot 시스템 리부팅

/etc

이 디렉토리는 리눅스 시스템에 관한 각종 환경 설정에 연관된 파일들과 디렉토리들을 가진 아주 중요한 디렉토리입니다. 이 디렉토리에 있는 대부분의 파일들은 시스템 관리자에 의해 관리되는 파일들입니다.

사용자 정보를 가지고 있는 passwd, 그룹 정의 파일인 group, 프린터 목록 파일 printcap, 자동 마운트될 파일 시스템을 등록해 두는 파일 시스템 테이블인 fstab 외에도 웹 서버 환경 설정, 시스템 계정 사용자 정보, 패스 워드 관리, 시스템의 파일 시스템 관리 파일, 여러가지 시스템 보안에 관련된 파일들, 시스템 초기화 설정 파일, TCP/IP 설정 파일 등 시스쳄 전반에 걸친 거의 모든 환경 설정 파일들이 모두 이 디렉토리에 있습니다.

내  용 설    명
/etc/rc.d 시스템의 부팅과 시스템 실행 레벨 변경시에 실행되는 스크립트들이 저장되어 있는 디렉토리로 리눅스의 6가지 실행 레벨로 각각의 해당 디렉토리가 있습니다.
/etc/shadow 파일에서 패스워드 부분만을 따로 저장하는 파일. 이 파일에 패스워드는 암호화 되어 셰도우 패스워드 형태로 저장되어 있으며 시스템 관리자만이 접근할 수 있기 때문에 크래킹 등에 대한 피해를 줄임.
/etc/group 시스템의 그룹에 대한 정보를 저장하고 있는 파일
/etc/inittab init를 설정하는 파일
/etc/issue,
/etc/issue.net
getty에 의해서 로그인을 위한 프롬프트가 뜨기 전에 출력되는 메시지를 설정하는 파일. 리눅스 시스템으로 접속할 경우 가장 처음으로 볼 수 있는 메시지로 보통 시스템에 대한 설명과 각종 환영 메시지를 전달하기 위해서 사용됩니다. issue 파일의 내용은 보통 시스템의 터미널에서 볼 수 있으며 /etc/issue.net 파일의 내용은 리모트상에서 시스템으로 접속할 경우 볼 수 있습니다.
/etc/motd 'Message of the day'의 약자로 시스템으로의 접속에 성공할 경우 쉘이 뜨기 전에 출력되는 메세지를 설정하는 파일
/etc/profile,
/etc/csh.login,
/etc/csh.cshrc
시스템이 시작될 때 사용자가 로그인을 할 때 본쉘이나 C쉘에 의해서 실행되는 스크립트 파일. 일반적으로 사용자들에 대한 기본 환경 설정에 사용.
/etc/securetty 시스템 관리자가 시스템에 로그인할 수 있는 안전한 터미널에 대한 정보가 저장. 일반적으로 가상 콘솔이 설정되어 있으며 네트워크를 통해 시스템으로 침입해 시스템 관리자의 권한을 획득하는 크랙킹을 막기 위해서 사용합니다.
/ete/shell 시스템에서 안정적으로 사용할 수 있는 쉘에 대한 정보를 저장하고 있는 파일. 만약 chsh명령을 사용해 사용중인 쉘을 바꾸려면 이 파일에 저장되어 있는 쉘중에 선택해야 합니다. 또한 ftp데몬의 경우 사용자의 쉘을 검사하여 /etc/shell에 저장되어 있지 않은 쉘을 사용한다면 로그인을 허용하지 않습니다.

/mnt

외부 장치인 플로피 디스크, 시디롬, 삼바등을 마운트하기 위해서 제공되는 디렉토리입니다. 임시로 사용되는 디렉토리이므로 프로그램들은 /mnt에 어떤 파일 시스템이 마운트 되었는지 자동으로 인식하지 않습니다. 또한 /mnt는 보통 여러 개의 하위 디렉토리로 나누어 사용되고, 평소에는 각 디렉토리들은 비어 있습니다.

예를 들어 CD-ROM을 마운트하시려면,

]# mount -t ISO9660 /dev/cdrom /mnt/cdrom

이렇게 CD-ROM을 마운트하면 CD-ROM이 열리질 않습니다. 마운트를 해제해야 CD-ROM이 빠집니다.

]# umount /mnt/cdrom

그런데, "Device is Busy" 라는 에러를 내면서 언마운트가 안되는 경우가 있습니다. 이럴 때에는 장치를 사용하는 프로세스를 죽이시면 됩니다.

fuser -km /mnt/cdrom

또 다른 사용은 nfs 공유 폴더를 공유하는 방법이죠.

]# mount -t nfs -o nolock 192.168.10.50:/home/jwjw/prjs /mnt/nfs

/usr

시스템에 사용되는 각종 프로그램들이 설치되는 디렉토리로 프로그램과 관련된 명령어와 라이브러리들이 이 디렉토리에 위치 합니다. 또한 X 시스템관련 파일들과 리눅스 커널 소스, 각종 C 언어 과련 해더 파일 등도 이 디렉토리 안에 저장되어 있습니다.

내  용 설    명
/usr/bin 리눅스 시스템에서 사용되는 각종 프로그램들이 저장되어 있으며 /bin 디텍토리에 없는 다양한 실행 파일들이 저장되어 있는 디렉토리
/usr/X11R6 X 윈도우 시스템에 사용되는 모든 파일들이 이 디렉토리 안에 저장되며 X 윈도우 시스템의 개발과 설치를 좀더 쉽게 하기 위해서 전체 시스템 디렉토리 구조에 통합되지 않고 독자적인 구조
/usr/etc /etc 디렉토리에는 각종 환경 설정 파일들이 있듯이 이곳에도 여러 가지 시스템 환경 설정 파일들이 저장되어 있습니다. /usr/etc의 파일들은 /etc디렉토리 안의 파일들과 달리 반드시 필요한 파일들은 아닙니다.
/usr/sbin 시스템 관리자를 위한 명령어들이 저장되는 디렉토리이며 명령어들은 루트 파일 시스템에는 필요가 없는 서버 프로그램들이 저장됩니다.
/usr/include C 라이브러리 및 각종 추가 라이브러리 헤더 파일
/usr/lib /lib 에 들어 있는 라이브러리를 제외한 라이브러리로 /usr/bin의 실행 파일의 동적 링크된 라이브러리가 들어 있습니다.
/usr/local 시스템 관리자에 의해서 따로 설치되는 프로그램들을 모아 놓은 곳으로 시스템에 관련된 프로그램이 아닌 관리자가 소스를 가져다가 컴파일하여 설치한 파일이 저장되는 곳입니다.
/usr/man man페이지의 실제 내용들이 저장되어 있는 디렉토리. man1, man2, man3, 등과 같이 여러개의 디렉토리들로 나누어져 있으며, man1 디렉토리는 섹션 1의 man 페이지 소스를 위한 디렉토리가 됩니다.
/usr/src 시스템에서 사용하는 각종 프로그램들의 컴파일되지 않은 소스 파일들이 저장되어 있다./usr/src/linux 디렉토리가 리눅스의 커널소스를 저장하고 있는 디렉토리입니다.
/usr/X386 /usr/X11R6 디렉토리와 유사한 티렉토리로 X11 Release 5를 위한 디렉토리
/usr/info GNU info문서들을 저장하고 있는 디렉토리
/usr/doc 각종 문서들이 저장되어 있는 디렉토리
/lib 일반적인 리눅스 시스템에서 사용하는 공용 라이브러리 파일들이 위치한 디렉토리입니다.
/lib/modules 디렉토리에는 커널로 로딩 사능한 커널 모듈들이 저장되어 있습니다.

/home

사용자 별로 제공되는 홈 디렉토리가 위치하는 디렉토리입니다. 그러므로 시스템에서 사용하지 않으며 네트워크로 시스템에 접속하는 사용자들을 위한 공간입니다.

/var

각종 시스템 로그 파일이나 사용자 로그인에 대한 보안기록등과 같은 시스템에서 사용되는 동적인 파일들이 저장됩니다.

내  용 설    명
/var/cache 포멧된 메뉴얼 페이지들이 잠시 대기(Cache)하기 위한 디렉토리
/var/lib 시스테이 동작하면서 계속 수정되고 변경되는 파일들을 위한 디렉토리
/var/local /usr/local 디렉토리에 설치된 프로그램들의 각종 데이터들이 저장되는 디렉토리
/var/lock 잠금 파일들이 저장되는 디렉토리로 프로그램들이 특정한 장치나 파일들을 프로그램 자신이 독점적으로 사용하려 할 때 /var/lock 디렉토리에 잠금 파일을 만들어 사용하게 됩니다. 그렇기 때문에 다른 프로그램들은 장치나 파일을 사용하기 전에 우선 이 디렉토리의 내용을 조사하여 해당 장치나 파일들이 사용중인지 확인합니다.
/var/log 프로그램들의 로그 파일을 저장하는 디렉토리
/var/log/boot.log 부팅시 시작된 데몬들에 대한 정보
/var/log/cron 크론 메시지
/var/log/dmesg 부팅 시 컴퓨터 초기화 부분의 메시지가 기록되며 마직 부팅 메시지를 담습니다.
/var/log/secure 서비스를 받기 위하여 서버에 접속하는 모든 기록이 저장
/var/log/spooler 메일 및 뉴스 로그 파일
/var/log/statistics 센드 메일에서 사용하는 로그 파일
/var/log/wtmp 로그인한 사람의 정보를 가지고 있는 데이터 파일. 시스템을 사용하고 있는 사람의 정보를 가지고 있습니다.
/var/log/lastlog 마지막에 로그인한 사람에 대한 정보
/var/log/messages 시스템의 이상 유무에 대한 로그 파일로 시스템의 이상 유무를 파악하는데 사용
/var/log/xferlog ftp 억세스 로그 파일
/var/log/htmlaccess.log 아파치 웹 억세스 로그 파일. rpm으로 설치 시 여기에 억세스 로고가 쌓이며 /var/log/httpd/와 더블어 아파치와 관련된 로그 파일
/var/log/maillog 센드 메일의 로그 파일. 사용자가 메일 관련하여 접속할 경우 기록
/var/run 시스템의 현재 정보들을 저장하고 있는 디렉토리. /var/run/xinetd.pid 파일의 경우 현재 사용중인 xinetd 데몬의 프로세스 번호를 저장
/var/spool 메일이나 뉴스, 프린터 큐 등고 같은 시스템상에서 대기 상태에 있는 작업들을 위한 디렉토리. 각각의 대기 작업들은 모두 /var/spool 아래 고유의 디렉토리에 위치합니다. 예를 들어 시스템의 계정 사용자들의 메일은 /var/spool/mail 에 저장됩니다.
/var/tmp /tmp에 저장된 임시 파일들중에 오래 보관되어야 할 임시 파일들이 저장되는 디렉토리
/var/log/netconf.log netconf 명령어 수행에 대한 로그 파일

/tmp

임시 파일을 위한 디렉토리입니다.

/root

시스템 관리자의 홈 디렉토리입니다.

펌이고, 전자 계산기 부터 적어야 할 것 같긴 하나....

일단 좋은 자료는 다 수집하고, 순서는 나중에 신경 쓸 생각이다.

 

밑은 참고 사이트

https://the-dev.tistory.com/40?category=1061297

 

[리눅스마스터] 리눅스 실무의 이해 - 리눅스의 개요

안녕하세요. 개발개입니다. 2002회 리눅스마스터(1급) 시험을 준비하게 되어 시험정보와 학습내용을 정리하고 공유하고자 합니다. <목차> 시험 정보 리눅스 실무의 이해 리눅스의 개요 [현재글]

the-dev.tistory.com

 

01 운영체제의 개요

 

운영체제의 목적
  • 처리능력 향상
    • Throughput : 일정 시간 동안 처리하는 일의 양
  • 응답시간 최소화
    • Turnaround : 시스템에 작업 요청 후 결과가 얻어질 때까지 걸리는 시간
  • 신뢰도 향상
    • Reliability : 주어진 문제를 정확히 처리하는 정도
  • 사용가능도 향상
    • Availability : 이용할 수 있는 시스템 자원의 정도

 

운영체제의 운용 기법
운용 기법의 발전
  • 일괄 처리 시스템 (Batch Processing System) - 1세대
    • 하나의 CPU로 여러 작업을 한 번에 처리함
    • 작업 처리 중에 시스템을 이용할 수 없음 (유휴 상태)
    • 자원 활용 효율이 낮음
  • 다중 프로그래밍 시스템 (Multi-Programming System) - 2세대
    • 작업이 입출력 중일 때 다른 작업을 CPU에 할당함
    • 하나의 CPU로 동시에 여러 작업을 처리하는 것처럼 보임
    • CPU 활용률과 처리량이 높음
  • 다중 처리 시스템 (Multi-Processing System; 병렬 처리 시스템) - 2세대
    • 여러 CPU로 동시에 여러 작업을 처리함
  • 시분할 시스템 (Time Saring System) - 3세대
    • 하나의 CPU로 일정 시간동안만 작업을 처리함
    • 일정 시간이 지나면 다음 작업을 시작함
    • CPU 활용률과 처리량이 보다 높음
  • 다중 모드 시스템 (Multi-Mode System) - 4세대
    • 일괄 처리/다중 프로그래밍/다중 처리/시분할/실시간 처리 시스템을 혼용하여 사용할 수 있는 시스템
  • 분산 처리 시스템 (Distribute Processing Systme) - 5세대
    • 시스템들 간의 네트워크 통신을 이용하여 작업을 분산하여 처리함
    • 물리적으로 분리된 시스템으로 시작하여 가상화 시스템 간 분산 처리도 가능해짐
    • 처리량과 가용량이 높고, 응답시간이 낮음

 


 

02 리눅스의 기초

 

리눅스의 정의
  • 리누스 토발즈에 의해 개발된 커널을 이용한 운영체제
  • 유닉스(Unix)에서 아이디어를 착안하였으나 유닉스의 소스코드를 일절 사용하지 않음
  • 리처드 스톨만이 세운 비영리 조직 자유 소프트웨어 재단(FSF; Free Software Foundation)을 통해 배포판 제공

 

리눅스의 특징
  • 자유 소프트웨어 (Free software)
    • 역사상 가장 많은 개발자들의 기여(contribution)로 이루어 짐
    • 대부분 GPL 등의 오픈소스 라이선스를 따름
  • 멀티 유저 & 멀티 프로그래밍 (Multi-user & Multi-programming)
    • 여러 사용자가 동시에 여러 작업을 실행할 수 있음
  • 이식성 (Portability)
    • 플랫폼 종속 부분만 어셈블리어이며, 대부분 C언어로 만들어짐
  • 다양한 파일시스템 지원
    • 리눅스 자체 파일시스템(ex2, ex3, ex4) 제공
    • 윈도우용 파일시스템(FAT32, NTFS) 지원
    • 네트워크 파일시스템(SMB, CIFS) 지원
    • 저널링 파일시스템(journaling file system; 시스템 충돌 및 전원 문제 복구 가능) 지원
  • 가상메모리
    • 물리 메모리의 한계를 극복하기 위한 기술
    • 디멘드 페이징(Demand Paging) : 실제 사용 중인 프로세스만 메모리에 로드, 사용 빈도가 낮은 메모리는 디스크에 저장
  • 스와핑 (Swaping)
    • 물리 메모리가 풀(full)일 때, 사용 빈도가 낮은 데이터/작업을 디스크로 옮겨 물리 메모리를 확보하는 기술
  • 파이프 & 리다이렉션 (Pipe & Redirection)
    • 프로세스의 표준 입출력을 컨트롤 함
    • 파이프 : |
    • 리다이렉션 : > 또는 <
  • 보안 (Security)
    • 임의접근제어(Discretionary Access Control) : 주체마다 객체에 대한 접근 정책을 다르게 설정하여 통제
    • 강제접근제어(Mandatory Access Control) : 주체와 객체에 각각 부여된 보안 등급을 비교하여 통제
  • 계층 구조 (Hierachical structure)
    • 리눅스 파일시스템은 모든 디렉터리가 루트 디렉토리(/)를 기준으로 그 이하에 계층적으로 구성됨
리눅스 파일시스템 구조 예시

 

오픈소스 라이선스
라이선스 필수사항 허가사항 금지사항
GPL
  • 수정/활용한 소스코드 모두 GPL로 공개
  • 라이선스 및 저작권 명시
  • 변경사항 고지
  • 상업적이용
  • 배포
  • 수정
  • 특허신청
  • 사적이용
  • 보증책임X
  • 2차 라이선스
LGPL
  • 수정한 소스코드 LGPL로 공개
  • 상업적이용
  • 배포
  • 수정
  • 특허신청
  • 사적이용
  • 2차라이선스
  • 보증책임X
BSD
  • 라이선스 및 저작권 명시
  • 상업적이용
  • 배포
  • 수정
  • 사적이용
  • 2차라이선스
  • 보증책임X
Apache
  • 라이선스 및 저작권 명시
  • 변경사항 고지
  • 상업적이용
  • 배포
  • 수정
  • 특허신청
  • 사적이용
  • 2차라이선스
  • 보증책임X
  • 상표권 침해금지
MPL
  • 수정한 소스코드 MPL로 공개
  • 라이선스 및 저작권 명시
  • 특허기술인 경우 별도 기록 배포
  • 상업적이용
  • 배포
  • 수정
  • 특허신청
  • 사적이용
  • 2차라이선스
  • 보증책임X
  • 상표권 침해금지
MIT
  • 라이선스 및 저작권 명시
  • 상업적이용
  • 배포
  • 수정
  • 사적이용
  • 2차라이선스
  • 보증책임X

 

리눅스 배포판 종류
레드헷 계열
RHEL
(RedHat Enterprise Linux)
Fedora CentOS Oracle Linux Scientific Linux
데비안 계열
Ubuntu Raspbian Chrome/Chromium OS
슬랙웨어 계열
Slackware openSUSE Vector Linux
안드로이드 계열
Android AOSP
(Android Open Source Project)
국내 리눅스 배포판
하모니카 넘버원 리눅스 구름OS

 

 

01 리눅스와 하드웨어

하드웨어의 이해
컴퓨터 구성요소와 신호 흐름

 

RAID의 종류
  • RAID-0
  • 스트라이핑 기술(데이터를 여러 디스크에 걸쳐 저장)을 이용하여 분산 저장
  • 여러 디스크에 동시에 쓰므로 처리속도가 빠름

 

  • RAID-1
  • 미러링 기술을 이용하여 두 개의 디스크에 동시 기록
  • 디스크를 동시에 읽으므로 읽기 속도가 향상
  • 디스크 효율이 낮음 (데이터 중복)

 

  • RAID-2
  • 비트(bit)레벨의 스트라이핑 기술을 이용하여 최소 3개의 디스크에 데이터 분산 저장
  • 오류 정정 부호(ECC)를 기록하는 전용 디스크 있음 (복구 시 추가 연산으로 입출력 속도가 떨어짐)

 

  • RAID-3
  • 바이트(byte)레벨의 스트라이핑 기술을 이용하여 분산 저장
  • 순차적 쓰기 및 읽기 성능이 우수함
  • 패리티(패리티 비트를 추가해 데이터 유실/손상 여부 확인) 기술을 사용하므로 오류 체크 및 복구 가능

 

  • RAID-4
  • 블록(block)레벨의 스트라이핑 기술을 이용하여 분산 저장
  • 패리티 기술을 사용하여 에러 체크 및 정정 가능
  • 데이터 쓸 때마다 패리티 디스크도 접근하므로 쓰기 성능이 좋지 않음

 

  • RAID-5
  • 블록(block)레벨의 스트라이핑 기술을 이용하여 분산 저장
  • 모든 디스크에 패리티 나누어 저장
  • 성능은 RAID-0보다 부족하지만 성능/안정성/용량를 고려해 가장 보편적으로 쓰임

 

  • RAID-6
  • RAID-5와 유사하나 2차 패리티가 포함됨 (2개의 디스크 오류에 대처 가능)

 

 

  • RAID 0+1
  • 디스크 2개를 스트라이핑 기술을 사용하는 RAID-0으로 구성하고,
    RAID-0 세트를 미러링 기술을 사용하는 RAID-1로 구성

 

  • RAID 1+0
  • 디스크 2개를 미러링 기술을 사용하는 RAID-1로 구성하고,
    RAID-1 세트를 스트라이핑 기술을 사용하는 RAID-0으로 구성
  • RAID-1보다 성능이 높고 가격이 비쌈

 

  • RAID 5+3
  • RAID-3 방식에 스트라이프 배열을 구성하는 방식
  • RAID-3보다 성능이 높고 가격이 비쌈

 

 

LVM(Logical Volume Manager)
  • LVM 구성도

 

 

 

02 리눅스의 구조

부트매니저(=부트로더)
  • 운영체제(OS)를 주기억장치로 로드하는 보조기억장치의 프로그램
  • LILO(Linux Loader), GRUB(Grand Unified BootLoader)

 

주요 디렉터리
디렉터리 설명
/ 최상위 디렉터리
/bin/ 모든 사용자가 사용할 수 있는 주요 명령어 위치 (ls, mv, cp, mkdir, cat, ...)
/boot/ 부팅이 필요한 파일 위치 (커널파일, initrd, grub관련 파일, ...)
/dev/ 디파이스 파일 위치
/etc/ 시스템 환경 설정 파일, 시스템 초기화 시 수행되는 스크립트 파일
/home/ 로그인한 사용자 전용 홈 디렉터리
/lib/ 라이브러리 위치
/media/ 이동식 디스크 등 마운트 시 위치
/mnt/ 디바이스 마운트 시 임시 디렉터리
/opt/ 추가 어플리케이션 소프트웨어 패키지
/proc/ 메모리에 존재하는 모든 프로세스들이 파일 형태로 위치
/root/ 루트 사용자의 홈 디렉터리
/sbin/ root가 사용하는 시스템 관리 명령어 위치 (system binary)
/tmp/ 공용 디렉터리 (임시 파일 생성 등)
/usr/ 사용자가 설치한 주요 명령어 위치
/usr/bin/ 대부분의 사용자 명령어 포함
/usr/include/ 헤더 파일 위치
/usr/lib/ /usr/bin/과 /usr/sbin/의 바이너리에 링크하기 위한 라이브러리 위치
/usr/sbin/ 시스템 관리자가 사용하는 명령어, 상ㄷ적으로 중요하지 않은 명령어
/usr/src/ 바이너리의 소스코드 위치 (리눅스 커널 소스코드 등)
/usr/X11R6 X윈도우 관련 파일 위치
/var/ 임시 생성/삭제 되는 데이터 위치 (로그, 스풀 파일 등)

 

부팅절차
1 시스템 시작 및 하드웨어 초기화 BIOS 및 시스템 시작
2 부트 로더 1단계 MBR의 ILP 시작
3 부트 로더 2단계 ILP가 GRUB 부트 로더 시작
4 커널 Linux OS
5 init 프로세스 실행 레벨
6 사용자 프롬프트 명령어 입력 대기 상태

 

실행레벨
레벨 설명
0 시스템 종료
1 단일 사용자 모드 (시스템 복원 모드) - root 권한 셸을 얻을 수 있음
2 다중 사용자 모드 (네트워크 기능 X, 텍스트 기반)
3 다중 사용자 모드 (네트워크 기능 O, 텍스트 기반)
5 다중 사용자 모드 (X윈도우)
6 재부팅
  • /etc/inittab에 부팅과 관련된 실행 레벨 정의
  • /etc/rc.d/rc.local에 서버부팅 시마다 자동 실행 명령어 기록되며 부팅 시 가장 나중에 실행

 

파일시스템
  • ext
    • minix 개선 파일시스템
    • 타임스탬프 기능 없음, 아이노드 수정 기능 없음, 조각화(쓸수록 느려짐) 이슈
  • ext2
    • ext 개선 파일시스템
    • 타임스탬프 기능 생김, 아이노드 수정 기능 생김, 조각화 이슈 해결
    • block mapping
    • 데이터를 쓰는 동안 전원이 끊어지면 제대로 저장되지 않음
  • ex3
    • 저널링(로그를 통해 파일시스템 복구) 기술 도입 - 쓰는 동안 전원이 끊어져도 데이터 복구 가능
    • block mapping
  • ex4
    • ex2와 ex3 호환 및 확장
    • extends - 큰 파일 처리 개선 및 단편화 현상 줄임 (다중블록할당(malloc)으로 오버헤드 회피)
    • 온라인 조각모음 기능

 

  • 슈퍼 블록(super block)
    • 파일시스템의 전체 내용을 담고 있는 블록
    • 1KB만 사용
  • 아이노드(i-node)
    • 실제 파일과 디렉터리의 데이터 위치를 알고 있는 자료구조

 

 

 

03 X윈도우

  • X윈도우
    • X프로토콜을 사용하여 GUI 환경 구현
    • startx 명령어로 시작
  • X서버
    • 디스플레이 제어 및 X클라이언트와 통신, 관리
  • X클라이언트
    • Xlib을 사용하여 만들어진 응용 프로그램
    • X서버에 디스플레이 관련 서비스를 요청하거나 응답받아 처리함
    • 관련 명령어/환경변수 : xhost, xauth, DISPLAY 환경변수
  • X프로토콜
    • X서버와 X클라이언트가 정보를 주고 받기 위한 형식
  • Xlib/XCB
    • Xlib : X윈도우 시스템 프로토콜 클라이언트 라이브러리
    • XCB : Xlib 대체품
  • X세션
    • X서버에 X클라이언트가 연결되었을 때 생성되는 세션
  • 윈도우 매니저
    • X윈도우의 위치/이동/크기변경 등을 관리하는 프로그램
  • 디스플레이 매니저
    • 그래픽으로 구성된 로그인 유저 인터페이스를 사용자에게 제공
  • xhost 명령어
    • X서버에 접근할 수 있는 클라이언트 지정/해제하는 명령어

 

 

 

04 셸(Shell)

셸 종류
구분 특징
Bourne Shell  sh (bourne shell) 톰프슨 셸(유닉스 최초의 셸)을 대체하고 오랜기간 유닉스의 기본 셸이었음
ksh (korn shell) 본셸과 호환. history/alias/작업제어 기능 추가
bash (bourne again shell) 리눅스에서 가장 많이 사용하는 셸 (GPLv3 라이선스)
C Shell csh (C shell) C언어 기반
tcsh (TC shell) 명령줄 완성/편집 기능

 

로그인셸 비로그인셸
  • 로그인 셸 (Login Shell)
    • 사용자가 ID와 PW를 입력하여 셸에 진입하는 방식
    • 터미널에서 원격 ssh로 접속하는 등
  • 비로그인 셸 (Non-Login Shell)
    • 로그인 없이 셸을 실행하는 방식
    • 이미 로그인한 셸에서 bash 명령어를 사용하여 셸을 다시 실행하거나 X윈도우에서 터미널을 실행시키는 등

 

셸의 설정 파일
구분 설정 파일 특징
시스템
설정 파일
/etc/profile 시스템 전역 설정 파일
/etc/profile.d/* 로그인 시 해당 디렉터리 안 모든 셸 스크립트 실행
/etc/bashrc 비로그인 셸을 실행할 때마다 실행
사용자
설정 파일
~/.bash_profile
~/.bash_login
로그인할 때마다 실행. 개별 사용자 설정 파일
~/.profile 로그인할 때마다 실행. bash와 직접 관련 없는 설정 파일
~/.bashrc 비로그인 셸 실행할 때 실행. alias 등
~/.bash_logout 로그인한 셸을 로그아웃할 때마다 실행
  • 로그인 셸인 경우,
    • /etc/prifile과 /etc/prifile.d/* (시스템 전역 설정 파일) 실행
    • ~/.bash_prifile이나 ~/.bash_login과 ~/.profile (각 사용자별 실행 파일) 실행
  • 비로그인 셸인 경우,
    • 인터랙티브 셸 유무 확인 후
    • 인터랙티브 셸인 경우 /etc/bashrc 실행
    • ~/.bashrc실행
  • 모든 셸에 접근 가능한 변수를 선언하고자 할 때,
    • 사용자 변수인 경우 .bashrc에 선언
    • 시스템 변수인 경우 /etc/bash.bashrc에 선언

 

명령어 치환 기능
  • 명령어 실행 결과를 명령어 인자로 넘기는 기능
    • $(command)
    • `command`

 

표준입출력
구분 약어 파일 디스크립터
표준 입력 stdin 0
표준 출력 stdout 1
표준 에러 stderr 2

 

리다이렉션
> 프로그램 출력을 표준 출력에서 지정한 출력으로 변경
>> 프로그램 출력을 표준 출력에서 지정한 출력으로 변경하고 추가
< 프로그램 입력을 표준 입력에서 지정한 입력으로 변경
<< 프로그램 입력을 표준 입력에서 지정한 입력으로 변경하고 추가
  • e.g.
    • ./run-batch.sh >> batch.log : run-batch 쉘 프로그램의 출력을 batch.log 파일로 지정하고 출력 내용을 추가

 

파이프
  • 프로그램의 출력 결과를 다른 프로그램의 입력으로 전달
  • e.g.
    • ls -l | grep tomcat : 현재 디렉터리의 파일 목록 중 tomcat이라는 글자를 포함한 파일만 출력

 

참고사항
  • chsh 명령어
    • chsh -l : 시스템이 지원하는 셸 목록 조회
    • chsh -s : 사용하는 셸 변경
  • alias
    • 입력하기 복잡하거나 자주 사용하는 명령어의 별칭을 생성
  • /dev/null
    • 실제 존재하지 않는 논리적 장치(null)
    • 출력을 /dev/null로 지정하는 경우 출력하지 않는 것을 의미
  • 스크립트 실행 방법
    • #sh script.sh
    • #. script.sh
    • #source script.sh
    • #./script.sh (실행권한이 있는 경우)

 

셸스크립트
  • 조건문
if [ 표현식 ]
then
    명령문
elif [ 표현식 ]
then
    명령문
else
    명령문
fi
case $변수명 in
    패턴1)
        명령문
    패턴2)
        명령문
    *)
        명령문
esac
  • 반복문
for $변수명 in 값1, 값2
    do
        명령문
    done
while 표현식
do
    명령문
done
until 표현식
do
    명령문
done
select $변수명 in 메뉴1 메뉴2 메뉴3 ...
do
    명령어
done
  • 함수
function 함수이름
{
    명령문
}

 

 

 

05 프로세스 (PCB를 지닌 프로그램)

PCB (Process Control Block)
  • 프로세스 상태가 변경될 때마다 커널이 정보를 저장하는 자료구조
Pointer
Process State
Process Number
Program Counter
Registers
Memory Limits
Open File Lists
Misc. Accounting and Status Data

 

init 프로세스
  • 모든 프로세스의 부모 프로세스
  • 부트 로더에 의해 가장 먼저 실행하는 프로세스
  • PID(프로세스ID)는 항상 1

 

부모/자식 프로세스
  • 부모 프로세스
    • 프로세스 A가 프로세스 B를 실행/생성했을 때, 프로세스 A
  • 자식 프로세스
    • 프로세스 A가 프로세스 B를 실행/생성했을 때, 프로세스 B

 

고아/좀비 프로세스
  • 고아 프로세스
    • 부모 프로세스가 강제종료 등으로 유실된 경우의 자식 프로세스
  • 좀비 프로세스
    • 자식 프로세스의 종료 코드를 회수하지 못한 경우

 

백그라운드/포어그라운드 프로세스
  • 백그라운드 프로세스
    • 명령어의 수행이 다소 시간이 걸리는 등의 연유로 백그라운드에서 실행되는 프로세스
    • 명령어 뒤에 &을 붙이면 백그라운드로 실행됨
  • 포어그라운드 프로세스
    • 사용자의 입력을 받거나 실행 결과를 출력할 수 있는 상태의 프로세스
  • 백그라운드와 포어그라운드 간의 전환
    • 포어그라운드 → 백그라운드 : Ctrl + z (suspend) 후 bg 명령어 입력
    • 백그라운드 → 포어그라운드 : jobs 명령어를 통해 job id 확인 후 fg 명령어에 %job id를 매개변수로 전달

 

시그널
시그널 번호 시그널 이름 설명
1 SIGHUP 터미널의 접속 연결이 끊어질 때
2 SIGINT 인터럽트(Ctrl + c) 발생 시
3 SIGQUIT Ctrl + \ 입력 시
9 SIGKILL 프로세스 강제 종료
15 SIGTERM 프로세스 정상 종료
18 SIGCONT 정지된 프로세스를 다시 재개할 때
19 SIGSTOP 프로세스 중지할 때
20 SIGTSTP 프로세스 대기(Ctrl + z) 입력 시
프로세스 상태

 

참고 사항
  • sevice
    • 리눅스 서비스의 시작, 정지, 재시작 등을 제어하는 명령어
    • e.g. service httpd start
  • 현재 터미널에서 데몬을 실행하는 방법
    • /etc/rc.d/init.d/[데몬] start
    • service [데몬] start
    • /etc/init.d/[데몬] start
  • 터미널에서 부팅 시 실행할 데몬 설정 유틸리티
    • ntsysv [데몬] on

01 네트워크의 기초

OSI 7계층
  • 이기종 시스템 간 상호 통신을 위하여 국제표준화기구(ISO)에서 개발
계층 계층명 전송단위 프로토콜 관련 네트워크 장비
1계층 물리 계층 비트 IEEE802.15.4, 10BASE-T, Bluetooth 허브, 리피터
2계층 데이터 링크 계층 프레임 Ethernet, Token Ring, ATM 브리지, 스위치
3계층 네트워크 계층 패킷 IP, ICMP,ARP, RARP, RIP 라우터
4계층 전송 계층 세그먼트 TCP, UDP -
5계층 세션 계층 메시지 SSL, TLS -
6계층 프레젠테이션 계층 SMB, AFP -
7계층 어플리케이션 계층 HTTP, SMTP, POP3, DNS, FTP, SSH -

 

네트워크 장비
  • 허브
    • 1계층 장비
    • 플러딩(한 장비에서 전송한 데이터 프래임을 연결된 모든 장비에 전송)
    • 신호 증폭 (리피터와 유사)
    • 모든 포트로 브로드캐스팅 하므로 데이터 충돌 가능성이 있음
  • 리피터
    • 1계층 장비
    • 신호 증폭
  • 브리지
    • 2계층 장비
    • MAC주소를 통해 데이터를 포워딩
  • 라우터
    • 3계층 장비
    • 독립된 네트워크 연결
    • 목적지까지의 가장 효과적인 경로를 찾아 데이터 포워딩
  • 게이트웨이
    • 서로 다른 통신망을 연결
    • 이종 프로토콜의 변환 기능

 

네트워크 토폴로지
종류 형태 특징
성(star)형  
  • point-to-point
  • 사용자의 노드가 결함이 발생하더라도 다른 노드에 영향을 주지 않음
  • 노드 수가 증가할 수록 패킷 충돌 가능성이 높아짐
  • 중앙 노드가 고장나면 네트워크 전체가 중단됨
버스(bus)형  
  • 단일 회선에 사용자 노드를 T자형으로 추가하고 종단기(Terminator)를 설치하여 신호의 반사를 방지
  • 노드 추가 및 제거가 용이
  • 사용자의 노드가 결함이더라도 다른 노드에 영향을 주지 않음
  • 노드 수가 증가하면 네트워크 성능이 저하됨
링(ring)형  
  • 노드가 원형으로 연결
  • 토큰 패싱을 통해 데이터 충돌 방지
  • 한 노드에 장애가 발생하면 전체 네트워크가 중단됨
망(mesh)형  
  • 모든 노드가 서로 개별적으로 그물처럼 연결
  • 라우터를 이용한 LAN간 연결, 백본망 구성 시 사용
  • 특정 사용자 노드에 장애가 발생해도 다른 경로로 데이터 전송이 가능
  • 고비용

 

네트워크 유형
유형 특징
LAN (Local Area Network) - 한정 지역 내 네트워크
- TCP/IP(유선), IEEE802.11(무선)
- 1계층(물리), 2계층(데이터 링크)에 해당
MAN (Metropolitan Area Network) - LAN과 WAN 사이 크기의 네트워크
- 더소 내 여러 LAN 사이를 이어주는 백본 네트워크
- 이중 버스 토폴로지 사용
WAN (Wide Area Network) - 광역 통신망
- 전용 회선 방식, 교환 회선 방식

 

TCP와 UDP
  • TCP
    • 연결형
    • 3-way handshake로 설정, 4-way hadshake로 해제
    • 패킷 전송 후 ACK 패킷 수신 여부를 확인하므로 UDP 보다 느림
  • UDP
    • 비연결형 (데이터그램 방식)
    • CheckSum 필드를 통해 최소한의 오류만 검출
    • 데이터 전달 확인 절차가 없어 신뢰성이 낮고 TCP보다 빠름

 

포트번호
  • well-known port : 0 ~ 1023
  • /etc/services에서 주요 포트 확인 가능
포트번호 설명
20 FTP (데이터)
21 FTP (제어)
22 SSH
23 Telnet
53 DNS
80 HTTP
110 POP3
443 HTTPS

 

IP주소 체계
구분 Octet 시작 비트 시작 IP 대역 호스트 수 네트워크 수 블록
A클래스 0 1 16,777,216 128 /8
B클래스 10 128 (2^7) 65,536 16,384 /16
C클래스 110 192 (2^7+2^6) 256 2,097,152 /24
D클래스 1110 224 (2^7+2^6+2^5) N/A N/A
E클래스 1111 240 (2^7+2^6+2^5+2^4) N/A N/A

 

서브넷
  • 브로드캐스트의 크기를 작아지므로 주소 절약 및 라우팅 정보 크기 감소
  • 서브넷 마스크
    • IP주소와 AND연산하여 네트워크 주소 분리
  • 예시1)
  • 예시2)

 

 

02 네트워크의 설정

네트워크 설정 파일
설정 파일 특징
/etc/sysconfig/network-scripts/ifcfg-eth0 - 특정 네트워크 인터페이스의 환경설정 (이 경우 eth0의 환경설정)
- 디바이스명, 프로토콜, IP주소, 넷마스크, 게이트웨이, DNS주소, 부팅 시 활성화 여부 등
/etc/sysconfig/network - 시스템 전체에 적용할 환경설정
- 기본 게이트웨이 주소, 호스트명, 네트워크 연결 허용 여부, 게이트웨이 장치 파일 설정, NIS 도메인 이름
/etc/resolv.conf - 네임 서버 설정, 기본으로 사용할 도메인명 설정
/etc/hosts - IP주소와 도메인 이름 간의 매핑 테이블 설정

 

네트워크 설정 명령어
  • ifconifg
    • 네트워크 인터페이스 환경설정 명령어
  • route
    • 시스템에 설정된 라우팅 테이블 조회, 수정하는 명령어
  • arp
    • IP주소를 MAC주소로 변환하는 명령어

 

네트워크 진단 명령어
  • ethtool
    • 네트워크 인터페이스 카드 설정 명령어
    • 네트워크 속도, 포트 등 설정
  • ip
    • 네트워크 인터페이스에 주소를 할당하거나 파라미터 설정 명령어
    • ifconifg 대체 명령어
  • ping
    • 네트워크 상태 진단 명령어 (프로토콜 : ICMP)
  • netstat
    • 네트워크 연결, 라우팅 테이블, 인터페이스의 통계 정보 등 네트워크 정보 출력 명령어
  • traceroute
    • 패킷이 어느 경로로 전송되는지 추적하는 명령어
    • 네트워크 장애 분석에 이용

 

DNS 명령어 (nslookup, host)
  • nslookup
    • 네임서버 정보 또는 IP를 통한 도메인명 출력 명령어
  • host
    • 네임서버를 통한 호스트 정보 출력 명령어

 

네트워크 응용 프로그램
  • telnet
    • telnet 프로토콜을 이용한 텔넷 서버 접속 명령어
  • ftp
    • FTP 서버 접속 명령어
    • 파일 업로드/다운로드

 

01 사용자 관리

root 계정 관리
  • root 계정 = 슈퍼유저
  • /etc/passwd파일에서 특정 사용자의 UID를 0으로 설정하면 root권한을 가짐
  • root 전환 명령어
    • su : root로 로그인
    • su - : root로 로그인 + root 환경변수 로드

 

사용자 계정 관리
  • useradd
    • 사용자 계정 생성 명령어
    • /etc/skel : 계정 생성 시 홈디렉터리에 기본으로 생성되는 파일
# thedev 계정을 생성한다.
# 이 때, 이 계정은 dev 그룹에 속하며, 홈디렉터리는 /home/dev/thedev로 한다.
# 또 이 계정의 만료일은 2020-08-31로 한다.
useradd -g dev -d /home/dev/thedev -e 2020-08-31 thedev
  • usermod
    • 사용자 계정 정보(홈디렉터리, 그룹, UID, GID 등) 변경 명령어
# thedev 계정의 정보를 변경한다.
# 이 계정을 dev 그룹으로 변경하고, 홈디렉터리를 /home/dev/thedev로 변경한다.
usermod -g dev -d /home/dev/thedev thedev
  • userdel
    • 사용자 계정 삭제 명령어
# thedev를 삭제하며 홈디렉터리 등 관련 데이터도 함께 삭제한다.
# 이 때, 계정이 로그인되어 있더라도 강제로 삭제한다.
userdel -rf thedev
  • passwd
    • 패스워드 관리 명령어
# thedev 계정의 패스워드를 설정한다.
# 이 패스워드는 30일간 유효하고, 만료 후 10일간 유효하며, 만료 7일 전부터 변경을 노티한다.
sudo passwd -x 30 -i 10 -w 7 thedev

# thedev 계정의 패스워드를 만료시키며, 다음 로그인 시 무조건 변경하도록 한다.
sudo passwd -e thedev

 

그룹 계정 관리
  • groupadd
    • 새로운 그룹을 생성하는 명령어
# GID가 555인 dev 그룹을 생성한다.
sudo groupadd -g 555 dev
  • groupmod
    • 그룹 속성을 변경하는 명령어
    • 관련 파일 : /etc/group, /etc/gshadow, /etc/passwd
# dev 그룹의 GID를 777로 변경하고 그룹명을 developer로 변경한다.
sudo groupmod -g 777 -n developer dev
  • groupdel
    • 그룹을 삭제하는 명령어
    • 그룹에 포함된 사용자 계정을 삭제한 후 그룹 삭제가 가능
# developer 그룹을 삭제한다.
groupdel developer
  • gpasswd
    • 그룹의 패스워드를 변경하는 명령어
    • 관련 파일 : /etc/group, /etc/gshadow
# dev 그룹에 thedev 계정을 추가하고, nodev 계정을 삭제하며, 패스워드를 제거한다.
gpasswd -a thedev -d nodev -r dev

 

사용자 환경설정 파일
  • /etc/passwd
    • 사용자의 계정정보 파일
    • pwconv명령어 : /etc/passwd 정책에서 /etc/shadow 정책으로 변경
    • pwunconv명령어 : /etc/shadkw 정책에서 /etc/passwd 정책으로 변경
  • /etc/shadow
    • 사용자의 패스워드를 해시 알고리즘으로 암호화한 값을 포함한 패스워드 정보 파일
  • /etc/login.defs
    • 로그인 수행 시 기본 설정 파일
    • 사용자 추가 시 할당되누 UID의 값을 지정할 수 있음
    • shadow password suite를 위한 읽기 전용 환경설정 파일

 

02 파일시스템 관리

권한
유형
- 일반 파일
d 디렉터리
l 심볼릭 링크
b 블록 디바이스
c 캐릭터 디바이스
p FIFO
s 소켓
허가권
r 읽기 권한(4). 파일 내용 확인, 복사. 디렉터리 조회.
w 쓰기 권한(2). 파일 내용 수정. 디렉터리 내 파일 생성/삭제.
x 실행 권한(1). 파일 실행. 디렉터리 내부로 접근.
  • chmod 명령어
    • 파일이나 디렉터리의 허가권한 변경 명령어
  • chown 명령어
    • 파일이나 디렉터리의 소유권 변경 명령어
  • umask 명령어
    • 파일이나 디렉터리의 기본 허가권 변경 명령어
    • 일반파일 퍼미션 : 666-umask
    • 디렉터리 퍼미션 : 777-umask
    • 일반파일 퍼미션이 644이고, 디렉터리 퍼미션이 755일 때 umask는 022

 

파일 링크
  • 하드링크
    • 대상 파일과 동일한 아이노드를 가짐
    • 대상 파일을 옮기거나 삭제하더라도 대상 파일 참조 가능
    • ln -lia [대상 파일]
  • 심볼릭링크
    • 대상 파일의 경로만 참조
    • 대상 파일이 다른 파일시스템에 있어도 생성 가능
    • ln -s [대상 파일]

 

파일 및 디렉터리 관리 명령어
  • pwd 명령어
    • 현재 디렉터리 출력
  • cd 명령어
    • 작업 디렉터리 변경
  • mkdir 명령어
    • 디렉터리 생성
  • rmdir 명령어
    • 디렉터리 삭제
  • ls 명령어
    • 현재 혹은 지정 디렉터리 내 파일 및 디렉터리 목록 출력
  • cp 명령어
    • 파일 혹은 디렉터리 복사
  • rm 명령어
    • 파일 삭제
  • mv 명령어
    • 파일 혹은 디렉터리를 이동하거나 이름 변경
  • touch 명령어
    • 파일이 없는 경우, 빈 파일 생성
    • 파일이 있는 경우, 타임 스탬프 정보 수정
  • find 명령어
    • 조건에 부합하는 파일 혹은 디렉터리 탐색

 

파일시스템 생성
  1. fdisk -l
    • 하드디스크가 인식되었는지 확인
  2. fdisk
    • 파티션 생성
  3. mkfs
    • 원하는 파일시스템으로 포맷
  4. mount
    • 마운트
  5. /etc/fstab
    • 재부팅 후에도 마운트 유지되도록 등록

 

파일시스템 점검
  • fsck 명령어
    • 파일시스템을 점검하고 손상된 영역 복구
    • 단일 사용자 모드(lv.1)로 변경 및 언마운트한 상태에서 수행
sudo init 1
unmount /dev/sda1
sudo fsck /dev/sda1
  • df 명령어
    • 파일시스템 총 용량, 남은 용량 등의 정보 출력
# 파일 시스템 정보를 보기 편한 용량 표시로 출력한다.
df -h
  • du
    • 파일 또는 디렉터리의 용량 출력

 

스왑(swap)
  • 비활성화된 메모리를 스왑 공간으로 이동하여 메모리 공간을 확보
  • 액세스 속도는 느리지만 가격이 저렴

 

디스크 쿼터(Disk Quota)
  • 사용자별 디스크 사용량 할당
  • quota : 쿼터 출력
  • edquota : 쿼터 생성/편집
  • repquota : 쿼터 리포트 출력
  • quotacheck : 쿼터 설정 갱신

 

 

03 프로세스 관리

프로세스 관련 명령어
  • ps 명령어
    • 실행 중인 프로세스 정보 출력
  • top 명령어
    • 현재 실행 중인 프로세스 정보를 실시간 출력
  • kill 명령어
    • 지정한 PID에 해당하는 프로세스에 종료 시그널 혹은 지정 시그널을 보냄
  • jobs 명령어
    • 현재 실행 중인 모든 jobs 목록 출력
  • nice 명령어
    • 새로 실행하는 프로세스의 우선순위(nice) 값 설정
  • renice 명령어
    • 실행 중인 프로세스의 우선순위(nice) 값 변경
  • nohup 명령어
    • 로그아웃 시 hup 시그널을 보내지 않아 프로세스가 계속 실행되도록 함

 

크론(cron)
  • 명령어, 프로그램 등을 반복 예약 실행하는 서비스
  • crontab 명령어
    • crontab -l : 크론탭에 설정된 목록 출력
    • crontab -e : 크론탭 설정 수정
    • crontab -r : 크론탭 설정 삭제

 

 

04 설치 및 관

패키지 설치
배포판 저수준 패키지 도구 고수준 패키지 도구
RedHat/CentOS 계열 rpm yum
Debian 계열 dpkg apt-get, apt, aptitude
  • rpm -e httpd --nodeps : rpm명령어를 이용하여 의존성을 무시하고 httpd 패키지 제거

 

컴파일러
  • gcc 명령어
# batch.c를 컴파일하여 목적 파일(batch.o)만 생성
gcc -c batch.c

# batch1.c와 batch2.c를 컴파일하여 batch 실행 파일 생성
gcc batch1.c batch2.c -o batch

 

아카이브
  • tar 명령어
옵션 설명
-c, --create 새로운 tar 파일 생성
-x, --extract 묶인 tar 파일을 여러 파일로 다시 분리
-v, --verbose 자세한 과정 출력
-f, --file 생성되는 tar 파일 이름 지정
-r, --append 이미 생성된 tar파일에 추가
-t, --list tar 파일 안에 묶인 파일 목록 출력
-C, --directory 명령을 수행할 디렉터리 지정
-z, --gzip, --gunzip gzip을 사용하여 tar.gz 형식으로 생성
-j, --bzip2 bzip2를 사용하여 tar.bz2형식으로 생성
-J, --xz xz를 사용하여 tar.xz형식으로 생성
# logs 디렉터리 내 모든 파일 및 디렉터리를 gzip으로 압축하고 sys-logs.tar.gz를 생성한다.
tar -czf sys-logs.tar.gz logs/

# sys-logs.tar.gz의 모든 파일을 추출한다.
# 이 때, gzip을 사용하여 압축을 해제하고, 자세한 정보를 출력한다.
tar -xzvf sys-logs.tar.gz

 

압축
  • gzip명령어
옵션 설명
-d, --decompress 압축 해제 (gunzip 명령어와 동일)
-l, --list 압축 파일 정보 출력
# sys-logs.tar.gz 압축 해제
gzip -d sys-logs.tar.gz

 

01 장치의 설치 및 관리

리눅스 커널
  • 시스템 자원의 소유 및 관리 역할 수행
  • HAL(Hadware Abstract Layer)를 이용하여 하드웨어 자원 간접적으로 접근
  • 리눅스 커널 버전 확인 명령어
uname -r
  • 커널 컴파일
    • 커널 소스를 이용하여 시스템에 최적화된 커널을 만드는 과정
  • 커널 컴파일 명령어
# 메뉴 방식으로 커널의 기능 활성화/비활성화
make menuconfig
# 1MB 이상의 커널을 컴파일 (미만은 zImage)
make bzImage
# 커널에서 사용할 모듈 컴파일
make modules
# 커널 환경설정 외 모두 제거
make clean

# 모두 제거
make mrproper

# mrproper + 백업 및 패치 파일 제거
make distclean

 

모듈(Module)
  • LKM(Loadable Kernel Module)
    • 시스템 재시작 없이 메모리에 동적 로드/언로드
  • 모듈 의존성 정보 파일
    • /lib/modules/[linux version]/modules.dep
  • 모듈 명령어
모듈 리스트 출력 lsmod lsmod
커널에 모듈 로드 insmod [filename] sudo insmod module1
커널에서 모듈 언로드 rmmode [filename] sudo rmmod module1
의존성을 고려해 로드/언로드 modprobe [optiion] filename sudo modprobe -r module1
(-r : 미사용 의존성 함께 삭제)
모듈 정보 출력 modeinfo [option] filename modinfo module1
  • 모듈 설정 파일
/etc/modeprobe.d modprobe 명령 환경설정
modules.dep depmod 명령을 사용해 생성한 모듈 의존성 파일

 

 

02 주변장치 관리

디스크 확장
  1. 하드디스크 시스템에 부착
    • sudo fdisk -l (장착 확인)
  2. 확장 파티션 생성
    • sudo fdisk /dev/sdb
  3. 논리 파티션 생성
    • sudo fdisk /dev/sdb
  4. 파티션 포맷
    • 생성한 논리 파티션 sdb3을 ext3 파일시스템으로 포맷
    • sudo mkfs.ext3 /dev/sdb3
  5. 마운트
    • t옵션으로 마운트 대상 파일시스템 지정
    • sudo mount -t ext3 /dev/sdb3 /home/thedev/newdisk
  6. 확인
    • df -h
  7. /etc/fstab 등록
    • sudo vi /etc/fstab

 

프린터
  • 리눅스 프린팅 시스템
    • 라인 프린터
    • 스풀링 방식(spooling; CPU의 큐에 작업을 등록하여 우선순위에 따라 프린터에게 출력 요청)
    • USB 연결 시, /dev/usb/lp0
    • 대부분 BSD, System V 계열 명령어 모두 지원
    • BSD 계열 명령어
      • lpr : 출력 (-#인쇄매수 -m이메일알람 -P프린터지정 -r프린트후파일삭제)
      • lprm : 출력 취소 (-모두취소 -U특정사용자취소 -P특정프린터취소 -h취소프린터서버지정)
      • lpc : 프린터 클래스 대기열 관리 (status상태출력 help도움말출력 quit/exit빠져나오기)
      • lpq : 프린터 대기열 정보 (-a모든정보출력 -l대기리스트정보출력 -P특정프린터상태출력)
    • System V 계열 명령어
      • lp : 출력 (-n인쇄매수 -d출력프린터지정)
      • cancel : 출력 취소 (-a 모두취소 -u특정사용자취소 -U서버연결사용자지정 -h취소프린터서버지정)
      • lpstat : 프린터 클래스, 작업 정보 (-d기본프린터출력 -p모든프린터출력 -a요청가능여부출력 -c클래서정보출력 -s요약정보출력)
  • CUPS (Common Unix Printing System)
    • 유닉스 호환 운영체제를 위한 모듈러 프린팅 시스템 (Modular Printing System)
    • 현재 리눅스의 기본 프린팅 시스템
    • HTTP기반 IPP 프로토콜, SMB 프로토콜
    • BSD, System V계열 명령어 모두 지원
  • 프린터 웹브라우저 접속 포트 : 631

 

 

 

사운드 카드
  • OSS (Open Sound System)
    • POSIX read, write, ioctl API 기반
    • 자유 소프트웨어였으나 소유권 변동으로 ALSA로 기본 변경
  • ALSA (Advanced Linux Sound Architecture)
    • 사운드카드 자동 구성
    • 다수의 사운드 장치 관리
    • GPL과 LGPL 라이선스 기반
  • 사운드 명령어
    • alsactl : ALSA 사운드 카드 초기화, 환경설정
    • alsamixer : 사운드 설정 변경, 볼륨 조절
    • cdparanoia : CD 정보, 파일 추출

 

스캐너
  • SANE(Scanner Access Now Easy)
    • 스캐너/카메라 표준화 액세스
    • 리눅스, 유닉스, 윈도우, 맥OS지원
    • 백엔드(장치 드라이버)와 프론트엔드(응용 프로그램)로 구성
    • GPL 라이선스
  • XSANE
    • SANE의 그래픽 기반 응용 프로그램
  • 스캐너 명령어
    • sane-find-scanner : SANE 백엔드 검색
    • scanimage : 이미지 스캔 제어
    • scanadf : 자동용지급지장치(ADF 기능이 잇는 스캐너에서 이미지 스캔

 

01 시스템 분석

시스템 로그
  • 시스템 로그 파일
로그파일 설명
/var/log/messages (레드햇) 전체 시스템 동작 정보, 이벤트 로그
/var/log/syslog (데비안)
/var/log/secure 시스템 로그 성공여부, 텍스트모드로 열람가능
  • 시스템 로그 파일 명령어
# /var/log/dmesg (커널 부트 메시지 로그)
# "커널 링 버퍼"의 alert와 crit 레벨의 메시지를 시간형식 맞추어 출력 후 지움
dmesg -l=alert,crit -T -c

# /var/log/lastlog
# thedev 사용자의 최근 3일간의 마지막 로그 정보 출력
lastlog -t 3 -u thedev

# /var/log/btmp
# last명령어와 유사

# /var/log/wtmp
# 모든 사용자의 로그인/아웃 기록 출력
last
# 최근 재부팅된 정보 2개 출력
last -2 reboot

 

시스템 로그 관리
  • syslog
    • 초기의 로그 수집 패키지
    • syslogd데몬
  • rsyslog
    • IP통신을 통한 로그 구현 (원격 로깅)
    • /sbin/rsyslogd 데몬
  • /etc/rsyslog.conf
# facility : 로그 메시지 발생 프로그램
# priority : 로그 메시지 수준
# action : 선택된 로그에 대한 액션 지정
[facility].[priority]	[action]

# cron을 제외한 모든 facilty의 info수준 이상의 메시지를 /var/log/messages에 기록
*.info;cron.none	/var/log/messages
# mail facility에서 info수준을 제외한 모든 메시지를 /var/log/maillog에 기록
mail.*;mail.!=info	/var/log/maillog
# kernel facility에서 err수준 이상의 메시지를 ihduser 사용자의 터미널로 전송
kern.err	ihduser

 

 

로그 용량 관리
  • logrotate 명령어
  • /etc/logrotate.conf 파일 : 전체 환경설정
  • /etc/logrotate.d 파일 : 개별 서비스 환경설정
  • /var/lib/logrotate.status : 로테이션 이력

 

 

02 시스템 보안 및 관리

시스템 보안 관리
  • 물리적 보안
    • CCTV, 동작감지, 열화상 보안 카메라
    • 경비시스템
    • 보안ID, 사용자 출입 보안 등
  • 시스템 보안
    • BIOS 보안
    • 패스워드 보안
      • /etc/password : 누구나 읽을 수 잇음
      • /etc/shadow : root사용자만 읽을 수 있음(SHA512)
      • PAM(Pluggable Authentication Modules) : 패스워드 강도 강제
    • root권한 보안
      • /sbin/nologin
      • /etc/ssh/sshd_config - PermitRootLogin no
  • 서비스 및 운영 보안
    • 부트로더 패스워드 설정 (grub-crypt)
      • password --encrypted : 생성된 해시값을 패스워드로 저장
  • 파일 시스템 보안
    • lsattr : 파일 속성 출력
    • chattr : 파일 속성 변경
    • getfacl : ACL(Access Control List) 정보 출력
    • setfacl : ACL 설정 (-m 추가/변경 -x 제거)
  • 네트워크 보안
    • sysctl : /proc/sys 디렉터리 하위 커널 매개변수 설정

 

SELinux (Security Enhanced Linux)
  • 리눅스 커널 보안 모듈
  • 강제 접근 제어 (MAC; Mandatory Access Control) 제공

 

시스템 보안 유틸리티
  • ssh (Secure Shell)
    • 기본 포트 : 22
    • openssh-clients 패키지 설치 시 사용 가능
    • 원격 복사(scp) 지원
    • 안전한 파일 전송(sftp) 지원
    • 원격 셸(rsh) 지원
# ssh 접속 포트가 22022인 202.131.30.11(네이버) 서버에 thedev 계정으로 접속
ssh -P 22022 thedev@202.131.30.11
  • PAM (Pluggable Authentication Module)
    • 동적 사용자 인증 라이브러리
    • control-flag
      • requisite : 해당 모듈 반드시 성공. 실패는 즉시 반환
      • required : 해당 모듈 반드시 성공. 모듈 체크 모두 수행 후 실패 반환
      • sufficient : 해당 모듈 성공한 경우, 다른 모듈 체크 하지 않음
      • optional : 모듈 체크 성공 여부 중요하지 않음
  • sudo
    • 임시 root권한으로 명령어 실행
    • visudo 명령어로 /etc/sudoers에 등록된 사용자만 sudo 명령어 사용 가능
    • 환경설정 파일 : /user/bin/sudo

 

주요 보안 도구
  • nmap (Network Mapper)
    • 네트워크 탐지/보안 도구
    • 113포트로 SYN 패킷을 전달하여 연결 요청
    • SYN/ACK 패킷으로 응답하면 포트 열림, RST 패킷으로 응답하면 포트 닫힘
  • tcpdump
    • 네트워크 인터페이스의 송수신 패킷을 캡쳐하여 트래픽 모니터링
  • tripwire
    • 호스트 기반의 침입 탐지 도구
  • Nessus
    • 취약점 스캐너
  • GnuPG (GNU Privacy Guard)
    • 공개키 기반 암호화
    • 디지털 서명
    • 평문 암호화(공개키) -> 전송 -> 암호문 복호화(개인키)
    • 키유출 발생X

 

 

03 시스템 백업

백업 종류
  • 전체 백업
  • 증분 백업
    • 전체 백업 후 변경된 데이터만 백업
    • 백업한 순서대로 복원
  • 차등 백업
    • 마지막 백업에 이번 변경분 데이터를 누적하여 백업

 

파일백업
  • tar 명령어
    • 여러 파일로 아카이브를 만듦
    • 아카이브로부터 원래 파일을 추출
# 아카이브를 생성하되, 파일명은 logs.tar로 하고, 접근권한을 유지하며, 작업과정을 자세히 출력
tar -cfpv logs.tar /home/thedev/logs

# -g 옵션으로 스냅샷 보관

 

  • cpio 명령어
    • 다른 디렉터리로 파일 복사
    • ls 명령어의 결과를 표준 입력으로 받을 백업파일 생성 가능
    • copy-out 모드 : 아카이브 생성 (-o)
    • copy-in 모드 : 아카이브로부터 파일 추출 (-i)
    • copy-pass 모드 : 지정 디렉터리로 복사 (-p)

 

파일시스템 및 디스크 백업
  • dump 명령어
    • 파티션 단위 백업
  • dd 명령어
    • 지정 장치를 지정 형식(블록 단위 등)으로 변환
    • 파티션/디스크 단위 백업
    • CD장치에서 ISO이미지 추출 등
  • restore 명령어
    • dump 명령어로 생성한 백업 파일 복원

 

네트워크 백업
  • rsync
    • 원격 장비의 파일들을 동기화 하는 유틸리티
    • 델타 전송 알고리즘을 이용해 속도가 빠름
    • 로컬 백업 시 별다른 서버 설정 없이 사용 가능
    • 백업, 미러링 등
    • root권한 불필요

 



출처: https://the-dev.tistory.com/40?category=1061297 [DevLogs]

 

좋은 정보를 발견해서 뒤늦게 추가;;

728x90