CodeStatesBootCamp/Review

Section 1 - Unit 2 : [Linux] 기초 Review

JKROH 2023. 2. 15. 12:57
반응형
Review 에서는 학습한 내용을 다시금 기록합니다.
Unit Review는 학습한 내용 중 기존에 알고 있었지만 정확하게 이해하지 못하던 정보와 새롭게 알게된 정보를 기록합니다. 추가적인 설명을 요하는 부분은 댓글로 남겨주세요.
Section Review는 전반적인 Section을 되돌아보고 학습했던 시간과 과정, 내용을 총괄하여 기록합니다.

<<Linux 기초>>


* 개요

  • CLI는 서버 컴퓨터와 소통하는 과정에서 필요로 한다.
  • 대부분의 서버 컴퓨터는 무료로 이용 가능한 Linux 운영체제로 구동된다.
  • 따라서 Linux 환경에서 CLI를 사용하는 것은 필수적으로 익숙해져야 한다.

 CLI 기본 명령어

* CLI 기본 명령어

- pwd(print working directory)

  • 현재 위치를 확인한다.

- mkdir(make directory)

  • 새로운 디렉토리를 생성한다.

- ls(list)

  • 특정 디렉토리에 포함된 파일이나 디렉토리를 확인한다.
  • ls -al 을 통해 디렉토리 내의 숨겨진 항목을 포함한 모든 항목과 각 항목들의 포맷을 모두 표시할 수 있다. 이 때 첫 단어가 d 이면 directory 를 - 이면 file을 나타낸다.

- cd(change directory)

  • 디렉토리를 변경한다.
  • cd '디렉토리명 ' 으로 사용할 수 있다.

- touch

  • 파일을 생성한다.
  • touch '파일명' 으로 사용할 수 있다.

- cat

  • 파일의 내용을 터미널에 출력한다.

- rm(remove)

  • 디렉토리 / 파일을 삭제한다.
  • 파일을 삭제하는 경우에는 rm '파일명.확장자'로 사용할 수 있다.
  • 디렉토리를 삭제하는 경우에는 rm -rf '디렉토리명' 으로 사용할 수 있다.

- mv(move)

  • 디렉토리 / 파일의 이름을 바꾸거나 위치를 옮길 때 사용한다.
  • mv '디렉토리 / 파일 명' '도착할 디렉토리의 이름 + /' 로 디렉토리 / 파일을 옮길 수 있다.
  • mv '디렉토리 /파일 명' '바꿀 디렉토리 / 파일 명' 으로 디렉토리 / 파일의 이름을 바꿀 수 있다.

- cp(copy)

  • 디렉토리나 파일을 복사할 수 있다
  • cp '파일명' '복사할 파일의 이름' 으로 파일을 복사할 수 있다.
  • cp -rf '디렉토리명' '복사할 디렉토리 이름' 으로 디렉토리를 복사할 수 있다.

* 관리자 권한과 경로

- 사용자와 관리자

  • 초기의 윈도우에는 관리자 권한이 따로 존재하지 않고, 컴퓨터를 다루는 모든 활동이 관리자 권한으로 진행되었다.
  • PC가 항상 관리자 권한으로 실행되면 악성코드에 취약하여 해킹을 당하기 쉽다.
  • 또한 시스템의 설정을 변경하는 프로그램 간의 충돌로 인해(현재는 관리자 권한으로 실행해야지만 시스템 설정의 변경이 가능) 블루 스크린이 자주 등장하였다.
  • 따라서 MS 에서는 Window Vista 버전부터 사용자 계정 컨트롤(UAC, User Account Control)을 탑재해 시스템을 관리하는 관리자와 PC를 사용하는 사용자를 구분하기 시작했다.
  • 관리자는 프로그램의 설치/변경/삭제의 권한을 가지고 있고, 사용자는 프로그램의 실행만 가능한 권한을 가지고 있다.
  • UAC는 접근 권한을 통해 시스템 설정의 변경을 차단하고 사용자를 보호한다.
  • Ubuntu는 기본적으로는 사용자가 절대 관리자 권한에 접근할 수 없다. 그러나 프로그램의 설치, 변경, 삭제 시 관리자 권한이 필요하기 때문에 특정 명령어를 통해 잠시 관리자 권한을 빌려온다.

- 절대경로와 상대경로

  • 절대경로
    • 명령어 pwd로 확인이 가능하다.
    • 기준점(루트디렉토리 : /) 으로부터의 절대적인 위치이다.
    • 특정 디렉토리나 특정 파일이 루트로부터 어떤 디렉토리를 통해 진입해야 접근 가능한지를 나타낸다.
    • /home/userName/directory 에서 루트 디렉토리는 home으로 home에 진입하면 userName을 확인 가능하다.
  • 상대경로
    • 현재 위치로부터의 상대적인 위치를 나타낸다.
    • 현재 위치한 폴더는 '.' , 상위 폴더는 '..' 으로 나타낸다.

- 관리자(root) 권한

  • 절대 경로의 기준점인 루트 디렉토리(/)는 Linux의 관리자의 영역이다. 일반 사용자의 권한으로는 어떠한 디렉토리나 파일도 생성/변경/삭제할 수 없다.
  • Linux 관리자의 가장 큰 특징은 어떠한 경우에도 일반 사용자에게 관리자 권한을 완전히 넘기지 않는다는 것이다. 프로그램의 설치/변경/삭제의 경우에만 해당 관리자 권한을 전달한다.
  • whoami : 현재 로그인 된 사용자를 확인하는 명령어
  • sudo : 관리자 권한을 획득하는 명령어. 잠시나마 관리자 권한을 가지기 때문에 항상 비밀번호와 함께 사용된다.

- 텍스트 에디터 nano

  • 원격 서버 환경에서 원격으로 텍스트 파일을 편집해야 하는 경우가 있기 때문에 터미널에서 에디터를 사용할 수 있어야 한다.
  • nano test.java 와 같은 명령어로 파일을 실행할 수 있다.

 패키지와 패키지 매니저

  • Linux의 패키지는 여러 파일이 담겨있는 하나의 상자로 윈도우의 압축파일과 같다.
  • 패키지의 구성은 기본적으로 다음과 같다.
    • 프로그램 파일
    • 프로그램 설치 파일
    • 프로그램 설치 설명서
    • 프로그램에 대한 정보를 담은 파일
  • 패키지 매니저를 사용하지 않고 여러 프로그램을 개별로 설치하기 위해서는 각 프로그램이 저장된 위치를 모두 알아야 한다. 또한 프로그램의 업데이트 여부를 확인하기 위해 주기적으로 저장소를 방문해야 한다.
  • 이는 프로그램이 많아지면 사실상 불가능해진다. 이러한 점들을 보완하고 패키지의 관리를 도와주는 도구가 패키지 매니저이다.
  • 패키지 매니저는 모든 패키지의 저장소 위치를 저장하고 있어, 특정 프로그램의 설치가 필요할 때 해당 프로그램이 포함된 패키지를 다운로드해 설치 프로그램을 실행한다. 이외에 설치된 모든 프로그램의 업데이트를 확인하거나 프로그램의 제거에도 활용할 수 있다.

* Ubuntu의 패키지 매니저 - 매니저 apt

  • Ubutu에는 기본적으로 apt라는 패키지 매니저가 내장되어 있다.

- apt 패키지 매니저의 주요 명령어

  • apt update
    • 관리자 권한을 필요로 한다.
    • 패키지의 목록(패키지를 다운로드 할 수 있는 저장소의 최신 정보)을 업데이트 한다.
    • 새로운 저장소를 추가하거나, 패키지를 설치하기 전에 최신 정보를 갱신한다.
    • 설치된 프로그램이 새로운 버전으로 갱신되지는 않는다.
  • apt list --upgradable
    • 업그레이드 가능한 패키지 목록을 출력한다.
  • apt upgrade
    • 관리자 권한을 필요로 한다.
    • 전체 패키지를 업그레이드 한다.
  • apt --only-upgrade install '패키지 명'
    • 관리자 권한을 필요로 한다.
    • 특정 패키지만 업그레이드 한다.
  • apt install '패키지 명'
    • 관리자 권한을 필요로 한다.
    • 패키지를 설치한다.
  • apt list --installed
    • 설치된 패키지를 확인한다.
  • apt search '검색어'
    • 패키지를 검색한다.
  • apt show '패키지 명'
    • 패키지의 정보를 확인한다.
  • atp remove '패키지 명'
    • 관리자 권한을 필요로 한다.
    • 패키지를 삭제한다.

 사용권한

* Read, Write, Execute 권한

소유자는 항목의 읽기/쓰기/실행이 모두 가능하며, 다른 사용자들은 읽기/실행만 가능하다.

- Type

  • 해당 항목이 파일인지 디렉토리인지를 나타낸다.
  • 파일은 - 로 나타낸다.
  • 디렉토리는 d로 나타낸다.

- User

  • 해당 항목의 소유자의 권한을 나타낸다.

- Group

  • 해당 항목의 다른 사용자 그룹의 권한을 나타낸다.

- Other

  • 파일에 대한 액세스 권한이 있는 다른 사용자들을 나타낸다.

* user, group, and other

- User

  • user는 파일의 소유자로, 기본적으로 파일을 만든 사람이 소유자가 된다. 따라서 user를 소유자라고 부르기도 한다.

- Group

  • group은 여러 user가 포함된 단위이다.
  • 한 group에 속한 모든 user는 파일에 대한 동일한 group 액세스 권한을 갖는다.
  • 여러 user가 접근해야 하는 프로젝트의 경우, 모든 user를 group에 추가하고 파일에 group권한을 할당하면 효율적으로 권한을 부여할 수 있다.

- Other

  • other는 파일에 대한 액세스 권한이 있는 다른 모든 user들이다.
  • 따라서 other권한은 global권한 설정이라고 볼 수 있다.

* chmod : 권한을 변경하는 명령어

  • chmod를 사용하여 디렉토리 / 파일의 읽기/쓰기/실행 권한을 변경할 수 있다.
  • OS에 로그인한 사용자와 항목의 소유자가 같을 경우에는 chmod만으로 권한을 변경할 수 있으며 다를 경우에는 sudo를 통해 관리자 권한을 획득해야 한다.
  • 권한을 변경하는 방식은 Symbolic Method와 Absolute Form이 있다.

- Symbolic Method

Symbolic Method의 사용 방법

  • Symbolic Method의 사용 예시는 다음과 같다.
    • chmod g-r '파일 명' : group의 읽기 권한을 제거한다.
    • chmod u+w '파일 명' : user에게 쓰기 권한을 부여한다.
    • chmod a=rw '파일 명' : user, group, other 모두 읽기, 쓰기 권한만을 가진다.
    • chmod o= '파일 명' : other는 어떠한 권한도 가지지 않는다.
    • chmod o+rx '파일 명' other에게 읽기, 실행 권한을 부여한다.
    • chmod a+rwx '파일 명' user, group, other 모두에게 읽기, 쓰기, 실행 권한을 부여한다.

-Absolute Form

Absolute Form의 사용법

  • Absolute Form의 사용 예시는 다음과 같다.
    • chmod 744 '파일 명' : 첫 번째 자리는 7 = 4+2+1이므로 user에게 읽기, 쓰기, 실행의 권한을 부여한다. 두 번째 자리는 4이므로 group에게 읽기의 권한을 부여한다. 세 번째 자리는 4이므로 other 에게 읽기의 권한을 부여한다.
    • chmod 635 '파일 명' : user에게 읽기, 쓰기의 권한을 부여한다. group에게 쓰기, 실행의 권한을 부여한다. other에게 읽기, 실행의 권한을 부여한다.
    • chmod 760 '파일 명': user에게 읽기, 쓰기, 실행의 권한을 부여한다. group에게 읽기, 쓰기의 권한을 부여한다. other는 어떠한 권한도 부여받지 않는다.
    • 숫자의 조합을 표로 정리하면 다음과 같다.


 환경변수

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

* 환경변수란?

  • 환경변수는 환경에 따라 프로그램의 동작에 영향을 미치는 값들을 의미한다.
  • A프로그램을 실행하기 위해 B 디렉토리의 특정 파일이 필요하다고 할 때 B 디렉토리의 위치는 A프로그램의 동작에 영향을 미칠 수 있다. 즉 'B 디렉토리의 위치'를 A의 환경변수라고 할 수 있다.
  • OS는 환경 변수에 따른 문제를 해결하고자 환경변수를 설정하고 프로그램이 환경변수를 찾아서 사용할 수 있도록 도와준다. 즉, 환경 설정 기능을 제공한다.

* Linux & Mac OS에서 환경변수 설정하기

  • OS와 관계없이 환경변수는 지역 환경변수와 전역 환경변수로 구분된다.
  • 지역 환경변수는 환경변수를 생성한 특정 사용자만 사용할 수 있는 환경변수이다.
  • 전역 환경변수는 모든 사용자가 사용할 수 있는 환경변수이다.
  • 리눅스와 맥은 환경변수를 임시 적용하거나 영구 적용할 수 있다.

- 지역 환경변수

  • '변수이름'='값'으로 지역 환경변수를 임시 적용할 수 있다.
  • 이 때, 등호 앞뒤에는 공백이 없어야 한다.
  • 예를 들어, hello=codestates 를 입력함으로써 hello라는 새로운 임시 지역 환경변수를 설정할 수 있다.

- 전역 환경변수

  • 명령어 export 를 이용하면 새로운 전역 환경변수를 추가할 수 있다.
  • 저장하고자 하는 변수가 공백을 포함하면 값 전체를 따옴표로 감싸주어야 한다.
  • 예를 들어, export hello="is greeting" 를 입력함으로써 hello라는 새로운 임시 전역 환경변수를 설정할 수 있다.
  • 이 때 export hello=is greeting 과 같이 입력하면 hello 에는 is greeting이 아니라 is 까지만 저장된다.

- 전역 및 지역 환경변수의 개별 값 확인하기

  • 설정한 환경변수의 값은 echo로 확인할 수 있다.
  • 환경변수 hello의 값을 확인하고 싶다면 echo $hello 처럼 환경변수의 이름 앞에 $를 붙이고 echo를 이용해 호출하면 된다.

* 환경변수 영구 적용하기

  • 환경변수를 영구 적용하면 터미널을 닫거나 PC를 재부팅해도 환경변수가 저장되어 사라지지 않는다.

- 지역 환경변수 영구 적용하기

  • 지역 환경변수의 적용 과정은 다음과 같다.
    • cd !를 통해 홈 디렉토리로 이동한다.
    • ls -al 을 통해 홈내의 모든 항목을 조회한다.
    • 이 때 조회 결과에 따라 목록에 .zshrc가 있으면 nano .zhrc를, .bashrc가 있으면 nano .bashrc를 입력하여 편집창을 연다.
    • 파일의 맨 아래에 설정하고자 하는 환경변수를 작성하고 저장한다.

- 전역 환경변수 영구 적용하기

  • 전역 환경변수의 적용 과정은 다음과 같다.
    • 먼저 변경하고자 하는 파일의 권한을 수정해야 한다.
      • 환경변수를 저장하고자 하는 파일은 루트 디렉토리의 etc 디렉토리 내의 profile 파일이다
      • 해당 파일의 권한을 sudo chmod 777 /etc/profile을 통해 변경해야 한다.
    • nano /etc/profile을 입력하여 편집창을 연다.
    • 파일의 맨 아래에 설정하고자 하는 환경변수를 작성하고 저장한다.

- export

  • export 는 생성된 환경변수의 이름과 값을 확인할 수 있는 명령어이다.

* Windows에서 환경변수 설정하기

  • 다음의 링크를 통해 확인할 수 있다.

 

반응형