Jun's Development Journey

[Part3_NOS] 리눅스 시스템 본문

자격증 공부/네트워크 관리사 2급 필기

[Part3_NOS] 리눅스 시스템

J_Jayce 2020. 10. 12. 19:20

1. 리눅스 특징

 

특징 내용
다중 사용자 여러 명의 사용자가 네트워크를 통해 접속하여 시스템을 사용할 수 있다.
다중 작업 운영체제 내에서 여러 개의 프로세스를동시에 실행시켜 CPU를 스케쥴링하여 사용할 수 있다.
다중 처리기 한 개 이상의 CPU가 탑재되어 있는 경우 여러 개의 CPU를 지원해주는 다중 처리지원
다중 플랫폼 여러 종류의 CPU를 지원(Intel, Sun Sparc, Power PC ...)
계층형 파일 시스템 루트(Root)를 기반으로 하위 디렉터리를 이루는 계층형 파일 시스템이다.
POSIX과 호환 유닉스 시스템의 표준 인터페이스를정의한 POSIX 표준을 따른다.
우수한 네트워킹 TCP/IP, IPX/SPC, Appletalk, Bluetooth 등 다양한 프로토콜을 지원하며 리눅스 설치 이후에 IP 주소, 게이트웨이, 서브넷 등을 설정하면 네트워크를 바로 사용할 수 있다.
가상 콘솔 기본적으로 6개의 가상 콘솔이 있으며, 이를 통해 물리적 모니터의 한계를 극복
가상 기억장치 - 보조 기억 장치를 마치 주기억 장치처럼 사용할 수 있게 하여 주기억 장치의 공간을 증대하는 방법이다.
- 기억 공간을 확대하여 기억장치를 효율적으로 사용할 수 있어서 시스템이 안정적이다.

 

 

 

2. 구조

 

구조 설명
커널(Kernel) - 프로세서 사용을 관리
- 주 기억장치 사용을 관리
- 실행 중인 프로세스를 관리
- 주변 장치와 입출력을 관리
쉘(Shell) - 사용자의 명령어를 실행한다.
- 사용자가 명령어를 입력하면 바로 실행시키는 인터프리터 기능을 제공
- 운영체제와 사용자 간에 대화식 인터페이스를 제공
- 리눅스 표준셀은 bash이고, 이 외에도 C Shell, Korn Shell 등 다양한 셀을 제공
파일 시스템 - 사용자 파일과 디렉터리를 관리
- 파일과 디렉터리 등에 권한을 설정하고 해제
- 파일의 연결 정보인 링크를 관리
- 파일의 소유자, 그룹, 파일 생성 일자, 변경 일자 등을 관리

 

 

 

3. 리눅스 파일 시스템

1) fdisk

- 하드 디스크 초기화 및 파티션을 생성하는 것

- fdisk [-l] [-v] [-s 파티션] [장치명] 형태로 실행

 

2) mkfs

- 하드 디스크를 파티션했으면, 해당 파티션에 파일 시스템을 생성하는 명령어

- mkfs [옵션] [장치이름] 형태로 실행

 

3) fsck

- 파일 시스템의 무결성을 검사하는 명령어

- 오류가 발생하면 수정할 수 있다.

 

5) mount

- 단순하게 디렉터리만 연결하여 사용하는 것이 아니라 CD-ROM, USB 등과 같은 장치를 연결할 때도 사용되는 것이고, mount 명령어를 실행하여 연결을 수행할 수 있다.

- 리눅에서는 특정 디렉터리를 연결할 경우 mount 명령어를 사용한다.

 

 

 

6) 종류

- 리눅스 파일 시스템은 ext(Extend) 2, ext3, ext4 가 있으며 현재 대부분의 리눅스는 ext4를 지원한다.

종류 설명
ext2 - 단일 파일의 크기가 최대 2 Gbyte
- 파일명은 최대 256 Byte
- 최대 지원 파일 시스템 크기는 4 Tera Byte
- 디렉터리 당 저장 가능한 파일 수는 약 25,500개
ext3 - 단일 파일의 크기가 최대 4 Gbyte
- 파일명은 최대 256 Byte
- 최대 지원 파일 시스템 크기는 16 Tera Byte
- 디렉터리 당 저장 가능한 파일 수는 약 65,565개
- 저널링 파일 시스템을 지원
ext4 - 대용량 파일 지원
- ext2, ext3 호환성, 마운트 가능
- fsck 성능 향상
- Extends 지원 : 큰 사이즈 파일 삭제 시 시간 단축
- 하위 디렉터리 
- 조작 모음 : ext3 저널링 파일 시스템에서 발생되는 단편화를 조작모음으로 개선함

 

 

 

4. 리눅스 디렉터리 구조

디렉터리 구조 설명
/ 루트 디렉터리
/bin 기본적인 실행 명령
/boot LILO 등부팅에 관련된 파일
/dev 장치 파일모음
/etc 시스템 설정 파일
/home 사용자 홈 디렉터리
/lib C 라이브러리
/mnt 임시 마운트용 디렉터리
/proc 시스템 정보를 가진 가상 디렉터리
/root 루트 사용자의 홈 디렉터리
/sbin 시스템 관리용 실행 파일
/tmp 임시파일 디렉터리
/usr 애플리케이션이 설치되는 디렉터리
/var 시스템에서 운영되는 임시 파일 및 로그 파일

 

 

 

5. 리눅스 계정 관리

5-1) 사용자 생성

- useradd 혹은 adduser

- useradd junhyukkim 와 같은 형식으로 사용

 

 

5-2) passwd 파일과 shadow 파일

- 사용자가 계정을 사용하기 위해서 패스워드를 입력해야 한다.

- 사용자가 입력한 패스워드는 /etc/passwd 파일과 /etc/shadow 파일을 참조하여 사용자 인증 후 로그인을 수행시켜준다.

 

 

 

6. 리눅스 권한 관리

6-1) umask 

- Default 권한 값을 갖고 있다.

- umask : 디폴트 권한 값 확인

- umask 0000 : 디폴트 권한 값 변경

 

 

6-2) chmod

- 사용자에게 권한을 부여 하려면 u 옵션에 rwx(읽기, 쓰기, 실행) 권한을 부여하고, 그룹에게 권한을 부여할 때는 g 옵션에, 다른 사용자에게 부여할 때는 o 옵션을 사용한다.

- chmod [옵션] 파일명 의 최고 권한은 777이다.

- 소유자(r : 4, w : 2, x : 1)  그룹(r : 4, w : 2, x : 1)  다른 사용자(r : 4, w : 2, x : 1)

- chmod 771 abc 일 경우 유저와 그룹은 읽기, 쓰기, 실행 권한이 주어지지만, 다른 사용자는 실행 권한만 주어졌다.

- 명령 종류

명령 기호 설명
u - user
- chmod u+rwx junhyukkim.txt
g - group
- chmod g+rwx junhyukkim.txt
o - other
- chmod o+rwx junhyukkim.txt
a - all
- chmod a+rwx junhyukkim.txt
+ 권한 추가
권한 삭제
r 읽기
w 쓰기
x 실행

 

 

 

6-3) chown

- 파일에 대한 사용자와 그룹을 변경할 수 있는 명령어

- chown [option] [UID:GID] [디렉터리/파일명] 형식

- 명령어 옵션

옵션 설명
-R 하위 디렉터리의 모든 권한을 변경
-c 권한 변경 파일 내용 출력

- 명령어 인자값

인자 값 설명
+ 해당 권한을 더함
- 해당 권한을 제거
= 해당 권한으로 그대로 변경

- 예시

chown junhyukkim junhyukkim.txt => 해당 텍스트 파일을 junhyukkim 소유자로 변경

 

 

 

6-4) chgrp

- 파일이나 디렉터리의 소유 그룹을 변경하는 명령어

- chgrp [옵션] [그룹파일] 형식

 

 

 

7. 특수 권한

7-1) setuid

- 권한이 설정된 파일을 다른 사용자가 실행하게 되면 실행될 때 그 파일의 소유자의 권한으로 실행되는 파일

- 대표적으로 /usr/bin/passwd 파일이 있다. 

  1) /etc/passwd로 접근하여 비밀번호를 변경하도록 한다. 실제 /etc/passwd 권한은 소유주인 root만이 변경 가능하도

    록 되어있다.  

  2) 만약 setuid가 적용되있지 않다면, 일반 사용자들은 항상 관리자를 거쳐 변경해야 한다.

  3) -rwsr-xr-x 으로 설정되어 있고, 소유자 실행 권한 위치에 소문자 s면 설정되어있고, 대문자 S면 실행 권한이 없는 것

     이다.

 

 

7-2) setgid

- 파일 생성자의 그룹 소유권을 얻는 것

- 예를 들어 junhyukkim 사용자가 AAA 디렉터리에 디렉터리 및 파일을 생성할 수 없다. 이 때 root가 chmod 2777 AAA 디렉터리에 setgid를 부여하면 junhyukkim 사용자가 AAA 디렉터리에 하위 디렉터리를 생성하거나 파일을 생성할 수 있다.

 

 

7-3) sticky bit

- 공용 디렉터리를 만들어서 모두 자유롭게 사용할 수 있도록 하기 위해 만든 것

- 해당 디렉터리 삭제는 소유자만 가능하다.

- /tmp 디렉터리를 확인하면 drwxrwxrwt로 되있으며, 여기서 t 가 sticky bit가 설정되어있음을 말한다.

 

 

 

8. 리눅스 명령어

8-1) 디렉터리 명령어(mkdir)

- 리눅스에서 디렉터리를 생성할 때 사용

- 옵션

옵션 설명
-m  디렉터리 권한을 설정, 기본 값은 755
-p  상위 경로도 함께 지정
-v  디렉터리 생성 후에 생성된 디렉터리에 대한 메시지를 출력함

 

 

8-2) 파일 명령어(cp, rm,mv)

1) cp

- 파일 혹인 디렉터리를 복사하는 명령어이다.

- cp [옵션] [원복파일] [복사파일]

- 옵션 

옵션 설명
-f 덮어 쓰기를 해서 복사
-r 하위 디렉터디 전부를 모두 복사

- 예시

1) cp junhyukkim.txt junhyukkim2.txt

2) cp -r junhyukkim junhyukkim2 => junhyukkim 디렉터리의 하위 전부를 복사

 

 

2) rm

- 파일을 삭제할 때는 rm 명령어를 사용한다.

- 옵션

옵션 설명
-f 물어보지 않고 강제로 삭제함
-r 디렉터리 삭제 시 파일과 하위경로 모두 삭제
-v 파일 삭제 정보 출력

- 예시

1) rm junhyukkim.txt

2) rm -r junhyukkim => 하위 디렉토리까지 모두 삭제

 

 

3) mv

- 파일및 디렉터리를 이동하거나 파일의 이름을 변경할 때 사용하는 명령어

- 원본 파일과 대상 파일이 이름이 다르면 변경되고, 이동할 파일이 여러개 이면 이동 모드로만 동작한다.

- mv 명령어

 1) mv [옵션] 원본파일 대상파일

 2) mv [옵션] 원본파일 디렉터리

 3) mv [옵션] 디렉터리 디렉터리

- 옵션

옵션 설명
-b 백업 파일을 생성
-f 사용자에게 묻지 않고 파일을 덮어씀
-i 덮어 쓸 경우 사용자에게 물어봄
-n 파일이 존재하면 덮어쓰지 않음

 

 

 

8-3) 텍스트 명령어

1) cat

- 파일의 내용을 확인할 수 있는 명령어

- cat [옵션] [파일명]

- 예시

1) cat -n /etc/passwd => -n 옵션으로 줄 번호와 같이 출력된다.

2) cat /etc/passwd > test => cat 결과를 test 파일에 저장

3) cat test | more => more 명령어로 cat 결과를 페이지 단위로 출력

4) cat > test2 => 리다이렉션으로 키보디에서 입력 받고 test2 파일로 저장한다.

 

 

2) grep

- 특정 파일 내에 있는 문자열을 검색하는 역할

- grep [검색 문자열] [파일명], grep[옵션] [검색 문자열] [파일명]

- 옵션

옵션 설명
-c 검색 문자열이 속한 행 수를 출력
-H 파일명과 함께 출력
-i 대소문자를 구분하지 않음
-n 검색한 문자가 속하는 행 번호와 함께 출력
-r 현재 경로에서 하위 경로까지 검색
-v 검색하는 문자가 없는 행을 출력
-w 패턴 표현식을 하나의 단어로 검색

 

 

8-4) 네트워크 명령어

1) netstat

- 시스템과 연결된 모든 네트워크 연결을 확인하는 명령어

- 옵션

옵션 설명
-a 모든 소켓 정보를 확인
-n 도메인 주소를 읽지 않고 숫자로 출력
-p PID와 사용 중인 프로그램 명을 출력
-g 멀티캐스트 그룹 정보
-r 라우팅 테이블 정보를  출력

- 상태값

상태값 설명
LISTEN 접속 요청을 대기하고 있는 상태
ESTABLISHED 연결이 확립되어 통신이 이루어지고 있는 상태
CLOSE_WAIT 연결 종료를 대기하고 있는 상태
TIME_WAIT 연결이 종료되고 특정 시간 동안 소켓을 열어둔 상태
CLOSE 연길이 종료된 상태

 

 

2) arp

- IP 주소를 MAC 주소로 변환하는 프로토콜

- 옵션

옵션 설명
-a ARP Cache 정보에 있는 모든 호스트 정보 출력
-s ARP Cache에 저장된 특정 IP에 대해서 MAC 주소 변경
-d ARP Cache에 저장된 특정  MAC 주소 삭제
-i 특정 Ethernet의 ARP 확인

 

 

3) traceroute

- 네트워크를 사용해서 목적지를 찾아가는 경로 정보를 알 수 있는 명령어

- 구간 별로 게이트웨이, IP 주소, 시간 등의 정보를 알 수 있음

- 내부적으로 UDP, ICMP를 사용

 

 

4) ping

- 네트워크 상태를 점검하기 위한 명령어

- ICMP echo Request를 전송하고 ICMP echo reply가 되돌아 오는지 확인하여 네트워크의 상태를 점검

 

 

5) nslookup

- 도메인 명에 대한 IP 주소를 확인하기 위함

- 리눅스에서 네임 서버의 동작 확인 및 운영 관리를 위함

 

 

 

9. 프로세스

9-1) 데몬 프로세스

- 리눅스 서버가 부팅될 때 백그라운드에서 실행되고 있다가 클라이언트의 요구에 대한 서비스를 수행하는 프로그램

- 종류

1) standalone : 백그라운드에서 항상 실행중이며, 클라이언트에게 서비스 요청받으면 즉시 처리를 수행

2) inetd : 메모리에 상주하지 않고 sleep 상태로 있다가 요청 시 Wake up 되어 서비스 수행

 

 

9-2) ps

- 프로세스 상태 정보를 확인하는 명령어

 

9-3) pstree

- 실행 중인 프로세스의 상태를 트리 형태로 출력하는 명령어

 

9-4) top

- 리눅스 시스템에서 시스템 자원을 모니터링할 수 있는 소프트웨어

- CPU 사용률, 메모리 사용률, 실행 중인 프로세스 리스트 등을 확인할 수 있다.

 

 

 

10. SAMBA

- 리눅스 운영체제에 Microsoft NETBIOS 프로토콜을 제공해서 윈도우 시스템 운영체제와 자원 및 프린터를 공유하는 프로그램