관리 메뉴

제뉴어리의 모든것

[Section1][Linux] 기초 [추후 보완] 본문

코드스테이츠/정리 블로깅

[Section1][Linux] 기초 [추후 보완]

제뉴어리맨 2022. 6. 30. 22:53

리눅스란?

윈도우와 같은 OS의 한 종류로 무료이면서 전세계적으로 널리 쓰이는 OS의 한 종류.

 

리눅스와 함께 알아야 하는 개념

  • 커널
    운영체제에 존재하며 하드웨어를 제어하는데 운영체제의 대부분을 차지한다.


  • 콘솔
    하드웨어이며 일종의 입출력장치이다.
    물리적 터미널로써 불린다.


  • 터미널
    사용자와 컴퓨터간의 소통을 위한 인터페이스(접점)를 제공.
    쉘을 사용하기 위해 필요한 프로그램



  • 우리가 사용하는 언어로 터미널과 직접 소통하기에는 무리가 있기에 중간에 
    사용자 명령어를 기계어로 번역하여주는 번역기
    cmd가 대표적.
  • 프롬프트
    cmd창에 사용자가 명령을 내리기를 기다리는 명령줄 대기모드

  • 패키지 :
    여러 파일의 압축상태로 압축안에는
    프로그램 파일, 프로그램 설치파일, 프로그램 설치 설명서, 프로그램에 대한 데이터
    들이 존재한다.



리눅스의 명령어

  • pwd
    print working directory의 약자로 현재 위치의 경로는 출력한다


    • ls
      현재 위치의 존재하는 파일, 디렉토리 목록을 출력한다
      ex : ls -l (파일, 폴더의 권한정보나 만든시점 같은 부수 정보까지 보여줌)

      권한정보 해석 방법 :
      d : 디렉토리임
      - : not 디렉토리임 (파일)
      r : 일기
      w : 쓰기
      x : 실행


  • mkdir [디렉토리명] 
    디렉토리를 생성한다
    생성할 디렉토리명에 공백이 있을 경우 \ (역슬래쉬와 공백) 를 사용하거나 ""로 묶도록 한다

  • touch [파일명]
    파일을 생성한다

  • cat [파일명]
    파일의 내용을 출력하여 보여준다.

  • echo [문자열]
    문자열을 어떤 대상에 출력한다.
    echo helloworld : 쉘창에 단순히 helloworld를 출력하여 준다
    echo helloworld > text.txt : text.txt 파일에 helloworld란 문자열을 출력(입력하여 저장) 하여 준다

  • cd [이동할 경로]
    현재 작업중인 디렉토리(현재위치)를 입력한 이동할 경로로 이동시켜준다

  • rm [삭제할 파일명 | 디렉토리명]
    파일은 그냥 바로 삭제 되지만, 디렉토리 삭제시에는 -rf 옵션을 넣어주어야 한다
    ex : rm -rf [디렉토리명] 
    f 옵션으로 질문과정 없이 무조건 삭제가 되므로 신중히 할것.

    -모든 파일 삭제 : rm * (디렉토리가 포함 되어 있을 경우 위에 설명처럼 옵션 추가)
  • mv 
    - mv [이동할대상] [이동될위치] (대상 이동시킬때)
    이동할 대상은 파일, 폴더 모두 가능하다.
    이동될 위치는 절대경로, 상대경로 모두 가능하다

    mv [원본이름] [변경할이름] (이름 변경시)
    ex :
    1. mv hellojava.java fighting.java (현재 위치에서 이름 바꾸기)
    2. mv hellojava.java ../fighting.java (상위 경로로 이름 바꿔 이동시키기)

    - 파일 이동과 복사의 원리
    파일을 복사할때는 원본 파일을 그대로 복사하여 이동할 위치에 파일을 생성하지만
    파일을 이동할때는 원본 파일을 임시 버퍼공간에 복사하고 원본파일을 삭제한뒤 이동할 위치에 생성한다. (삭제과정이 추가된다)

  • 경로 나타내기
    . : 현재 경로
    / : 폴더 내부
    .. : 상위 경로
    ../.. : 상위 경로의 상위경로
    ~ : root 경로에서 home 디렉토리에 있는 사용자 디렉토리까지의 경로를 축약한 의미 (홈 디렉토리라고 한다)
    ex : january란 사용자가 cd ~ 입력시
    -> /home/january 로 이동됨. (january 사용자의 home 디렉토리가 /home/january인 경우)

    ex : ./ : 현재 폴더 내부를 의미

  • whoami 
    현재 쉘을 이용하여 터미널과 소통하는 사용자 유저이름 보여줌 (지금 whoami란 명령어를 입력한 사용자)

  • sudo
    명령어를 입력할때 맨 앞쪽에 sudo만 추가로 입력하면 해당 명령어를 관리자 권한으로 실행시킴을 나타냄
     
  • chmod
    파일, 폴더에 대한 권한 변경 명령어

    사용방법

    1. Symbolic method
    chmod [액세스 클래스][연산자][액세스타입] 파일명|폴더명


Access classOperatorAccess Type

u (user) + (add access) r (read)
g (group) - (remove access) w (write)
o (other) = (set exact access) x (execute)
a (all: u, g, o)

ex : 

chmod g-r filename # removes read permission from group
chmod g+r filename # adds read permission to group
chmod g-w filename # removes write permission from group
chmod g+w filename # adds write permission to group
chmod a=rw hello.java # -rw-rw-rw-
chmod u= hello.java # ----rw-rw-
chmod a+rx hello.java # -r-xrwxrwx
chmod go-wx hello.java # -r-xr--r--
chmod a= hello.java # ----------

2. Absolute form
사용자, 그룹, 또는 다른 사용자나 그룹마다 rwx 가 나타나고, 각 영역의 boolean 값으로 표기할 수 있음.

PermissionNumber

Read (r) 4
Write (w) 2
Execute (x) 1

만약, user는 rwx 를, group과 other은 r-- 로 권한을 변경하려고 한다면, 위 표에 나와있는 숫자의 합을 user, group, other 순으로 입력하여 사용합니다.

# u=rwx (4 + 2 + 1 = 7), go=r (4 + 0 + 0 = 4)
chmod 744 hello.java # -rwxr--r--

 

  • 소유자, 그룹, 기타 개념
    소유자 : 파일을 만든 사람.
    소유자가 즉 유저.

    그룹 : 여러 유저를 포함 하는 범위로.
    그룹에 속한 모든 유저는 같은 권한을 가진다.

    기타 : 파일에 대한 권한이 있는 소유자 이외의 유저. 해당 권한을 풀면 권한이 global해짐.

 

  • 패키지매니저 명령어

  1. apt update (관리자권한)
    패키지 목록 갱신
    • 패키지를 다운로드할 수 있는 여러 저장소의 최신 정보를 업데이트합니다. 새로운 저장소를 추가하거나, 패키지를 설치하기 전, 최신 정보를 갱신합니다.
    • 설치된 프로그램이 새로운 버전으로 변경되지 않습니다.
  2. apt list --upgradable
    업그레이드 가능한 패키지 목록을 출력: apt list -—upgradable

  3. apt upgrade (관리자권한)
    전체 패키지 업그레이드(버전 업)
  4. apt --only-upgrade install [패키지명] (관리자권한)
    특정 패키지만 업그레이드(버전 업)

  5. apt install [패키지명] (관리자권한)
    패키지 설치

  6. apt list --installed
    설치된 패키지 보기

  7. apt search [검색어]
    패키지 검색

  8. apt show [패키지명]
    패키지 정보 확인

  9. apt remove [패키지명] (관리자권한)
    패키지 삭제

    + apt 대신에 apt-get을 사용하여도 된다.
    - apt와 apt-get의 차이점
    사용의미는 같다.
    패키지 매니저로 무언가 작업을 할때 쓰여지는 그냥 명령어이다.
    단지, apt-get은 기존부터 존재하던 것이다.
    그러므로 apt-get은 디테일은 기능이 더 많고 다양하다. 그리고 apt는 apt-get의 기능 중 주로 많이 쓰이는 기능들만 모아 놓은것이고 명령어 실행시 작성상황 표시를 보다 친사용자적으로 표시한다.
    참조 : https://coding-groot.tistory.com/90




  • 사용자 추가 명령어

  1. useradd
    1. useradd [option] 사용자계정이름 :
    (사용자 계정의 이름만 등록함, 비밀번호, 홈 디렉토리 등은 생성되지 않음, 우분투만 홈 디렉토리를 설정해 주지만 실제 폴더를 만들어주진 않음)

    옵션들
    -p : 비밀번호 같이 지정
    -d : 홈디렉토리 같이 지정
    ex : useradd januaryman -d /home/sub_home/januaryman
    (주의할 점은 최종 디렉토리만 만들어 주므로 중간 경로의 폴더들을 미리 생성해줘야함)


    2. passwd [사용자계정이름] : 해당 이름 사용자의 비밀번호 설정
    (최초에 useradd만 한 경우 비밀번호 설정이 안되어 있어서 접속 불가)

    참조 사이트 : 
    https://jhnyang.tistory.com/10

     
  2. adduser
    계정 생성과 동시에 유저 홈 디렉토리까지 생성됨.

    계정 생성
    1. adduser [생성될 계정 아이디]

    - 생성하며 발생되는 질문사항
    1) Full Name : 계정의 소유자 이름

    2) Room Nuber : 진짜 말 그대로 Room Number, 엔터로 스킵 가능

    3) Work Phone : 회사 연락처, 엔터로 스킵 가능

    4) Home Phone : 집 연락처, 엔터로 스킵 가능

    5) Other : (뭔지 모르겠음), 엔터로 스킵 가능

    참조 : https://kbs4674.tistory.com/134


  • 사용자 삭제 명령어
    1. 계정+홈 디렉토리 삭제
    userdel -r 계정명

    2. 계정만 삭제
    userdel 계정명

    참조 : https://zetawiki.com/wiki/%EB%A6%AC%EB%88%85%EC%8A%A4_%EA%B3%84%EC%A0%95_%EC%82%AD%EC%A0%9C_userdel

  • ps [옵션]
    현재 프로세스(실행중인 프로그램) 확인

    옵션값 :
    - a (All processes) : 프로세스 현황 표시
    - u (User) : 유저 지향적 (top 포맷)
    - x : 터미널 제어 없이 프로세스 현황 보기
    - e (All processes) : 현재 시스템 내에서 실행중인 모든 프로세스 정보를 출력
    - f (Full listing) : 모든 정보 확인
    - o (User) : 유저 포맷팅
     

    * ps -f 명령으로 나타나는 항목들의 의미
    UID 
    프로세스의 실행 / 소유자 아이디 

    PID 
    프로세스의 고유 번호(Process Identification Number) 

    PPID 
    부모 프로세스의 PID(Parent PID) 


    프로세스 우선순위 

    STIME 
    프로세스가 시작된 시간 

    TTY 
    프로세스와 연결된 터미널 

    TIME 
    실행에 걸린 시간 

    CMD 
    프로세스를 생성하는데 내린 명령 


    참조 : https://eehoeskrap.tistory.com/245 [Enough is not enough:티스토리]


  • 사용자 목록 확인
    1. 전체 목록 확인
    cat /etc/passwd

    2. 사용자 아이디만 확인
    cut -f1 -d: /etc/passwd

    3. useradd를 통해 등록된 계정만 보기
    grep /bin/bash /etc/passwd

    + 아이디만 보기
    grep /bin/bash /etc/passwd | cut -f1 -d:

    참고 사이트 :
    https://overcode.tistory.com/entry/%EB%A6%AC%EB%88%85%EC%8A%A4-%EC%82%AC%EC%9A%A9%EC%9E%90-%EB%AA%A9%EB%A1%9D-%ED%99%95%EC%9D%B8-Linux-User-List
  • 사용자 전환 명령어
    1. 일반 사용자 -> 관리자
    셸에 접속하여 일반 사용자 접속 상태에서
    sudo su

    2. 관리자 -> 일반 사용자
    su [사용자명]

    3. 일반 사용자 -> 일반 사용자

    참고 사이트:
    https://reubwe.tistory.com/375
    https://mytory.net/archives/27

  • wget 명령어
    apt install wget (관리자권한) 을 사용하여 우선 패키지를 설치하여야 한다 
    www와 get에서 가져온 명령어로
    쉽게 말해 특정 패키지의 웹상 url을 입력하여 패키지를 바로 내려받을 수 있다
    사용방법 : 
    wget [url]

  • nano 사용법
    [추후 정리]

 

기타 배운점