리눅스 필수 개념, 하드디스크 관리와 사용자별 공간 할당 (3일차)

Tyun_Record·2023년 8월 10일
0

DNF

  • 'rpm' 명령의 패키지 의존성 문제를 완전하게 해결
  • 인터넷을 통해 필요한 파일을 저장소에서 자동으로 모두 다운로드해서 설치하는 방식
  • CentOS 7은 YUM, CentOS 8은 YUM이 개선된 DNF 명령 사용

DNF 기본적인 사용법

  • 저장소 URL : "/etc/yum.repos.d/"

  • 기본 설치 : dnf install 패키지 이름

    • 주로 "dnf -y install 패키지이름" 으로 사용
    • "-y"는 사용자의 확인을 모두 "yes"로 간주하고 설치를 진행한다는 옵션
  • RPM 파일 설치 : dnf install rpm파일이름.rpm

  • 업데이트 가능 목록 보기 : dnf check-update

  • 업데이트 : dnf update 패키지이름

  • 삭제 : dnf remove 패키지이름

  • 정보 확인 : dnf info 패키지이름

DNF 고급 사용법

  • 패키지 그룹 설치
    • dnf groupinstall "패키지그룹이름"
  • 패키지 리스트확인
    • dnf list 패키지이름
  • 특정 파일이 속한 패키지 이름 확인
    • dnf provides 파일이름
  • GPG 키 검사 생략
  • dnf isntall --nogpgcheck rpm파일이름.rpm
  • CentOS 8에서 인증되지 않은 패키지를 강제로 설치할 때 사용
  • 기존 저장소 목록 지우기
    • dnf clean all

DNF 작동 방식 설정 파일

  • /etc/yum.conf 파일 : 딱히 변경 필요 X
  • /etc/yum.repos.d/ 디렉터리
    • dnf 명령을 입력했을 때 검색하게 되는 네트워크의 주소가 들어 있는 여러개의 파일이 있음
  • /etc/yum.repos.d/ 디렉터리의 *.repo 파일
    • CentOS 8의 1905버전만 설치되도록 하기 위해 /etc/yum.repos.d/ 폴더의 내용 모두 삭제 후 This.repo 파일을 새로 생성하여 남겨둠
      그리고 This.repo 파일에 BaseOS, AppStream 등의 저장소를 별도로 적어놓음 ( 자동 업데이트 되지 않도록 설정한 것 ?! )

파일 압축과 묶기

  • 파일 압축
    • 압축파일 확장명은 xz, bz2, gz, zip, Z 등
    • xz나 bz2 압축률이 더 좋음
  • 파일 압축 관련 명령
    • xz : 확장명 xz로 압축을 하거나 풀어준다
      • xz 파일명 (기존 파일삭제됨, 압축파일만 남음) / xz-k 파일명 (기존 파일 삭제 안함) > 압축
        xz -d 파일명.xz / xz -l 파일명.xz > 압축풀기
    • bizp2 : 확장명 bz2로 압축을 하거나 풀어준다
      • bzip2 파일명 > 압축
        bizp2 -d 파일명.bz2 > 압축풀기
    • bunzip2 : "bzip2 -d" 옵션과 동일한 명령어
    • gzip : 확장명 gz로 압축을 하거나 풀어준다
      • gzip 파일명 > 압축
      • gzip -d 파일명.gz > 압축풀기
    • gunzip : "gzip -d" 옵션과 동일한 명령어
  • 파일 묶기 ( 압축보다 많이 씀 )
    • 리눅스(유닉스)에서는 '파일 압축'과 '파일 묶기'는 원천적으로 별개의 프로그램으로 수행
    • 파일 묶기 명령어는 '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)
    • cd /etc/sysconfig/network-scripts/
    • gedit ifcfg ens160
  • 방화벽 설정(firewall-config)
  • 서비스 설정(ntsysv)

CRON과 AT

  • 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 디렉터리 안에 있는 명령 자동 실행

  • 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 <작업번호>

네트워크 필수 개념

  • TCP/IP

    • 컴퓨터끼리 네트워크 상으로 의사소통을 하는 "프로토콜" 중 가장 널리 사용되는 프로토콜의 한 종류
    • 신뢰성 있는 통신을 하는데 사용
    • 사용 서비스 : FTP(파일 주고 받는 것), HTTP(웹페이지 여는 것)
      • 신뢰성 : 내가 데이터를 전달 받는데 있어 상호간에 확인하는 것
    • UDP는 신뢰성 보장하지 않고 그냥 주고 받는 것
  • Hostname

    • 각각의 컴퓨터에 저장된 이름
  • Domain name

    • 도메인 이름(또는 도메인 주소), google.com 과 같은 주소 형식
  • IP 주소

    • 각 컴퓨터의 랜카드에 부여되는 중복되지 않은 유일한 주소
    • 4바이트로 이루어져 있으며, 각 자리는 0 ~ 255까지 숫자
    • ex ) Server의 IP 주소는 192.168.111.100
    • 기본적으로 외워야하는 IP 주소
    • KT DNS > 168.126.63.1
    • google DNS > 8.8.8.8
  • 네트워크 주소

    • 같은 네트워크에 속해 있는 공통된 주소 (ex : 192.168.111.0)
  • 브로드캐스트(Broadcast) 주소

    • 내부 네트워크의 모든 컴퓨터가 듣게 되는 주소
    • 현재 주소의 제일 끝자리를 255로 바꾼 주소 (C클래스)
  • Gateway, Router

    • 라우터 (물리적기계) = 게이트웨이 (소프트웨적)
    • 네트워크 간 데이터를 전송하는 컴퓨터 또는 장비
    • VMware의 게이트웨이 주소는 192.168.111.2로 고정!
  • Netmask & Class

    • 네트워크의 규모를 결정 ( ex: 255.255.255.0-C클래스 )
      • A Class ( 255.0.0.0 )
        (네트워크).(호스트).(호스트).(호스트)
      • B Class ( 255.255.0.0 )
        (네트워크).(네트워크).(호스트).(호스트)
      • C Class ( 255.255.255.0 )
        (네트워크).(네트워크).(네트워크).(호스트)
  • DNS(Domain Name System) 서버(= 네임 서버) 주소

    • URL을 해당 컴퓨터의 IP주소로 변환해 주는 서버
    • 설정 파일은 /etc/resolv.conf
    • VMware를 사용하면 VMware가 192.168.11.2을 게이트웨이 및 DNS 서버로, 192.168.111.254를 DHCP 서버로 설정
  • 리눅스에서의 네트워크 장치 이름

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

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

    • 네트워크의 설정 변경 후 시스템에 적용시키는 명령어
  • ifup <장치이름> 및 ifdown <장치이름>

    • 네트워크 장치를 on 또는 off
  • ifconfig <장치이름>

  • 장치의 IP 주소 설정 정보를 출력

  • nslookup

    • DNS 서버의 작동을 테스트
  • /etc/sysconfig/network

    • 네트워크의 기본적인 정보가 설정되어 있는 파일
  • /etc/sysconfig/network-scripts/ifcfg-ens160

    • ens32 장치에 설정된 네트워크 정보가 모두 들어 있는 파일
  • /etc/resolv.conf
    – DNS 서버의 정보 및 호스트 이름이 들어 있는 파일

  • /etc/hosts

    • 현 컴퓨터의 호스트 이름 및 FQDN이 들어 있는 파일

네트워크 보안을 위한 SELinux

  • 보안에 취약한 리눅스를 보호하기 위해 탄생

  • 강제(Enforcing), 허용(Permissive), 비활성(Disabled) 세 가지 레벨

  • 설정 파일인 /etc/sysconfig/selinux를 편집 or, system-config-selinux 명령으로 설정

  • 작동 방식

    • '강제'는 시스템 보안에 영향을 미치는 기능이 감지되면 해당 기능이 작동하지 않도록 시스템에서 막아줌
    • '허용'은 시스템 보안에 영향을 미치는 기능이 감지되면 허용은 하지만 로그가 남음
    • '비활성'은 SELinux를 사용하지 않음

파이프, 필터, 리디렉션

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

프로세스, 데몬

  • 정의
    • 하드디스크에 저장된 실행코드(프로그램)가, 메모리에 로딩되어 활성화 된 것
  • Foreground Process
    • 실행시 화면에 나타나 사용자와 상호작용 하는 프로세스
    • 대부분의 응용프로그램
  • Background Process
    • 실행은 됐지만, 화면에 나타나지 않고 실행되는 포르세스
    • 백신 프로그램, 서버 데몬 등
  • 프로세스 번호
    • 각각의 프로세스에 할당된 고유번호
  • 작업 번호
    • 현재 실행되고 있는 백그라운드 프로세스의 순차번호
  • 부모, 자식 프로세스
    • 모든 프로세스는 부모 프로세스를 가지고 있음
    • 부모 프로세스가 죽으면, 자식 프로세스도 죽음
  • 프로세스 관련 명령
    • ps
      • 현재 프로세스 상태를 확인하는 명령어
      • ps -ef | grep <프로세스 이름> 을 주로 사용!! 자주 쓴다!!
    • kill
      • 프로세스를 강제로 종료하는 명령어
      • kill -9 <프로세스 번호> 는 강제 종료
    • pstree
      • 부모 프로세스와 자식 프로세스의 관계를 트리 형태로 보여준다

서비스와 소켓

  • 서비스
    • 시스템과 독자적으로 구동되어 제공하는 프로세스
    • 웹 서버(httpd), DB 서버(mysqld), FTP 서버(vsftpd) 등이 있음
    • 실행 및 종료는 대게 'systemctl start/stop/restart 서비스이름' 으로 사용
    • 서비스의 실행 스크립트 파일은 /usr/lib/systemd/system/ 디렉터리에 '서비스이름.servic'라는 이름으로 확인 가능
      예로, Cron 서비스는 crond.service라는 이름의 파일로 존재
  • 소켓
    • 외부에서 특정 서비스를 요청할 경우 systemd가 구동시킴
      요청이 끝나면 소켓도 종료
    • 소켓으로 설정된 서비스를 요청할 때는 처음 연결되는 시간이 서비스에 비교했을 때 약건 더 걸릴 수 있음
      systemd가 서비스를 새로 구동하는 데 시간이 소요되기 때문
      ex) 텔넷 서버
    • 소켓과 관련된 스크립트 파일은 /usr/lib/systemd/system/ 디렉터리에 소켓이름.socket라는 이름으로 존재

IDE 장치와 SCI 장치 구성

  • 하드디스크를 물리적으로 /dev/sda, /dev/sdb, /dev/sdc 형식으로 부름
  • 디스크 파티션이 나눠진 것을 논리적으로 /dev/sda1, /dv/sda2, /dev/sda3, /dev/sdb1, /dev/sdb2 형식으로 부름

  • 새로운 디스크 생성 후 파티션 분할 해주는 것

  • mkfs로 파일시스템 생성 = 포멧
  • 루트에 디렉터리 생성 및 test1 파일 생성
  • 새로운 디스크를 mydata 디렉터리에 마운트 후 test2 파일 생성, ls -l 검색해보면 lost+found랑 test2만 나옴!!, 마운트 된 순간 기존에 있던 mydata 디렉터리는 숨김 처리가 된다!!
  • 마운트 해제 후 ls -l 검색해보면 test1만 나옴, 마운트 해제 됐으니

위 실습 관련 참고하면 좋은 링크

1개의 댓글

comment-user-thumbnail
2023년 8월 10일

즐겁게 읽었습니다. 유용한 정보 감사합니다.

답글 달기