맨땅에 코딩

공통 - 운영체제 기초 본문

화이트햇 스쿨 2기/이론교육

공통 - 운영체제 기초

나는 푸딩 2024. 9. 17. 00:06

*화이트햇 스쿨 2기에서 이수한 이론교육 내용을 바탕으로 작성되었습니다.

1. 운영체제란 무엇인가? 리눅스란? 우분투란?

 

운영체제

Windows, Linux 등

우리가 사용하는 모든 하드웨어에는 운영체제가 탑재되어 있음

 

운영체제란?

운영체제 또는 오퍼레이팅 시스템(Operating System)은 시스템 하드웨어를 관리할 뿐 아니라 응용 소프트웨어를 실행하기 위하여 하드웨어 추상화 플랫폼과 공통 시스템 서비스를 제공하는 시스템 소프트웨어이다.

 

최근에는 가상화 기술의 발전에 힘입어 실제 하드웨어가 아닌 하이퍼바이저 위에서 실행되기도 한다.

 

 

운영체제의 기능

1) 프로세스 관리

2) 파일 관리

3) 네트워크 관리

4) 메인 메모리 관리

5) 디스크 저장소 관리

6) 입출력 장치 관리

7) 보안 관리

8) 명령어 해석 시스템

 

운영체제의 종류

1) 윈도우

2) MacOS

3) 리눅스

4) 안드로이드

5) IOS

6) 블랙베리

7) 심비안

 

유닉스(Unix) 운영체제

 

유닉스란?

유닉스(Unix)란, AT&T 사에 의해 1960년대 개발되어 지금까지 사용되고 있는 컴퓨터 운영체제이다. 유닉스는 메인프레임, 중형, 소형 컴퓨터 시스템용 운영체제로 고전적으로 사용되었으며, PC용 운영체제로도 개발되었다.

 

리눅스(Linux) 운영체제의 탄생

리눅스(Linux)는 리누스 토발즈에 의해 개발된 운영체제이다.

 

자유 소프트웨어 재단(FSF)

자유 소프트웨어 운동 (Free Software Movement) 및 재단 (FSF)

 

리처드 스톨먼이 1980년대 초 소프트웨어가 상업화 되어 가는 시장에 맞서 소프트웨어의 본래 생산 유통 방식인 정보 공유의 방식을 복원하고자 한 운동이다.

 

GNU 프로젝트

누구나 자유롭게 "실행, 복사, 수정, 배포 할 수 있고, 누구도 그런 권리를 제한하면 안 된다"는 소프트웨어 라이선스

 

오픈소스 프로젝트란?

기존의 "자유 소프트웨어"라는 용어에 암시된 정치적 선전과 도덕적 철학을 비난했던 자유 소프트웨어 운동에 참여한 사람들이 처음 제한한 것

 

리눅스 배포판(Linux  distro)

GNU/Linux

 

슬랙웨어(Slackware) 계열 Distro

 

데비안(Debian) 계열 Distro

 

레드햇(Redhat) 계열 Distro

 

리눅스 배포판이란?

배포판 구성 요소

Linux Kernel, Desktop UI, Utilities

 

배포판 선택

배포판 선택 방법

- 상업적 vs 비 상업적

- 기업용, 개인용

- 하드웨어 지원, 및 특정 하드웨어 벤더의 인증

- 서버군, 데스크탑군, 임베디드군, 특수목적(방화벽, 라우터, 클러스터)

- 특정 산업군(교욱적, 과학적, 음악적, 생물학적 등)

- 보안성, 안정성, 사용성, 이식성

- 지리적 위치(현지 국가 서포트)

 

운영체제의 커널(Kernel)이란?

컴퓨터 과학에서 커널(Kernel)은 컴퓨터의 운영체제의 핵심이 되는 컴퓨터 프로그램의 하나로, 시스템의 모든 것을 완전히 통제한다. 운영체제의 다른 부분 및 응용 프로그램 수행에 필요한 여러 가지 서비스를 제공한다.

 

우분투란?

데비안(Debian) GNU/리눅스를 기반으로 만들어졌으며 고유한 데스크톱 환경을 사용하는 리눅스 배포판

 

2. 리눅스 설치하기, 가상머신 및 클라우드

 

가상환경(Virtual Machine)이란?

하이퍼바이저는 호스트 컴퓨터에서 다수의 운영 체제를 동시에 실행하기 위한 논리적 플랫폼을 말한다.

가상화 머신 모니터 또는 가상화 머신 매니저라고도 부른다.

 

하이퍼바이저 소프트웨어

버추얼박스, VMware 및 MS Hyper-V

 

클라우드 활용하기

 

AWS 가상환경 구축하기

VPC - 생략

- 서브넷, 라우팅 테이블, 인터넷 게이트웨이, NAT 게이트웨이 등

- 모두 기본값으로 Default VPC 사용

 

EC2 생성

- Ubuntu Server 20.04 LTS(HVM)

- t2.micro(1 CPU, 1G RAM)

- 10GB SSD

- SG: SSH(TCP/22)

- Keypair : fc_linux.pem

 

EC2(Elastic Compute Cloud)에 접속 확인

Linux AMI의 경우 기본 사용자 "ec2-user", 우분투 이미지의 경우 기본 사용자 "ubuntu"

 

3. 리눅스 GUI 환경 다루기 및 CLI 환경 이해하기

GUI 기본 기능 - GNOME 메뉴바 구성

- 기본 UI 구성

   - GNOME 메뉴바, 좌측 런처(윈도우의 "타스크바 = 작업표시줄"), 우측 시스템 트레이 아이콘

- 시스템 버튼 메뉴바 구성

   - 전원/사용자 변경/시스템 설정

- 네트워크

- 키보드/한글변환

 

GUI 기본 기능 - GNOME 메뉴바 표시, 한글입력기, 프로그램 검색, 파일, 리듬박스, 토템플레이어, 인터넷/검색 및 한글입력, 크롬설치

 

GUI 기본 기능 - 오피스군

- OpenOfiice: Apache

- LibreOffice: Document Foundation

 

GUI 기본 기능 - 소프트웨어 추가 설치 / 업데이트 / 삭제

- 윈도우의 제어판

- 스마트폰의 앱스토어

 

GUI 기본 기능 - 불필요한 런처 삭제, 시스템 설정, 윈도우 메뉴

 

터미널

- Ctrl + Alt + T 

- CLI 명령어 익히기

 

GUI 어드밴스 설정

- 추가 환경 설정을 위한 도구 설치 

sudo apt install unity-tweak-tool
sudo apt install gnome-tweak-tool

 

4. 리눅스 기초 명령어 (파일/디렉토리 다루기)

 

파일시스템 살펴보기

 

 

Filesystem Hierarchy Standard - Wikipedia

From Wikipedia, the free encyclopedia Linux standard for directory structure The Filesystem Hierarchy Standard (FHS) is a reference describing the conventions used for the layout of Unix-like systems. It has been made popular by its use in Linux distributi

en.wikipedia.org

 

파일 시스템 주요 디렉토리 - /boot

- grub 및 커널, initrd, 멀티 부팅 시 메모리 테스트를 위한 memtest 도구

 

파일 시스템 주요 디렉토리 - /home

- 사용자 디렉토리 및 슈퍼유저(root)의 홈 디렉토리 /root

 

파일 시스템 주요 디렉토리 - /etc

- 시스템 프로세스의 각종 설명파일들

 

파일 시스템 주요 디렉토리 - /var 및 /var/log

- 시스템 프로세스의 각종 임시 파일들 및 로그 파일들

 

기본 명령어 - 파일다루기

- 파일 보기 ls, ls -l, ls -al

- 파일 내용 보기 cat, more, less

- 파일 만들기/지우기 touch, rm

- 파일 복사 cp

- 파일 이동 mv

- 파일 솟컷 ln (심볼릭 링크)

- 파일 속성 보기 file

 

- 디렉토리 만들기 mkdir, rmdir

- 디렉토리 이동 cd, cd -

- 디렉토리 구조 . / .. / ~

 

- 터미널 지우기 clear

 

- 시스템 종료 reboot, poweroff, shutdown

 

기본 명령어 - 파일 시스템 구조

link의 유형 개념

- 하드링크

ln hello.txt hello link

- 소프트링크 (심볼릭 링크)

ln -s hello.txt hellosymlink

inode 개념

기본 명령어 - 도움말/메뉴얼 (man - manual)

 

기본 명령어 - 파일편집기(vi / vim / nano)

- vi hello.txt

- vi /etc/passwd

 

- nano hello.txt

- nano /etc/passwd

 

- sudo apt install vim

- vimtutor

 

5. 사용자 계정/권한관리

 

사용자 권한

- 나 (owner)

- 그룹 (group)

- 남 (other)

 

사용자 계정 - superuser 와 user

슈퍼유저란?

시스템 운영 관리자 계정으로 일반적으로 리눅스 운영체제에서는 루트(root) 유저를 말함

관리자 권한을 일반 사용자 권한과 구분하며 사용자의 부주의로 발생하는 시스템 손상과 바이러스, 악성코드의 침입에 의한 피해를 보호함

 

사용자 계정 - 권한 조사

- whoami : 내가 누구인지 내 계정 확인

- id : 내가 갖고 있는 권한 (포함된 그룹) 확인

 

사용자 계정 - 권한의 대여

- sudo : 슈퍼유저(superuser)의 권한을 수행(do)함

 

사용자 계정 - 권한의 대여 -  sudoer

- sudo visudo : 슈퍼유저의 권한을 편집

설정 파일을 통한 변경

- 사용자 권한

- %그룹 권한

설정파일 상세

- 계정명 호스트명=(실행계정명) 명령어

- user1 ALL=(ALL) /sbin/ifconfig

사용자를 sudo 권한에 추가

- useradd -aG user1 sudo (Ubuntu)

- useradd -aG user1 wheel (Amazon AMI)

 

사용자 계정 - 권한의 대여 - su

su [username]

사용자 권한을 대여(즉, 사용자로 로그인 한 것과 같은 효과)

언제 사용할까?

관리자가 사용자 계정을 관리하고 이슈/장애를 분석할 때

 

사용자 계정과 그룹 계정

- cat /etc/passwd : 사용자 계정 확인

- cat /etc/shadow : 사용자 암호

 

- cat /etc/group : 사용자 그룹 확인

 

사용자 추가 (adduser - add user)

 

사용자 암호 정책 변경 / 암호 변경

chage [option] user

 

- chage user2 : 암호 정책 변경

- chage -l user2 : 암호 정책 확인

 

- passwd [options] user : 암호 변경

- passwd -l user : 계정 잠금

- passwd -u user : 계정 잠금 해제

- passwd -S user : 계정 상태 확인

 

사용자 삭제

deluser [options] user

사용자 계정 삭제

- deluser user2

- deluser user2 --remove-home

 

userdel user

none-interactive 모드로 모두 삭제

- userdel user2 : 사용자 계정 삭제(홈 삭제)

- userdel -f user2 : 로그인 중이더라도 삭제

 

그룹 생성

addgroup [options] group

그룹 계정 생성

 

그룹 삭제

delgroup [options] group

그룹 계정 삭제

 

그룹 계정 / 사용자 할당 (또는 사용자 정보 수정)

usermod [options] user

사용자 계정 정보 수정 (moduser는 없음 (interactive 방식))

사용자를 그룹에 추가

- usermod -c <name change> user2 : 사용자 이름 수정

- usermod -a -G sudo user2 : user2를 sudo 그룹에 추가

- adduser user2 sudo : user2를 sudo 그룹에 추가

- deluser user2 sudo : user2를 sudo 그룹에서 제거

 

파일의 권한

사용자 접근 권한의 구분

소유자(User) / 그룹(Group) / 그 외(Other)

0 --- : 권한무

1 --x : 실행

2 -w- : 쓰기

3 -wx : 쓰기 & 실행

4 r-- : 읽기

5 r-x : 읽기 & 실행

6 rw- : 읽기 & 쓰기

7 rwx : 읽기 & 쓰기 & 실행

 

파일의 생성 권한

파일/디렉토리 생성 권한의 확인

- 리눅스의 기본 파일 권한: 666

- 리눅스의 기본 디렉토리 권한: 777


파일의 권한 - 권한 변경

chmod [option] [mode] file

파일/디렉토리 권한의 변경

- chmod 777 hello.txt

- chmod 700 hello.txt

 

파일의 권한 - 소유권 변경

chown

파일/디렉토리의 소유자/그룹 변경

chgrp

파일/디렉토리의 그룹 변경

 

파일의 특수 실행 권한

파일의 권한을 일시적으로 소유주 혹은 소유 그룹의 권한으로 빌려서 실행함

Sticky bit은 해당 디렉토리에 생성된 파일은 해당 사용자의 소유주로 저장됨

- SetID는 4xxx, SetGID는 2xxx로, StickyBit은 1xxx로 설정한다

각각 설정 위치는 rws------, rwxrws---, drwxdrxdwt로 표시된다

- 기존 권한의 위치에 덮어쓰기 때문에, 해당 기능만 존재할 경우 대문자 S/S/T로 표기된다

각각 설정 위치 는 rwS------, rwxrwS---, drwxdrxdwT로 표시된다

기존 권한 (실행 권한)을 포함하고 있는 경우 소문자 s/s/t로 표시된다

- chmod u+s filename

- chmod g+s filename

- chmod +t directoryname

 

6. 패키지 설치

 

패키지란

리눅스의 다양한 운영체제에서는, 내가 원하는 프로그램(소프트웨어)을 실행하기 위해서는, 해당 소스코드를 해당 환경에서 컴파일 하여야 한다

 

왜?

- 다른 운영체제(배포판)

- 다른 커널

- 다른 라이브러리

 

그러면,

- 소스 코드는 어디서?

- 컴파일 할때마다 걸리는 시간은 어떻게?

- 그때마다 발생한 다양한 이슈(버전 이슈, 라이브러리 및 의존성 라이브러리 이슈 등) 누가? 어떻게?

 

그래서

- 해당 배포판 환경에 맞추어 미리 빌드한 실행파일을 압축한 것

 

7. 데몬서비스 관리

 

데몬이란

사용자가 직접적으로 제어하지 않고, 백그라운드에서 돌면서 여러 작업을 하는 프로그램

 

서비스란

주로 서버/클라이언트 모델에서 출발하여, 사용자의 요청에 응답하는 프로그램

 

우분투의 데몬

SystemV 명령어

사실상 우분투 16/18에서는(기본적으로는) SysV의 service를  사용하지 않음

내부적으로는 systemctl로 호출됨

 

systemd를 사용하는 우분투의 systemctl을 통한 서비스 확인

- systemctl status

 

- systemctl status <daemon-name> 

- systemctl start <daemon-name>

- systemctl stop <daemon-name>

- systemctl restart <daemon-name>

 

Systemd를 통한 서비스 관리

1) systemd는 대체 어디에?: /sbin/init → /lib/system/systemd

2) systemd의 사용 이유

- 프로세스의 자동 시작

- 프로세스간의 의존성 관리

- 프로세스의 갑작스런 종료에 대응

- 부팅 옵션에 따른 다른 프로세스 구동

 

Systemd 디렉토리 구조

시스템 서비스 디렉토리

- /lib/systemd/system

- 런레벨에 따른 타겟 서비스 목록

  →  /lib/systemd/system/default.taget

  →  /lib/systemd/system/runlevel?.target

 

Systemd 유닛 종류

- service, socket, device, mount, automount, swap, target, path, timer, slice, scope

시스템 컨트롤 명령어

 

Systemctl을 통한 다양한 데몬/서비스 확인

1) 실행 중인 서비스 목록 확인

- systemctl list-units

2) 부팅 시 기본 옵션 (현재 runlevel 확인)

- systemctl get-default

3) 부팅 시 기본 옵션 변경(runlevel 변경)

- systemctl set-default <target>

4) 서비스 상태 확인

- systemctl status <servicename>.service

5) 서비스 시작

- systemctl start <servicename>.service

6) 서비스 중지

- systemctl stop <servicename>.service

7) 서비스 재시작

- systemctl restart <servicename>.service

8) 설정 재로드

- systemctl reload <servicename>.service

 

서비스 데몬의 로그 확인

Journalctl을 통한 다양한 데몬/서비스 로그 확인

1) 서비스 로그 확인

- journalctl (전체 로그)

- journalctl -b (부팅 후 로그)

- journalctl -f (최근 로그 및 이후 로그 트래킹 대기)

2) 특정 서비스의 로그 확인

- journalctl -u <service-name>

3) 로그의 크기 확인

- journalctl --disk-usage

4) 로그의 디렉토리 위치

- /var/log/journal

 

로그 레벨

- emerg(0)

- alert(1)

- crit(2)

- err(3)

- warning(4)

- notice(5)

- info(6)

- debug(7)

 

8. 서버프로그램 설치 및 관리

 

웹 서버 구축하기

웹 서버의 선택, apache vs nginx

1) apache를 사용한 웹 서버 구축하기

- 웹 서비스 설치하기

- 웹 서비스 설정 보기

- 웹 서비스 사이트별 설정 보기

- 웹 서비스 재 실행하기

- 웹 서비스 만들기

- 웹 서비스 로그

2) nginx를 사용한 웹 서버 구축하기

- 웹 서비스 설치하기

- 웹 서비스 설정 보기

- 웹 서비스 사이트별 설정 보기

- 웹 서비스 재 실행하기

- 웹 서비스 만들기

 

파일 서버 구축하기

1) vsftpd를 사용한 파일 서버 구축하기

- FTP 서비스 설치하기

- FTP 서비스 설정 보기

- FTP 접속 테스트 하기

2) vsftpd를 사용한 익명 사용자 읽기 전용 파일 서버 구축하기

- FTP 서비스 설정 수정하기

- FTP 익명 공유 디렉토리

- FTP 접속 테스트 하기

3) vsftpd를 사용한 파일 서버 제대로 구축하기

- FTP 서비스 설정 수정하기

  →  sudo vi /etc/vsfpd.conf

      - 익명 사용자 비허용

        → anonymous_enable=NO (기본값)

      - 로컬 사용자 계정 사용 (및 쓰기 권한)

        → local_enable=YES

        → write_enable=YES

      - 사용자 HOME 디렉토리 탈출 금지

        → chroot_local_user=YES

        → allow_writeable_chroot=YES

      - 로컬 FTP (공유) 루트 디렉토리 설정

        → local_root=/srv/ftp

      - 업로드 가능

        → write_enable=YES

  → systemctl restart vsftpd

- 사용자 계정 만들기

  → sudo adduser ftpuser1

- PAM 모듈을 통한 접근 제어

  → sudo vi /etc/pam.d/vstpd

       - sense=allow

         file=/etc/ftpusers_permit

- 사용자 접근 제한 (disallow)

  → /etc/ftpusers

- 사용자 접근 제한 (allow)

  → /etc/ftpusers_permit

 

DB서버 구축하기

DB 서비스 유형 - MySQL vs PostgreSQL

1) Mysql 5.8 → Mysql8

- 오라클 Supported

2) MariaDB (Mysql 5.5 fork)

3) PostgreSQL 10, 11

 

mysql을 사용한 DB 구축하기

1) DB 서비스 설치하기

2) DB 서비스 보안 설정하기

3) DB 접속 테스트

4) systemstl status mysql

5) sudo mysql

 

9. 개발환경 구축하기

 

개발 언어 - C 개발 환경

1) C 언어 개발 환경 구축하기

- sudo apt install build-essential

- sudo apt install binutils

2) 확인하기 

- gcc

- g++

- make

 

개발 언어 - Python 개발 환경

1) Python 언어 및 관련 개발 환경 구축하기

- sudo apt install python

- sudo apt install python3

2) 확인하기

- python --version

- python3 --version

 

3) Anaconda를 이용한 개발 환경 구축하기

- 공식 도메인

https://www.anaconda.com/download

- 다운로드

- 설치 스크립트 실행

- PATH 설정 및 재로딩

 

4) Jupyter Notebook을 이용한, 웹 기반의 IDE로 개발 환경 구축하기

- 주피터 노트북 데몬 실행

- 주피터 노트북 암호 생성

- 주피터 노트북 설정 파일 만들기

- 설정 파일 변경

- 터미널이 닫혀도 백그라운드에서 실행되는 프로세스로 실행하기

5) Jupyter Notebook을 부팅 서비스로 만들어 자동 실행하기

- 서비스 만들기 

  → sudo vi /lib/systemd/system/jupyter.service

 

가상머신 HDD 용량 증설

VitualBox HDD 용량 증설

- 가상 미디어 관리자 → HDD 선택 → 용량 증가

 

- 물리적으로 늘어난 용량이 논리적으로 증가되지 않았음으로, 논리적 파티션 및 파일 시스템 확장 필요

 

- HDD의 파티션 세상에 대해 공부..는 PASS

 

개발 언어 - Java 개발 환경 (Java 패키지 설치하기(JDK/JRE))

Java(OpenJDK) 설치하기

- 배포판 기본 버전 Java 설치하기 (openjdk11)

  → Runtime 설치하기:  sudo apt install default-jre

  → SDK 설치하기: sudo apt install default-jdk

 

개발 도구 버전 관리 유틸리티

1) which, whereis

실행되는 바이너리 위치 확인

2) update-alternatives

다양한 버전의 유틸리티 ㅗ간리

- 다중 Python 버전 관리

- 다중 Java 버전 관리

- 현재 설치된 자바 확인

- 신규 버전 등록

 

개발 환경 - docker

1) 컨테이너 관리 도구 docker 설치

- 우분투공식 사이트에서 유지보수 되는, 패키지 관리자를 통한 도커 설치

- 공식 사이트로부터 리포지토리를 추가 한 후 설치

- 공식 사이트로부터 자동 설치 스크립트를 다운로드 받아 설치

2) docker의 설정 다루기

- sudo 없이 사용하기

- 도커 이미지/컨테이너 디렉토리 변경

 

개발 환경 구축하기 - 결론

필요한 애플리케이션을 검색한다

1) 우분투 패키지가 있다?

- 설치: sudo apt install <패키지명>

- 관리: systemctl status <서비스명>

2) 우분투 패키지가 없다?

- 해당 도구 내 패키지 다운로드 및 설치

  → 웹브라우저 다운로드

  → curl -O 다운로드 및 저장

  → dpkg -i <패키지명>

3) 설치 후에는?

- 설정파일 관리를 통한 디테일한 옵션 설정

- 데몬 서비스 재시작

 

10. 배시 쉘 프로그래밍

 

리눅스 쉘이란?

사용자 명령어 및 프로그램을 실행할 수 있는 공간(사용자 인터페이스)

 

리눅스 쉘의 종류

- Bourne Shell

- C-type Shell

 

리눅스 쉘 - 프롬프트

사용자와 인터렉티브 한 입력을 주고 받을 수 있는 명령 대기 표시자

- 우분투 기본 프롬프트: [username@hostname]: <directory> $

- 환경변수 PS1에 기록됨

 

기본 명령어

1) 출력 (echo)

2) 재지향(리다이렉션) ( >, >>, 2>, 2>&)

- 결과물을 다른 장치로 보냄

3) 재지향(리다이렉션) ( <, << )

- 입력값 리다이렉션 (표준 입력 - stdin) 및 delimiter

4) 파이프 ( | )

- 출력 값 프로세스 간 전달

 

명령어 히스토리

쉘에서 입력한 명령어들의 기록

 

환경변수 - PATH

명령어 실행 (어디에?)

배포판에 따라 현재 디렉토리를 1순위로 실행하는 배포판도 있으나, 우분투는 그렇지 않음

 

환경변수 - PATH - which

내가 실행하는 바이너리가 어디에서 실행되는가?

 

환경변수 - printenv, env

다양한 환경변수 확인

 

단축 명령어 (alias)

bash 쉘의 장점 - 축약어 기능 (alias)

자주 쓰는 긴 명령어를 짧게 요약

 

파일 시스템 명령어 - 검색(find)

원하는 파일의 검색

 

검색 명령어 - 필터링 (grep)

 

내용 검색/편집 명령어 (awk) (sed)

 

쉘 스크립트

bash 쉘의 공간에서 나만의 프로그래밍을 작성

 

쉘 프로그래밍 - 실행방법 및 shebang

- 스크립트 작성 및 /bin/sh 또는 /bin/bash를 통해 실행

- 실행 퍼미션을 통한 직접 실행

 

11. 시스템 운영 및 모니터링

 

사용자 모니터링

사용자 모니터링 및 시스템 모니털이

1) 접속 현황

- users

  → tty, pts

- who

- w

2) 접속 로그

- last

- lastb

3) 터미널 로그

- history

4) 로그 파일

- 인증 로그

  → /var/log/auth.log

 

프로세스 모니터링

프로세스의 실행과 관리 디버깅

 

네트워크 모니터링

네트워크 설정 및 패킷/소켓/트래픽 모니터링

 

사용자 도구 - 모니터링

1) 현재 접속한 사용자와 시스템의 상세 정보: who

-a : all

-b : 최근 부팅시간

-r : 런레벨

-H : 헤더 정보 표시

2) 현재 터미널 확인 명령어: tty

3) 사용자간 메시지 - wall

4) 사용자 접속 로그 - last (최근 로그인 시간)

5) 사용자 접속 로그 - lastb (최근 로그인 실패 시간)

 

사용자 로그

1) 터미널 로그

사용자의 명령어, history

2) 권한 로그

인증 로그를 통한 감사 추적 - login, sudo 등 인증을 요청하는 명령어의 기록

 

프로세스 (백그라운드) 실행하기

fg, bg, jobs

 

프로세스 확인

1) ps (process status)

2) /proc 파일 시스템

 

프로세스 트리 - pretree 유틸리티

 

프로세스 종료 - 특정 시그널 보내기

kill 명령어를 통한 프로세스 강제 종료 및 신호 보내기

 

프로세스 디버깅

1) lsof

파일을 사용중인 프로세스 조회

2) strace

시스템 콜 트레이싱

3) ltrace 

라이브러리 콜 트레이싱

 

네트워크 설정 기초

1) ifconfig

2) Network Manager

3) netplan

4) arp

- 인접 디바이스 및 MAC 주소 확인

5) route

6) ip

7) netstat

 

네트워크 기본 테스트

1) ping

2) traceroute

3) nslookup

 

네트워크 분석 도구

1) tcpdump

'화이트햇 스쿨 2기 > 이론교육' 카테고리의 다른 글

공통 - 정보보안 윤리  (5) 2024.09.18
공통 - 암호학 기초  (5) 2024.09.18
공통 - 네트워크 기초  (1) 2024.09.18
공통 - 컴퓨터 구조 I  (1) 2024.08.04
공통 - 프로그래밍 기초(C)  (0) 2024.08.04