질문&답변
클라우드/리눅스에 관한 질문과 답변을 주고 받는 곳입니다.
리눅스 분류

LPIC 101 햄심 요약

작성자 정보

  • 올로이안 작성
  • 작성일

컨텐츠 정보

본문

LPIC 101 햄심 요약

 

1. 패키지 관리 도구

 


리눅스 배포판은 패키지 관리 도구를 사용하여 소프트웨어를 설치와 제거를한다. 소프트웨어는 "패키지" 형태로 배포되는데, 이에는 이진 데이터, 문서화, 그리고 다른 정보가 들어 있다. 이 관리 툴은 하나의 패키지가 다른 패키지에 의존하는 패키지 의존성도 처리한다. 그래서 동적으로 링크된 프로그램을 사용하려면 우선 필요한 라이브러리를 설치해야 한다. 리눅스 시스템에서 사용하는 두 가지 주요 패키지 관리 툴은 다음과 같다.

 

 

레드햇의 레드햇 패키지 매니저, rpm
데비안의 APT 수트, dpkg

 


2. 자신에게 맞는 커널과 모듈 구축

 

 


커널을 만들려면, 컴파일러, 어셈블러, 링커, 메이크, 커널 소스, 커널 헤더가 필요하다. 이는 /usr/src/linux에서 행해지는 전형적인 커널 컴파일 단계이다.

1.       make oldconfig(이미 셋업되어 있을 때), make config(기본적인 대화식 텍스트 프로그램), make menuconfig(대화식 텍스트 메뉴 프로그램),

          make xconfig(그래픽 프로그램)로 설정한다. 각각의 메소드는 커널 옵션이 포함된 .config 파일을 만든다.

2.       필요하면, makefile의 EXTRAVERSION을 수정한다.

3.       make dep으로 의존성(dependencies)을 생성한다.

4.       make clean으로 이전 결과를 지운다.

5.       make bzImage로 커널을 만든다.

6.       make modules로 모듈을 만든다.

7.       make modules_install로 모듈을 설치한다.

8.       /boot에 새로운 이미지를 복사한다.

9.       새로운 이미지를 위해 /etc/lilo.conf를 업데이트한다.

10.    lilo 명령어로 부트 로더를 업데이트한다.

 

 


3. 명령행(Command Line)

 


명령행으로 작업하는 데는 문제 없어야 한다. 명령 구조를 잘 이해하고 셸 세션이 작동하는 원리를 알아야 한다.

셸은 명령 프롬프트를 제공하고 명령을 해석(interpret)한다.
셸 변수는 셸 프로그램에 접근하는 값을 가진다.
PATH는 디렉토리 목록을 포함하는 셸 변수이며, 이 디렉토리에는 실행 가능한 프로그램이 있다.
명령은 배시가 내장되어야 하며, 흔히 PATH에서 발견할 수 있다. PATH에 없을 경우에는 명시적으로 지정해야 수행된다.
셸 변수가 익스포트(export)되면, 환경의 일부가 된다.
 

 

명령 입력
명령은 유효한 명령, 캐리지 리턴, 선택적인 옵션과 인자로 구성된다. 대화식 명령에는 셸 스크립트에서 더 자주 사용하는 루프 구조가 있다.
셸 세션은 대화식으로 볼 수 있다. 히스토리, 확장, 편집이 이러한 대화를 더욱 효과적으로 만들어 준다. 명령은 다시 입력할 수 있고, 수정, 편집될 수 있다. 명령 대체(Command substitution)로 명령이 셸 변수가 될 수 있다.
명령어는 디렉토리 계층을 통해 반복적으로 실행하기 위해 -r 이나 -R 옵션을 포함하는 경우가 많다. Find 명령어는 본질적으로 반복적이며, 특정 속성이나 실행 명령이 있는 파일을 검색하며 디렉토리를 따라 내려간다.
다음 프로그램을 위해서는 맨 페이지를 체크하자(이 프로그램은 파일과 표준 입력에서 텍스트를 수정하거나, 실행한다).

cut: 하나 이상의 파일에서 선택한 칼럼이나 필드를 없앤다
expand: 파일에서 탭을 스페이스로 바꾼다
fmt: 행을 채우거나, 뉴라인 문자를 없애서 파일 텍스트의 길이를 맞춘다
head: 파일의 처음 몇 줄을 인쇄한다
join: 같은 join 필드를 가진 file1과 file2에서 각각 하나씩 입력 라인의 각 쌍에 대한 라인을 보여 준다
nl: 출력에 연결된 파일의 라인 수
od: 8진, 16진, ASCII 등의 형식으로 된 덤프 파일
paste: 하나 이상의 라인을 해당하는 수직 칼럼에 붙임
pr: 텍스트 파일을 헤더와 페이지 추가하여, 페이지 수가 매겨진 컬럼 버전으로 바꿔 준다
split: infile을 지정된 라인 그룹 번호로 쪼갠다. 그러면 출력은 outfileaa, outfileab 등으로 이어진다
tac: 역라인 순으로 표준 출력에 대한 파일을 보여 준다
tail: 하나 이상의 파일에서 마지막 몇 문장을 보여 준다
tr: 문자열1에서 문자열2에 있는 해당 문자를 매핑함으로써 문자를 변경한다
wc: 파일의 문자, 단어, 라인의 수를 보여 준다
sed: 모든 유닉스 시스템에 있는 텍스트 필터링 프로그램

 

 

 

4. 파일시스템 관리

 

 


파일시스템 생성이란 디스크 파티션을 사용하기 위한 포맷을 의미한다. 리눅스는 대개 ext2 파일시스템을 사용한다.
리눅스 파일시스템은 계층적 구조로 구성되어 있고, 보통 루트 디렉토리, 즉 /로 시작한다. 루트 아래에 디렉토리와 파일이 트리구조를 이룬다.
파일시스템 개체의 정보 식별은 이의 inode에 저장되는데, inode에는 위치, 변경 사항, 보안 정보가 있다. 파일시스템은 정해진 수의 inode와 함께 생성된다.
파일 및 디렉토리 관리 명령
다음 명령은 파일 및 디렉토리 관리에 필수적이다. 맨 페이지를 확인하자.

cp: file1을 file2로 복사하거나, 파일을 디렉토리에 복사한다
mkdir: 하나 이상의 디렉토리를 생성한다
mv: 파일이나 디렉토리를 이동하거나, 이름을 변경한다
rm: 파일시스템에서 하나 이상의 파일을 지운다. -r 옵션으로 반복적으로 사용하면, rm 역시 디렉토리를 지울 수 있다
rmdir: 비어있는 디렉토리를 지운다
touch: 현재 시간을 디폴트로 정해, 접근이나 파일 수정 시간을 바꾼다
디스크 드라이브와 파티션
IDE 디스크는 /dev/hda, /dev/hdb, /dev/hdc, /dev/hdd로 알려져 있다. SCSI 디스크는/dev/sda, /dev/sdb, /dev/sdc 등으로 알려져 있다. 파티션에는 다음과 같은 세 가지 유형이 있다.

1.       주(Primary): 파일시스템 컨테이너. 하나의 디스크에 하나 이상, 4개까지 있을 수 있다. /dev/hda1, /dev/hda2와 같은 형식으로 1에서 4까지

          번호로    구별한다.

2.       확장(Extended): 주 파티션이 변화한 형태이지만, 파일시스템은 없다. 대신 하나 이상의 논리(logical) 파티션을 가지고 있다. 하나의 확장

          파티션만 존재하며, 주 파티션에 대해 4개의 스팟(spot) 중 하나를 취할 수 있다.

3.       논리(Logical): 확장 파티션 내에 생성된다. 논리 파티션은 1에서 12까지 생성할 수 있다. /dev/hda5, /dev/hda10와 같은 형식으로 5에서

           16까지 번호를 붙인다. 하나의 디스크에 파일시스템이 있는 15깨까지의 파티션이 가능하다.

 

   루트 파일시스템과 마운트 포인트
파일시스템의 꼭대기에는 루트 파일시스템이 있다. 다른 파일시스템은 그 아래에 마운트되어 있으며, 고유한 파일시스템을 생성한다. /etc, /lib, /bin, /sbin, /dev는 루트 파일시스템의 일부이다. 다음 명령은 파일시스템을 복구 및 관리할 때 사용한다.

fdisk: 명령어 기반 텍스트 인터페이스 장치(device)에 대한 파티션 테이블을 조작 및 디스플레이한다. 여기에서 장치는 /dev/hda1와 같은

파티션이 아니라, /dev/hda와 같은 실제 디스크를 말한다.
mkfs: 파일시스템이나 장치를 만든다.
mkswap: 스왑(swap) 영역으로 사용할 파티션을 준비한다.
파일시스템 통합
다음 명령은 파일시스템을 관리하는 데 사용한다.

df: 디렉토리에 있는 마운트된 파일시스템의 디스크 사용 정보를 보여 준다
du: 디렉토리에 대한 디스크 사용 정보를 보여 준다
fsck: 파일시스템에 에러가 있는지 확인하며, 선택적으로 정정도 한다
마운팅(Mounting)과 언마운팅(Unmounting)
/etc/fstab에는 파일시스템에 대한 마운트 정보가 있다. 각각의 라인은 6개 필드로 구성된 하나의 파일시스템 엔트리가 들어 있다. 자세한 사항은 fstab 맨 페이지를 참고하자.

 

다음 명령은 파일시스템을 마운트 및 언마운트하는 데 사용한다.

 

mount: 파일시스템을 계층적으로 마운트한다. 첫 번째와 두 번째 형식은 /etc/fstab에서 부가적인 정보를 참조한다
unmount: 디바이스에 대한 파일시스템을 마운트하거나, 디렉토리에 대한 파일시스템을 언마운트한다
파일시스템 유형
리눅스에서도 사용할 수 있는 파일시스템 유형은 다음과 같다.

ext2: 표준 리눅스 파일시스템
iso9660: 표준 CD-ROM 형식
msdos: MS-DOS FAT 파일시스템
nfs: 원격 서버
proc: 커널 매개 변수에 접근하는 시스템 추상화(abstraction)
swap: 파티션을 스왑한다
vfat: 가상 FAT, msdos 대신 사용, "긴" 파일이름을 지원
파일 퍼미션
접근 제한은 inode에 저장된 접근 모드(access mode)라는 특성의 집합으로 구현한다. 세 가지 계층의 사용자가 정의되어 있다.

User/Owner: 파일을 소유한 사용자
Group: 파일을 소유한 그룹
Other: 시스템에 있는 모든 사용자
위 계층의 사용자에게 퍼미션은 주어질 수도 안 주어질 수도 있다.

Read: (r) 파일 내용과 디렉토리 목록에 접근할 수 있다
Write: (w) 파일을 작성하거나 디렉토리 내에 파일을 생성할 수 있다
Execute: (x) 파일을 실행하며 디렉토리 내에 파일을 읽기/쓰기 할 수 있다
이렇게 해서 모두 9개의 모드, 즉 User rwx, Group rwx, and Other rwx이 나타난다. 다른 세 가지 모드가 더 있다.

SUID: 프로세스에 실행 가능한 파일 소유자라는 권리를 부여한다
SGID: 프로세스에 실행 가능한 파일의 그룹이라는 권리를 부여한다
스티키 비트(Sticky bit): 아무도 파일을 지우지 못하게 한다
이러한 12가지 모드 비트는 의사 기호(mnemonic) 구조나 팔진 표기로 나타낸다. 모드 비트는 ls나 stat와 같은 명령으로 보여 준다.

접근 모드(access mode) 세팅
새로운 파일은 umask가 나타내는 최초의 접근 모드를 부여 받는다. umask는 최초의 모드 세팅에서 특정 비트를 제거한다. 전형적인 umask는 002와 022이다. 현재의 파일 모드는 기호나 8진 모드 명세와 함께 chmod를 써서 변경한다.
    기호: [ugoa][-+=][rwxXst]
    8진 비트: user r, w, x, group r, w, x, other r, w, x
    rwxrwxrwx = 111111111 = 777
    rwxr-xr-- = 111101100 = 751

chmod: 기호나 8진 모드를 사용하여 파일에 있는 접근 모드를 변경한다
파일 소유권
접근 모드는 파일 소유권과 연관되어 있다. 파일은 개인 혹은 그룹 소유가 되는데, 다음의 명령은 소유권을 변경한다.

chown user-owner.group-owner 파일: 파일의 소유자, 혹은 그룹을 사용자-소유자, 혹은 그룹-사용자로 바꾼다
chgrp group-owner 파일: 파일의 그룹 소유권을 그룹-소유자로 바꾼다. chgrp 기능은 chown에 포함된다.
 

하드 및 심볼릭 링크
링크는 다른 파일로 가기 위한 길이며, 파일시스템에서 아주 적은 공간만을 차지한다. 심볼릭 링크는 다른 파일에 대한 포인터가 있는 작은 파일이다. 심볼릭 링크는 파일시스템을 연결할 수 있다. 하드 링크는 파일 디렉토리 엔트리의 복사본이다. 양 디렉토리 엔트리는 같은 inode를 가리키므로, 데이터, 소유권, 퍼미션이 모두 같다. ln에는 다음과 같은 구문이 있다.

ln: 파일에 링크를 생성하거나, 모든 파일에 대한 디렉토리 내에 링크를 생성한다. 심볼릭 링크는 -s 옵션을 사용해서 만든다.
디스크 레이아웃
디렉토리의 큰 부분을 다른 파일 시스템의 디렉토리 트리에 분산함으로써 /를 작게 만들어야 한다. 커널을 위한 실린더 1024 아래의 작은 /boot 파티션을 쪼갠다. /var를 파티션으로 쪼개 로그가 /를 채우게 한다. /tmp를 쪼갠다. NFS를 통해서 다른 시스템 사이에서 읽기만 가능하다면 /usr를 쪼갠다. 주 메모리 크기를 생각해 스왑(swap) 크기를 설정한다.


5. 배시(bash)
와일드카드(파일 글로브라고도 한다)는 한번에 여러 파일의 스펙을 가능하게 해 준다. 와일드카드를 위한 배시 맨 페이지를 확인하자.
리눅스와 유닉스의 중심되는 개념은 파일이다. 여러 시스템 장치는 시리얼 포트를 위한 /dev/ttyS0처럼 장치 파일을 사용하여 파일시스템으로 나타난다.

표준 I/O
셸은 표준 I/O 능력을 제공하는데, 이 때 세 가지 파일 종류로 프로그램을 구동한다. 표준 입력(stdin)은 텍스트 입력 스트림으로, 디폴트 값으로 키보드에 붙어 있다. 표준 출력(stdout)은 정상적인 프로그램 출력을 위한 출력 스트림이다. 표준 에러(stderr)는 에러 메시지를 나타내는 부가적인 출력 스트림이다.
한 프로그램의 출력과 다른 프로그램의 입력을 연결할 수 있다. 이는 파이프(pipe)라고 하는 것으로, 파이프를 나타내는 | 를 사용하여 명령을 결합함으로써 생성된다. 파이프는 특별한 형태의 재지정(redirection) 형태로, 입력 스트림의 원본과 출력 스트림의 수신지를 관리해 준다. 재지정 구문은 셸에 따라 조금씩 차이가 난다.
셸은 상호 작용 텍스트 유저 인터페이스(Textual User Interface), 운영 환경, 프로그램을 시작할 수 있는 기능, 프로그래밍 언어를 제공한다. 셸은 대개 본 셸(Bourne shell), 배시를 비롯한 sh, tcsh와 같은 C-셸에서 파생된 군으로 나눈다. 셸은 커널과 달리, 사용자 프로그램으로 구동된다. 함수를 조작해서 사용자에 맞게 커스터마이즈하며, 시작시 설정 파일을 사용한다. 환경 변수를 다른 셸을 포함한 자식 프로세스에 전달해 준다. 배시는 sh가 시간이 지나면서 변화한 형태이다.

셸 변수
셸 변수는 로컬 셸에서만 사용하며, 다른 프로세스로 넘어가지 않는데 반해, 환경 변수는 다른 프로세스에도 전달된다. 셸 변수가 익스포트되면 환경 변수로 되는데, 셸 변수 설정은 다음과 같이 한다.
    # PI=3.14
다음은 셸 변수를 환경 변수로 바꿔 준다.
    # export PI
다음은 위의 두 가지를 한 번에 한다.
    # export PI=3.14
셸 앨리어스(alias)는 새로운 명령어를 쉽게 생성하거나 현재 명령어를 수정한다.
    # alias more='less'
스크립트를 위해서, 그리고 스크립트의 요청으로 함수가 정의된다. 다음은 lsps라는 함수를 생성한다.
    # lsps () { ls -l; ps; }
설정 스크립트
배시 셸은 시작시 /etc/profile, /etc/bashrc와 같은 설정 스크립트를 사용한다. /etc/profile에 들어 있는 명령어는 로그인 때 실행되며, /etc/bashrc에 들어 있는 명령어는 배시를 부를 때마다 실행된다. 이러한 설정 파일을 변경하면 시스템의 모든 사용자에게 영향을 미친다

 

출처 :  네트워크,시스템보안,IT자격증 자료공유커뮤니티

 


 

보안전문가 준비에대한 철저한 계획 및 진행에 대한 상담을 드립니다
국방부 컨퍼런스 및 경찰청, 사이버수사대, 안철수랩 보안교육센터
(주)해커스칼리지 해커대학
http://www.itbankac.com
02-3291-3264

 

 

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,084 명
  • 현재 강좌수 :  36,026 개
  • 현재 접속자 :  233 명