리눅스

이것이 리눅스다 - 서버를 구축하는데 알아야 할 필수 개념과 명령어 03

록's 2023. 3. 10. 18:14
728x90
반응형

서버를 구축하는데 알아야 할 필수 개념과 명령어 01 >>>  https://rogi221.tistory.com/129

서버를 구축하는데 알아야 할 필수 개념과 명령어 02 >>>  https://rogi221.tistory.com/131

 


 

 

파일의 압축과 묶기(1)

 

파일 압축
  • 압축파일 확장명은 xz, bz2, gz, zip, Z 등
  • xz나 bz2  압축률이 더 좋음
 
파일 압축 관련 명령
  • xz : 확장명 xz로 압축을 하거나 풀어준다
    • 예) xz 파일명  xz -d 파일명.xz
  • bzip2 : 확장명 bz2로 압축을 하거나 풀어준다
    • 예) bzip2 파일명 bzip2 -d 파일명.bz2
  • bunzip2 : “bzip2 -d”옵션과 동일한 명령어
  • gzip : 확장명 gz으로 압축을 하거나 풀어준다
    • 예) gzip 파일명  gzip -d 파일명.gz
  • gunzip : “gzip -d”옵션과 동일한 명령어

 

 

 

파일의 압축과 묶기 (2)

파일 묶기

  • 리눅스(유닉스)에서는 ‘파일 압축’과 ‘파일 묶기’는 원칙적으로 별개의 프로그램으로 수행
  • 파일 묶기의 명령어는‘tar’이며, 묶인 파일의 확장명도‘tar’이다
 

파일 묶기 명령(tar)

  • tar : 확장명 tar로 묶음 파일을 만들어 주거나 묶음을 풀어 준다
    • 동작 : c(묶기), x(풀기), t(경로확인)
    • 옵션 : f(파일), v(과정보이기), J(tar+xz), z(tar+gzip), j(tar+bzip2)
  • 사용 예
    • # tar cvf my.tar /etc/sysconfig/ → 묶기
    • # tar cvfJ my.tar.xz /etc/sysconfig/ /etc/sysconfig/ → 묶기 + xz 압축
    • # tar xvf my.tar → tar 풀기
    • # tar xvfJ my.tar.xz /etc/sysconfig/ → xz 압축 해제 + tar 풀기

 

 

파일 위치 검색

  • find [경로] [옵션] [조건] [action] : 기본 파일 찾기
    • [옵션] -name, -user(소유자), -newer(전,후), -perm(허가권), -size(크기)
    • [action] -print(디폴트), -exec (외부명령 실행)
    • 사용 예
      • # find /etc -name "*.conf“
      • # find /bin -size +10k -size -100k
      • # find /home -name "*.swp" -exec rm { } \;
  • which 실행파일이름 : PATH에 설정된 디렉터리만 검색
  • whereis 실행파일이름 :실행 파일,소스,man페이지 파일까지 검색
  • locate 파일이름 : 파일 목록 데이터베이스에서 검색

 

 

 

시스템 설정

  • 표준 시간대 변경(설정 >> [날짜 및 시각])
  • 네트워크 설정 (nmtui)
  • 방화벽 설정(firewall-config)

  • 서비스 설정(ntsysv)

 

 

CRONAT (1)

 

cron

  • 주기적으로 반복되는 일을 자동적으로 실행될 수 있도록 설정
  • 관련된 데몬(서비스)은“crond”, 관련 파일은 “/etc/crontab”
  • /etc/crontab 예
    • 01 * * * * root run-parts /etc/cron.hourly
    • 02 4 * * * root run-parts /etc/cron.daily
    • 03 4 * * 0 root run-parts /etc/cron.weekly
    • 42 4 1 * * root run-parts /etc/cron.monthly
  • 첫 줄은 매시간 1분에 /etc/cron.hourly 디렉터리 안에 있는 명령들을 자동으로 실행한다

 

 

CRONAT (2)

at

  • cron은 주기적으로 반복되는 작업을 예약하는 것이지만, at는 일회성 작업을 예약

 

  • 사용 예
    • 예약 : # at <시간>
    •      예) # at 3:00am tomorrow → 내일 새벽 3시
    •           # at 11:00pm January 30 → 1월 30일 오후 11시
    •           # at now + 1 hours → 1시간 후
    • at> 프롬프트에 예약 명령어 입력 후 [Enter]
    • 완료되면 [Ctrl] + [D]
    • 확인 : # at -l
    • 취소 : # atrm <작업번호>

 

 

 

네트워크 관련 필수 개념 (1)

TCP/IP
  • 컴퓨터끼리 네트워크 상으로 의사소통을 하는 “프로토콜” 중 가장 널리 사용되는 프로토콜의 한 종류
호스트 이름(Hostname)과 도메인 이름(Domain name)
  • 호스트 이름은 각각의 컴퓨터에 지정된 이름
  • 도메인 이름(또는 도메인 주소)는 hanbit.co.kr과 같은 형식
IP 주소
  • 각 컴퓨터의 랜카드에 부여되는 중복되지 않는 유일한 주소
  • 4바이트로 이루어져 있으며, 각 자리는 0~255까지의 숫자
  • 예) Server의 IP 주소는 192.168.111.100
네트워크 주소
  • 같은 네트워크에 속해 있는 공통된 주소 (예 : 192.168.111.0)

 

 

네트워크 관련 필수 개념 (2)

 

브로드캐스트(Broadcast) 주소
  • 내부 네트워크의 모든 컴퓨터가 듣게 되는 주소
  • 현재 주소의 제일 끝자리를 255로 바꾼 주소(C클래스)
게이트웨이(Gateway), 라우터(Router)
  • 라우터 = 게이트웨이
  • 네트워크 간에 데이터를 전송하는 컴퓨터 또는 장비
  • VMware의 게이트웨이 주소는 192.168.111.2로 고정
넷마스크(Netmask) & 클래스(Class)
  • 넷마스크 : 네트워크의 규모를 결정(예:255.255.255.0–C클래스)
DNS(Domain Name System) 서버(= 네임 서버) 주소
  • URL을 해당 컴퓨터의 IP주소로 변환해 주는 서버
  • 설정 파일은 /etc/resolv.conf
  • VMware를 사용하면 VMware가 192.168.111.2번을 게이트웨이 및 DNS 서버로, 192.168.111.254를 DHCP 서버로 설정함.

리눅스에서의 네트워크 장치 이름

  • CentOS 8은 랜카드를 ens160  인식함
  • 이전버전에서는 eth0, eth1, ens32, ens33 등으로 인식했음.
  • VMware에 CentOS를 설치할 경우에는 Vmware 버전에 따라서 완전히 다른 이름으로 인식할 수도 있음.

 

 

중요한 네트워크 관련 명령어 (1)

nmtui
  • 네트워크와 관련된 대부분의 작업을 이 명령어에서 수행
    • 자동 IP 주소 또는 고정 IP주소 사용 결정
    • IP주소, 서브넷 마스크, 게이트웨이 정보 입력
    • DNS 정보 입력
    • 네트워크 카드 드라이버 설정
    • 네트워크 장치(ens160)의 설정
  • 텍스트 기반으로 작동함
 
systemctl <start/stop/restart/status> NetworkManager
  • 네트워크의 설정을 변경한 후에, 변경된 내용을 시스템에 적용시키는 명령어

 

ifup <장치이름> ifdown <장치이름>
  • 네트워크 장치를 On 또는 Off 시키는 명령어
 
ifconfig <장치이름>
  • 장치의 IP주소 설정 정보를 출력
nslookup
  • DNS 서버의 작동을 테스트하는 명령어
 
ping <IP주소 또는 URL>
  • 해당 컴퓨터가 네트워크상에서 응답하는지를 테스트하는 간편한 명령어

 

 

네트워크 설정과 관련된 주요 파일

 

/etc/sysconfig/network
  • 네트워크의 기본적인 정보가 설정되어 있는 파일
 
/etc/sysconfig/network-scripts/ifcfg-ens160
  • ens32 장치에 설정된 네트워크 정보가 모두 들어 있는 파일
/etc/resolv.conf
  • DNS 서버의 정보 및 호스트 이름이 들어 있는 파일
 
/etc/hosts
  • 현 컴퓨터의 호스트 이름 및 FQDN이 들어 있는 파일

 

 

 

네트워크 보안을 위한 SELinux

 

  • SELinux(Security Enhanced Linux)는 보안에 취약한 리눅스를 보호하기 위해 탄생
  • 강제(Enforcing), 허용(Permissive), 비활성(Disabled) 세 가지 레벨
  • 설정 파일인 /etc/sysconfig/selinux를 편집하거나, system-config-selinux 명령으로 설정
  • 작동 방식
    • ‘강제(Enforcing)’는 시스템 보안에 영향을 미치는 기능이 감지되면 아예 그 기능이 작동되지 않도록 시스템에서 막아줌.
    • ‘허용(Permissive)’은 시스템 보안에 영향을 미치는 기능이 감지되면 허용은되지만 그 내용이 로그에 남음.
    • ‘비활성(Disabled)’은 SELinux를사용하지 않음

 

 

파이프, 필터, 리디렉션

  • 파이프(pipe)
    • 두 개의 프로그램을 연결해 주는 연결통로의 의미
    • “|”문자를 사용함
    • 예) # ls -l /etc | more
  • 필터(filter)
    • 필요한 것만 걸러 주는 명령어
    • grep, tail, wc, sort, grep, awk, sed 등
    • 주로 파이프와 같이 사용
    • 예) # ps -ef | grep bash
  • 리디렉션 (redirection)
    • 표준 입출력의 방향을 바꿔 줌
    • 예) ls -l > list.txt
    • soft < list.txt > out.txt

 

 

프로세스, 데몬 (1)

  • 정의
    • 하드디스크에 저장된 실행코드(프로그램)가, 메모리에 로딩되어 활성화된 것
  • 포그라운드 프로세스(Foreground Process)
    • 실행하면 화면에 나타나서 사용자와 상호작용을 하는 프로세스
    • 대부분의 응용프로그램
  • 백그라운드 프로세스(Background Process)
    • 실행은 되었지만, 화면에는 나타나지 않고 실행되는 프로세스
    • 백신 프로그램, 서버 데몬 등
  • 프로세스 번호
    • 각각의 프로세스에 할당된 고유번호
  • 작업 번호
    • 현재 실행되고 있는 백그라운드 프로세스의 순차번호

 

 

 

프로세스, 데몬 (2)

  • 부모 프로세스와 자식 프로세스
    • 모든 프로세스는 부모 프로세스를 가지고 있음
    • 부모 프로세스를 kill 하면, 자식 프로세스도 자동으로 kill 됨
  • 프로세스 관련 명령
    • ps
      • 현재 프로세스의 상태를 확인하는 명령어
      • “ps -ef | grep <프로세스 이름>”을 주로 사용함
    • kill
      • 프로세스를 강제로 종료하는 명령어
      • “kill -9 <프로세스 번호>”는 강제 종료
    • pstree
      • 부모 프로세스와 자식 프로세스의 관계를 트리 형태로 보여 줌

 

 

서비스와 소켓(1)

서비스
  • 시스템과 독자적으로 구동되어 제공하는 프로세스를 말한다. 예로 웹 서버(httpd), DB 서버(mysqld), FTP 서버(vsftpd) 등이 있다.
  • 실행 및 종료는 대개 ‘systemctl start/stop/restart 서비스이름’으로 사용된다.
  • 서비스의 실행 스크립트 파일은 /usr/lib/systemd/system/ 디렉터리에
    ‘서비스이름.service’라는 이름으로 확인할 수 있다. 예를 들어 Cron 서비스는 crond.service라는 이름의 파일로 존재한다.

 

소켓
  • 서비스는 항상 가동되지만, 소켓은 외부에서 특정 서비스를 요청할 경우에 systemd가 구동시킨다. 그리고 요청이 끝나면 소켓도 종료된다.
  • 그래서 소켓으로 설정된 서비스를 요청할 때는 처음 연결되는 시간이 앞에서 설명한 서비스에 비교했을 때 약간 더 걸릴 수 있다. 왜냐하면 systemd가 서비스를 새로 구동하는 데 시간이 소요되기 때문이다. 이와 같은 소켓의 대표적인 예로 텔넷 서버를 들 수 있다.
  • 소켓과 관련된 스크립트 파일은 /usr/lib/systemd/system/ 디렉터리에 소켓이름.socket라는 이름으로 존재한다

 

 

GRUB 부트로더(1) 

GRUB 부트로더의 특징
  • 부트 정보를 사용자가 임의로 변경해 부팅할 수 있다. 즉 부트 정보가 올바르지 않더라도 수정하여 부팅할 수 있다.
  • 다른 여러 가지 운영체제와 멀티부팅을 할 수 있다.
  • 대화형 설정을 제공하므로 커널 경로와 파일 이름만 알면 부팅이 가능.
 
GRUB2의 장점
  • 셸 스크립트를 지원함으로써 조건식과 함수를 사용할 수 있다.
  • 동적 모듈을 로드할 수 있다.
  • 그래픽 부트 메뉴를 지원하며 부트 스플래시 성능이 개선되었다.
  • ISO 이미지를 이용해서 바로 부팅할 수 있다.
  • 설정 파일의 형식이 변경되었지만 더 향상된 내용을 포함할 수 있다.

 

GRUB 부트로더(2)

GRUB2 설정 방법
  • /boot/grub2/grub.cfg 설정파일 (직접 변경하면 안됨)
  • /etc/default/grub 파일과 /etc/grub.d/ 디렉터리의 파일을 수정한 후에 ‘grub2-mkconfig’ 명령어를 실행해 설정함.
 
/etc/default/grub 파일

 

 

 

모듈의 개념과 커널 컴파일의 필요성

  • 모듈 : 필요할 때마다 호출하여 사용되는 코드

 

커널 컴파일(업그레이드)

  • 커널 컴파일 순서

 

728x90
반응형