[코드스테이츠 백엔드 44기 SEB BE] 3일차

오태호·2023년 2월 16일
0

코드스테이츠

목록 보기
3/22
post-thumbnail

CLI vs GUI

CLI(Command Line Interface)

  • 문자열로만 이루어진 인터페이스
  • 이 환경에서는 문자열을 출력하거나 입력하는 것만 가능
  • 화면에 나타날 내용에 그래픽 작업을 거치지 않아도 됨
  • 장점
    1. 컴퓨터의 자원을 적게 사용
    2. 더 빠르게 동작
  • 단점
    1. 사용하기 어려움

GUI(Graphic User Interface)

  • 그래픽 요소를 통해 컴퓨터를 제어
  • 장점
    1. 사용자가 쉽게 컴퓨터를 제어할 수 있음
  • 단점
    1. 그래픽 작업이 필요하여 컴퓨터 자원을 많이 사용
    2. CLI에 비해 느림

터미널(Terminal)

  • CLI가 물리적으로 구현된 기계
  • 오직 문자열을 출력하고, 문자열을 입력받을 수 있음

셸(Shell)

  • CLI로 구현된 터미널에서 실행 가능한 대화형 프로그램
  • CLI로 운영체체(OS) 커널(kernel)에 명령을 내릴 수 있는 프로그램
  • 동작하는 방식
    1. 한 줄의 명령어를 입력하고 엔터를 누르면 이 내용을 셸이 읽어들임
    2. 명령어를 해석해서 실행함
    3. 실행된 결과를 출력

CLI 기본 명령어

프롬프트(Prompt)

  • 키보드의 입력을 확인하고 편집할 수 있는 한 줄의 공간
명령어기능예시
pwd현재 위치 확인하기pwd
mkdir새로운 폴더 생성mkdir newDir
ls특정 폴더에 포함된 파일 또는 폴더 확인ls -la
cd특정 폴더로 이동cd newDir
touch파일 생성touch new.txt
>실행 결과를 파일로 저장echo Hello_World > new.txt
echoecho 뒤의 내용을 화면에 출력echo Hello_World
cat파일의 내용을 출력cat new.txt
rm폴더나 파일 삭제rm new.txt
mv폴더나 파일의 이름을 변경, 혹은 폴더나 파일의 위치 옮기기위치 변경 : mv new.txt newDir/
이름 변경 : mv new.txt old.txt
cp폴더나 파일을 복사cp old.txt old2.txt

관리자 권한과 경로

사용자와 관리자

사용자

  • PC를 켜서 바탕화면에 진입하기 위해 로그인하는 계정

관리자

  • 사용자가 접근할 수 없는 영역에 접근할 수 있는 높은 권한을 가짐

관리자 권한으로만 실행된다면?

  • 항상 관리자 권한으로 실행될 경우, 사용자가 정보를 탈취당하는 일이 발생함
  • 좋지 않은 의도로 작성한 코드, 즉 악성코드를 이용하여 사용자가 입력하는 내용을 공격자에게 전달할 수 있음
  • 항상 관리자 권한으로 실행되는 PC에서는, 악성코드가 삽입된 프로그램이 어떤 안전장치도 없이 설치됨
    • 어떤 프로그램에 악성코드가 심어져 있는지 파악할 수 없다!

사용자 계정 컨트롤(UAC, User CAccount Control)

  • 시스템을 관리하는 관리자와 일상적으로 PC를 사용하는 사용자를 구분
  • 사용자가 모르는 사이에 시스템 설정을 변경하는 악성코드가 실행될 때, 접근 권한을 막아서 사용자를 보호
  • 관리자
    • 프로그램을 설치하거나 변경 또는 삭제하는 권한
  • 사용자
    • 변경할 수 없도록 제한된 권한을 가짐

Linux 기반 OS(Ubuntu)의 UAC

  • 사용자가 절대 관리자 권한에 접근할 수 없음
  • 새로운 프로그램 설치, 변경, 삭제 등을 할 때에는 특정 명령어를 통해 잠시 관리자 권한을 빌려옴

절대 경로와 상대 경로

절대 경로

  • 기준점으로부터의 절대적인 위치
  • pwd 명령어를 통해 확인할 수 있음
  • 기준점 : 루트 폴더(/)
  • 루트 폴더로부터 어떤 폴더로 진입하는 경우 특정 폴더 혹은 파일을 만날 수 있는지 나타냄

상대 경로

  • 특정 폴더 혹은 파일의 위치를 현재 위치를 기준으로 나타냄
  • ls 명령어를 통해 확인할 수 있음
  • '.'은 현재 위치한 폴더, '..'은 상위 폴더를 나타냄

관리자 권한

  • Linux 관리자의 특징
    1. 일반 사용자에게 관리자 권한을 완전히 넘기지 않음
    2. 특정 프로그램을 설치, 변경 또는 삭제할 수 있는 관리자 권한만 사용자에게 전달
    3. 사용자/관리자를 분리하여 사용자 실수로 발생할 수 있는 시스템 에러로부터 OS를 보호

관리자 권한

  • 일반 사용자의 권한으로는 어떤 폴더 및 파일도 생성, 변경, 삭제할 수 없음
    • 새로운 프로그램을 설치, 변경, 삭제할 때 관리자 권한이 필요
  • 사용자가 프로그램을 설치, 변경 또는 삭제하는 권한을 차단하여 시스템을 안전하게 보호
  • 관리자 권한을 이용하면, 다른 사용자 폴더에도 영향을 끼칠 수 있음
    • 관리자 권한으로 변경한 내용은 사용자 권한으로 해결할 수 없음

sudo

  • 관리자 권한을 획득하는 명령어
  • 기본적인 CLI 명령어의 앞에 작성하여 관리자 권한을 일시적으로 획득함
  • 관리자 권한을 잠깐이라도 가지므로 항상 비밀번호와 함께 사용
  • Ex. newDirectory라는 새로운 디렉토리를 생성
sudo mkdir newDirectory

패키지와 패키지 매니저

패키지

  • 여러 파일을 모아 하나의 파일로 저장하고 있는 압축 파일
  • 패키지 안에는 하나의 프로그램이 정상적으로 설치되고 동작하기 위한 모든 파일들이 압축되어 있음
  • 패키지의 파일 구성
    1. 프로그램 파일
    2. 프로그램 설치 파일
    3. 프로그램 설치 설명서
    4. 프로그램에 대한 정보를 담은 파일
      • 프로그램 하나를 설치하기 위해 다른 프로그램이 필요하다는 정보도 함께 담겨있음
      • 패키지를 이용해 설치하면 패키지에 포함된 정보를 이용해 다른 프로그램을 먼저 설치하고 나서 설치하려는 프로그램을 설치

패키지 매니저

  • 패키지의 설치, 변경, 삭제 등 관리를 편리하게 해주는 도구
  • 모든 패키지 저장소 위치를 저장하고 있음
  • 사용자가 패키지 매니저에게 특정 프로그램의 설치를 요청하면, 패키지 매니저는 패키지가 저장된 위치에서 패키지를 다운로드해 설치 프로그램을 실행
  • 설치된 모든 프로그램의 업데이트를 확인하거나, 필요 없는 프로그램을 제거하는 데에도 사용
  • 패키지 매니저를 사용하지 않고 프로그램을 설치할 때의 단점
    • 여러 프로그램을 개별로 설치해야 함 -> 각각의 프로그램이 저장된 위치를 모두 알아야 함
    • 해당 프로그램의 업데이트 여부를 확인하기 위해서도 주기적으로 저장소를 방문해서 확인해야 함

사용 권한

Read, Write, Execute 권한

  • ls -l 명령어를 입력하면 각 파일이나 폴더의 권한을 확인할 수 있음
    • Ex. drwxr-xr-x, -rw-r--r--
  • drwxrwxrwx로 권한을 나타냄
    • 가장 왼쪽의 표현(d 또는 -)
      • d(directory)
        • 폴더를 나타냄
      • - (not directory)
        • 파일을 나타냄
    • 이어지는 r, w, x
      • 각각 read permission(읽기 권한), write permission(쓰기 권한), execute permission(실행 권한)을 나타냄
      • 왜 3번에 걸쳐 나타나는가?
        • 앞에서부터 각각 사용자, 그룹, 나머지에 대한 권한을 나타냄
        • drwxr-xr-x을 예시로 들어보자면, 소유자(사용자)는 해당 폴더에 대해 읽기, 쓰기, 실행 권한을 모두 가지고, 다른 사용자 그룹은 읽기, 실행 권한을 가짐

user, group, other

user

  • 파일의 소유자
  • 파일을 만든 사람이 소유자가 됨

group

  • 여러 user가 포함될 수 있음
  • 그룹에 속한 모든 user는 동일한 group 엑세스 권한을 가짐

other

  • 액세스 권한이 있는 다른 user
  • 파일을 만들지 않은 다른 모든 user를 의미
    • 즉, other 권한을 설정하면, 해당 권한은 global 권한 설정이라고 볼 수 있음

chmod

  • 파일의 읽기, 쓰기, 실행 권한을 변경하는 명령어
  • OS에 로그인한 사용자와 폴더/파일의 소유자가 같을 경우 chmod 명령어를 통해 권한을 변경할 수 있음
    • 만약 소유자와 로그인한 사용자가 다르다면 관리자 권한을 획득하여 권한을 변경할 수 있음
  • 권한 변경 방식 2가지
    1. Symbolic method
      • 더하기(+), 빼기(-), 할당(=)과 accessor 유형을 표기해 변경
    2. Absolute form
      • rwx를 3bit로 해석해, 숫자 3자리로 권한을 표현

Symbolic method

  • 엑세스 클래스, 연산자, 엑세스 타입으로 구분
엑세스 클래스연산자엑세스 타입
u (user)+ (add access)r (read)
g (group)- (remove access)w (write)
o (other)= (set exact access)x (execute)
a (all : u, g, o)
  • Ex1. init.java 파일에 대해 user와 group에 읽기, 실행 권한을 추가
chmod ug+rx init.java
  • Ex2. init.java 파일에 대해 other에 읽기, 쓰기 권한 부여
chmod o=rw init.java

Absolute form

  • 숫자 7까지 나타내는 3 bits의 합으로 표기
    • 사용자(user), 그룹(group), 또는 다른 사용자나 그룹(other)마다 rwx가 나타나고, 각 영역의 boolean 값으로 표기할 수 있음
권한표현하는 숫자
Read (r)4
Write (w)2
Execute (x)1
  • Ex. init.java라는 파일에 대해 user는 읽기, 쓰기, 실행 권한을, group은 읽기, 쓰기 권한을, other는 쓰기, 실행 권한을 가지도록 변경
chmod 763 init.java
profile
자바, 웹 개발을 열심히 공부하고 있습니다!

0개의 댓글