코드스테이츠_국비교육/[Section1]

06_Linux의 기초_22.08.26

생각없이 해도 생각보다 좋다. 2022. 8. 28. 13:25

GUI / CLI / OS

>GUI 와 CLI

  • GUI
    : Graphic User Interface
    : 눈에 보이는 아이콘 등으로 컴퓨터를 제어하는 방식\
  • CLI
    : Command-Line Interface
    : 명령어로 컴퓨터를 제어하는 방식

>CLI를 배워야하는 이유

: 높은 안정성과 빠른 속도(GUI는 그래픽에 컴퓨터 자원을 사용해야 되기 때문에 상대적으로 CLI가 빠름.)
: 서버 컴퓨터는 효율을 위해 Linux환경에서 CLI를 쓰는 경우가 많다. 때문에 개발자라면 필수.

: git을 쓸 때도 CLI환경에서 사용하기 때문.

 

>그 외 용어

  • I/O: Input 과 Ouput
  • 프롬프트: CLI환경에서 키보드의 입력을 확인하고 편집할 수 있는 한 줄의 공간을 뜻함.
  • 디렉토리: 흔히 폴더라고 하는 것.

>OS, Operating System

OS의 실행

1. bios가 하드웨어를 체크함.

2. OS 로딩, 우리가 흔히 보는 Windows 로딩 화면

3. 바탕화면, OS가 실행되어 컴퓨터 자원과 하드웨어를 제어하고 있는 모습

 

OS의 논리적 구조

: 커널(kernel)과 쉘(shell)로 이루어져 있음.

 

Kernel

: 실질적으로 명령어를 수행하는 부분

: 명령을 하드웨어와 송수신하는 역할

Shell

: kernel이 이해할 수 있는 언어로 명령어를 해석하여 주는 역할

: 터미널을 매개로 유저와 정보를 송수신함.

 

 

CLI 기본 명령어

  • pwd : 현재 작업 중인 폴더의 위치 출력, print working directory
  • mkdir : 새 폴더를 생성함. (현재 디렉토리에), make directories
  • ls : 특정 폴더에 포함된 파일이나 폴더 확인, list
  • cd (디렉토리 명) : 디렉토리 이동 명령어, change directory
  • touch (파일명.확장자) : 새 파일 생성
  • > (명령어) : 실행 결과를 파일로 저장함.
  • cat (파일명.확장자) : 파일의 내용을 터미널에 출력한다, concatenate
  • rm (파일명.확장자) : 단일 파일 삭제하기 (휴지통을 거치지 않음), remove
  • mv (파일명.확장자) (파일명.확장자) : 폴더나 파일의 이름을 변경함, move
  • mv (파일명.확장자) (디렉토리) : 폴더나 파일의 위치를 이동함, move
  • cp : 폴더나 파일을 복사함. 복사 후 이름 및 경로 지정 가능, copy
  • (명령어) --help 혹은 man (명령어) : 해당 명령어의 매뉴얼을 확인할 수 있음.

// 자세한 풀이 및 추가적인 명령어는 따로 정리할 것.

 

사용자와 관리자, 그리고 경로

>사용자와 관리자

사용자

: 우리가 일상적으로 사용하는 계정.
: PC를 켜서 바탕화면에 진입하기 위해 로그인하는 계정
: 프로그램 실행만 가능함.

관리자

: 사용자가 접근할 수 없는 영역에 접근할 수 있는 권한을 가진 계정
: 프로그램 실행, 설치, 변경, 삭제가 가능함.

>사용자와 관리자가 분리되어 있는 이유

1. 보안 강화를 위해서
: 초기 사용자와 관리자가 분리되지 않았을 시기에 해킹, 악성코드에 취약했음, 모든 정보에 접근할 수 있었기 때문
2. 프로그램 충돌을 방지하기 위해서
: 시스템 설정을 변경하는 프로그램들이 충돌날 수 있음.

>UAC, User Account Control

: 사용자 계정 컨트롤
: 사용자와 관리자를 구분하는 장치
: 여러 계정을 만들 수 있고, 각 계정의 영역은 서로 침범할 수 없다.

>절대 경로와 상대 경로

절대 경로

: 최상위 디렉토리(root)가 기준인 경로

: 루트폴더

상대 경로

: 현재 위치가 기준인 경로(혹은 특정 위치를 기준으로 함)
. : 현재 위치

// 예시. ls ./ : 현재 폴더의 리스트 확인
.. : 상위 폴더

// 예시1. ls ../ : 상위 폴더의 리스트 확인 // 예시2. ls ../../ : 상위 폴더의 상위 폴더 리스트 확인

>관리자(root) 권한

: 루트폴더( / )는 Linux의 관리자 영역임.
: 관리자 권한을 루트 권한이라고도 함.
: Linux 관리자의 특징은 어떠한 경우에도 일반 사용자에게 관리자 권한을 완전히 넘기지 않는 것임.
: 사용자가 관리자 권한을 필요로 하는 경우(프로그램 설치, 변경, 삭제)에만 관리자 권한을 전달함.
: Linux 관리자 권한은 해당 사용자 폴더 내에서만 자유롭게 사용 가능.

>sudo: 관리자 권한을 획득하는 명령어

: 일시적으로 관리자 권한을 획득하는 명령어.
: 기본 명령어 앞에 sudo를 붙이면 사용가능.
//예시. sudo mkdir folder
//folder의 소유자는 root로 출력됨. 즉, 관리자 권한으로 생성됐다는 뜻.

 

패키지와 패키지 매니저

>패키지

: 포장된 상품(패키지 매니저=온라인 쇼핑몰)
: 압축 파일이다.

>패키지 구성

  1. 프로그램 파일
  2. 프로그램 설치 파일
  3. 프로그램 설치 설명서
  4. 프로그램에 대한 정보를 담은 파일

+ 추가 설명(4. 프로그램에 대한 정보를 담은 파일)

// 1. 프로그램 A를 설치하기 위해선 프로그램 B가 필요하다.
// 2. 위의 정보를 토대로 프로그램 B를 먼저 설치하고 프로그램 A를 설치함.
// 3. 이런 것을 편하게 자동으로 해주는게 패키지 매니저

>패키지 매니저

: 온라인 쇼핑몰 혹은 앱 스토어 같은 느낌
: 모든 패키지의 저장소 위치를 저장하고 있음.
: 특정 프로그램 설치를 요청하면 저장된 위치에서 패키지를 다운로드하고, 설치 프로그램을 실행함.
: 프로그램의 업데이트, 프로그램의 제거에도 사용.

>apt 패키지 매니저

: 우분투 기본 내장 패키지 매니저
: apt를 이용한 명령어를 이용하여 패키지 매니저를 사용할 수 있다.
: 일부 명령어는 관리자 접근 권한이 필요하다.
//터미널에 'apt'를 입력하여 설명서 읽기.
//다양한 패키지를 다운받아 사용해보면서 익히기.

 

READ, WRITE, EXECUTE

그림02. Read, Write, Execute 권한

>directory & file

: 맨 앞자리가 d(directory)이면 폴더
: 맨 앞자리가 -(not directory)이면 파일

>user

: 소유자를 의미함.

: 기본적으로 파일이나 폴더를 만든 사람.

>group

: 일정 user를 group에 추가하고 권한을 제공.

: 특정 user에게만 권한을 제공하기 위한 방법.

>other

: 파일에 대한 액세스 권한이 있는 다른 user.

: 해당 파일이나 폴더를 만들지 않은 모든 user를 의미함.

: other 권한은 global 권한이라고 표현하기도 함.

>r, w, x

r: read permission, 읽기 권한
w: write permission, 쓰기 권한
x: execute permission, 실행 권한

 

chmod

>명령어 의미

: 권한을 변경하는 명령어

: Read, Write, Execute 권한을 변경할 수 있음.

>조건

: OS에 로그인한 사용자와 폴더 및 파일의 소유자가 같은 경우에 해당 명령어를 사용할 수 있음.

>방식

-Symbolic method

그림03. Symbolic Method Table

: 더하기(+), 빼기(-), 할당(=), 액세서(accessor) 유형을 표기하여 변경하는 방법
: 액세스 클래스, 연산자, 액세스 타입으로 파일의 권한을 변경함. (표 참고, 액세스 타입에 공백을 두면 모든 권한 제거)
: (액세스 클래스)(연산자)(액세스 타입) (폴더 및 파일명)
//정해진 문자로 현재 권한 상태를 기준으로 변경하는 상대적인 변경 방법

 

-Absolute form

그림04. Absolute form Table

: rwx를 3 bit로 해석하여 숫자 3자리로 권한을 표기해서 변경하는 방법

: Read(r) = 4, Write(w) = 2, Execute(x) = 1
: 0부터 7까지의 숫자로 각 액세스 클래스의 권한들을 표현함.
: 숫자의 의미는 r, w, e 각 권한의 합이다. (표 참고)
//정해진 숫자로 현재 권한 상태와 상관 없이 변경하는 절대적인 변경 방법

//개인적으론 absolute form이 편해보인다.

환경변수

>개요

: Linux 기반의 운영체제에는 시스템 자체에 전역변수를 설정할 수 있다.
: 시스템에 설정한 전역변수를 환경변수라고 한다.

>정의

: 프로그램의 동작에 영향을 미치는 값들
: 프로그램이 정상적으로 동작할 수 있도록 설정하는 환경.

>Windows 환경변수 설정

: Windows 환경변수는 영구적으로만 설정이 가능함.

 

User에 대한 사용자 변수

: 특정 사용자만 사용할 수 있는 지역 환경변수

시스템 변수

: 모든 사용자가 사용할 수 있는 전역 환경변수

 

 

// 이번 공부는 첫 공부 때 너무 어렵게 느껴져서 두번, 세번 공부했다...

// 정의와 종류 등을 아는 것도 중요하지만 이것 저것 다뤄보면서 손에 익게 만들자!