본문 바로가기

Tech Stack/Linux

우리 FISA 4주차 복습 - Linux 1

LInux 실습을 하기 위해 docker, wsl, ubuntu를 활용 하였습니다.

 

     VM머신은 무겁고 배포가 어려운 단점이 있기 때문에, Docker를 활용하는게 좋습니다.

  • Host OS와 하드웨어 자원을 공유하여 프로세스가 필요한 만큼만 사용합니다. 하드웨어를 관리하는 Hypervisor가 없기 때문에 VM에 비해 성능이 개선됩니다.
  • 도커 환경 설정
    docker version
    docker ps 
    docker ps -a # 현재 존재하는 컨테이너 목록
    docker run --name apa000ex1 -d httpd
    docker run --name apa000ex2 -d -p 8080:80 httpd 
                                    # (호스트포트번호:컨테이너포트번호)
    docker ps 
    docker ps -a # 현재 존재하는 컨테이너 목록
    docker stop CONTAINERID또는NAME # 앞글자 일부만으로도 종료 가능
    docker rm CONTAINERID또는NAME

    docker run -d --name ubuntu -p 22:22 -it --privileged ubuntu:22.04
                                     # --privileged 특정 권한들에 접속
    docker exec -it ubuntu /bin/bash

    # 새 우분투 리눅스 컨테이너 띄우기
    docker run -d --name ubuntu2 -p 23:22 -it --privileged ubuntu 
                                     # --privileged 특정 권한들에 접속
    docker exec -it ubuntu2 /bin/bash


    # 서버1에서
    apt-get update 
    apt-get install net-tools vim openssh-server ssh sudo info man-db less psmisc nano tzselect locale

    # /etc/ssh/sshd_config에서 PermitRootLogin이라는 
    # 옵션을 찾아 옆에 있는 값을 yes로 변경해주세요.

    passwd root  
    # 비밀번호를 지정해주지 않았기때문에 외부 접속용으로 이번 기회에 만들어줍니다
    service ssh start

    22번도 ubuntu01의 리눅스, 23번도 ubuntu02의 리눅스 
    # 서버2에서
    ssh root@127.0.0.1
  • 두대의 리눅스 서버를 생성 함

 

리눅스는 다음과같이 커널과 셀을 분리해 놓았습니다.

셸과 커널을 분리하면 커널을 바꾸지 않고 셸만 바꿀 수 있게 되어 리눅스 외 OS(FreeBSD, NetBSD, Solaris 등)를 사용할 때도 별도의 설치나 설정 없이도 셸만 이식하면 똑같이 사용 할 수 있습니다. 또한 셸을 사용하면서 에러가 발생하거나 지나치게 높은 부하가 발생해도 본체인 리눅스 커널에 미치는 영향을 최소한으로 줄일 수 있습니다.셸과 커널을 분리하면 커널을 바꾸지 않고 셸만 바꿀 수 있게 되어 리눅스 외 OS(FreeBSD, NetBSD, Solaris 등)를 사용할 때도 별도의 설치나 설정 없이도 셸만 이식하면 똑같이 사용 할 수 있습니다. 또한 셸을 사용하면서 에러가 발생하거나 지나치게 높은 부하가 발생해도 본체인 리눅스 커널에 미치는 영향을 최소한으로 줄일 수 있습니다.

 

 

- 사용자 관련 명령어

$ cat /etc/shadow 
$ useradd user01 -- 새 사용자 추가
$ su user01

-rw-r----- 1 root shadow 901 Apr 22 18:14 /etc/shadow

 

sudo 명령어: 슈퍼사용자의 권한을 잠시 빌려오기

 

 

각 디렉토리의 역할

 

/bin

  • 일반 사용자 및 관리자가 사용하는 명령어의 실행 파일이 배치되어 있는 디렉터리
  • /bin는 특히 시스템과 관련된 중요도가 높은 명령어를 포함하고 있음

/dev

  • 디바이스 파일이 배치되어 있는 디렉터리
  • 디바이스 파일이란 디스크나 키보드 등 하드웨어를 다루기 위한 특수 파일

/etc

  • 리눅스에서 돌아가는 다양한 애플리케이션의 설정 파일이 etc 아래에 배치됨
  • 애플리케이션뿐만 아니라 리눅스 자체의 설정 파일도 이곳에 있음
  • 리눅스를 운영하고 관리할 때 무척 중요한 디렉터리

/home

  • 사용자별로 할당되는 홈 디렉터리가 배치되는 디렉터리
  • 홈 디렉터리란 사용자별로 할당되는 개인용 디렉터리를 말함
  • 사용자 이름이 디렉터리 이름으로 사용됨
  • 예를 들어 사용자 이름이 yj라면 사용자의 홈 디렉터리는 /home/yj가 됨
  • 사용자는 홈 디렉터리 안에서 자유롭게 파일이나 디렉터리를 작성해 작업할 수 있음

/sbin

  • /bin와 비슷하게 실행 파일을 포함하는 디렉터리
  • 이 디렉터리에는 관리자용 명령어가 포함되어 있음
  • 예를 들어 시스템을 종료시키는 shutdown 명령어 등

/usr

  • 설치한 애플리케이션의 실행 파일, 문서, 라이브러리 등이 이 디렉터리에 포함
  • /usr 아래에는 bin, sbin, etc 등이 있어 루트 디렉터리와 구조가 비슷함

/var

  • 변화하는(variable) 데이터를 저장하기 위한 디렉터리
  • 애플리케이션 실행 중에 만들어진 데이터나 로그, 메일 등이 이곳에 저장
  • /var에는 많은 파일이 기록되므로 용량이 부족해질 수도 있으니 시스템을 관리할 때 주의해야 함

 

각종 명령어

  1. touch (터치): 새로운 빈 파일을 생성하거나 기존 파일의 타임스탬프를 업데이트합니다. $ touch new_file.txt
    • 원래 touch 명령어는 파일의 타임스탬프를 갱신하기 위한 명령어입니다. 이때 대상이 되는 파일이 존재하지 않으면 새롭게 파일을 만듭니다. 그래서 단순히 빈 파일을 만드는 용도로도 많이 사용합니다. touch 명령어로 이미 존재하는 파일을 지정해도 내용이 지워지거나 하지는 않고 시간만 변경됩니다. $ touch file.txt
    • **$ touch file{1..100}**
  2. grep 활용
  • ps -ef ps -ef|grep ssh grep man /etc/passwd # 문자열 그대로
  • grep -i man /etc/passwd # 대소문자 구분 없이
  • grep -v man /etc/passwd # 해당 문자열이 들어있지 않은 경우-반대되는 경우만 검색
  • cat /etc/passwd|grep nologin # 시스템이 사용하는 계정을 출력
  • cat /etc/passwd|grep -v nologin # 사람이 로그인하고 있는 계정을 출력
  • grep -e 검색어1 -e 검색어2 -e 검색어3 # 여러개 검색어 사용해서 검

'Tech Stack > Linux' 카테고리의 다른 글

우리 FISA 4주차 복습 - Linux 3  (29) 2023.12.20
우리 FISA 4주차 복습 - Linux 2  (0) 2023.12.20