리눅스와 친해지기

sarang_daddy·2023년 1월 8일
0

리눅스(Linux)

목록 보기
1/2
post-thumbnail

리눅스란?

  • 컴퓨터 OS 커널의 일종인 리눅스 커널, 또는 리눅스 커널을 사용하는 운영체제를 가리키는 말이다.
  • 소스 코드가 공개되어 있는 대표적인 오픈 소스 소프트웨어다.
  • 컴퓨터 역사상 가장 많은 참여자가 관여하고 있는 오픈 소스 프로젝트다.
  • 모바일 운영체제로 유명한 안드로이드 역시 리눅스 커널을 가져다 쓰고 있다.

데스크톱/랩톱 용도뿐만 아니라 웹 서버, 클라우드, 안드로이드 및 포터블 게이밍 콘솔등의 모바일 기기, 각종 임베디드 기기 (가전용, 상업용, 산업용, 차량용 기기)등을 구동하는 운영 체제다.

리눅스를 사용하는 이유

리눅스/유닉스 개발 환경은 백엔드 개발자들에게 익숙한 개발 환경이지만 요즘은 윈도우즈나 macOS에서도 비슷한 환경을 그대로 제공한다. 터미널로 서버 환경에 원격으로 접속해서 원하는 작업을 할 수 있도록 친숙해져야 한다.
리눅스를 직접 설치해서 쉘 환경에 익숙해지고 스크립트로 원하는 동작을 자동화할 수 있어야 한다.

리눅스와 친해지기

1. 리눅스 설치

2. ssh설정

Secure SHell(SSH) 란?

클라이언트가 네트워크에 접근할 수 있도록 해주는 프로토콜은 다양한데, 그 중 SSH는 두 장치간 통신을 하기위해서 shell을 사용하는 프로토콜이다. shell은 OS와 통신을 할 수 있도록 해주기때문에 서버에 원격으로 접속이 가능하다.

SSH의 주요 기능은 많지만 그 중에서 SSH의 가장 큰 이점은 암호화(Encryption)이다. 암호화를 통해서 Host와 Client 간의 데이터 전송의 보안을 보장해줄 수 있다.

Host는 우리가 접근을 할 수 있는 원격 서버를 의미하고 클라이언트는 우리가 사용하는 컴퓨터라고 말할 수 있다.

sheel 이란?

Shell은 명령어와 프로그램을 실행할 때 사용하는 인터페이스다.
사용자로부터 명령을 받아 해석하고 프로그램을 실행하는 역할을 한다. (다리 역할)

<대표적인 쉘>

  • bash
    리눅스의 표준 Shell. 유닉스 Shell의 오리지날인 sh Shell을 기반으로 만들어졌다.

  • zsh(z-shell)
    bash와 마찬가지로 sh의 확장된 버전이며, 철자 교정 및 대략적인 완성이 가능하며 플러그인 및 테마 지원이 가능하다. Mac OS에서는 카탈리나 이후 기본 Shell이 zsh로 변경되었으며, Oh-My-Zsh라는 플러그인과 프레임워크가 가장 널리 사용되고 있다.

<쉘의 기본 명령어>

  • man : 다양한 리눅스 명령어의 사용법 확인
  • mkdir : 새로운 디렉토리 생성
  • ls : 디렉토리 내용, 리스트 확인
  • pwd : 현재 디렉토리 확인
  • echo : 변수 값, 문자열 등 텍스트를 출력
  • bash : shell script 를 실행
  • sudo : 관리자 권한으로 특정 명령을 수행할 때 사용
  • cd : 디렉토리 변경
  • cat 파일명.확장자 : 파일 내용 출력
  • less 파일명 : 긴 파일의 내용을 끊어 표시
  • q: 종료
  • g: 처음
  • G: 끝
  • /단어 : 문서에서 '단어'검색
  • space, enter, 화살표, hjkl : 페이지 이동
  • history : 명령어 이력 표시
  • cp 파일명.확장자 : 파일 복사
  • mv 파일명.확장자 : 파일 이동, 파일명 변경에도 사용가능
  • rm 파일명.확장자 : 파일 즉시 제거
  • find 디렉토리 -name "파일이름" : 지정한 디렉토리와 그 하위 디렉토리에서 해당 파일을 검색
  • touch 파일이름.확장자 : 0바이트 파일 생성
  • clear : console 명령어를 모두 지움

ssh 설치 및 서버 사용하기

ssh설치를 위해서는 root로 전환해야한다.

  • $ sudo -s // root로 전환
  • $ apt-get install ssh // ssh 설치
  • $ service ssh start // 서버 시작
  • $ service ssh status // 현재 상태 확인

사용할 계정 생성 및 전환하기

  • $ sudo adduser [username] // 새로운 계정을 생성한다.
  • $ su - [username] // root 계정 -> 사용자 계정 전환
  • $ su - // 사용자 계정 -> root 계정 전환

로컬 컴퓨터에서 가상서버(ssh)로 접속하기

먼저 가장서버의 ip를 확인해야한다.

  • $ sudo apt-get install net-tools // 서버도구 설치
  • $ ifconfig // ip확인 코드

로컬 컴퓨터 터미널에서 위에서 확인한 가상서버로 접속한다.
아래는 연습단계로 게스트 포트인 22로 접속한 모습이다.

  • ssh [서버 사용자ID]@[서버HostName or IP]
    Port를 기본 22번으로 사용하는 경우 (추천 X)
  • ssh [서버 사용자ID]@[서버HostName or IP] -p [Port 번호]
    Port를 변경해 사용하는 경우 (추천 O, 보안상 취약)

3. 가상서버에서 작업해보기

접속 아이디로 디렉토리 만들어 보기

접급권한모드 변경하기

접근권한이란

리눅스는 여러 사용자가 로그인해서 같은 공간에서 작업을 하기 때문에 모든 파일에는 소유자가 존재한다. 그렇기 때문에 특정 사용자에게만 파일에 대한 접근이 허가되어야 하는 경우가 존재하는데, 이런 경우를 위해 리눅스에서 접근권한(퍼미션) 기능을 제공하고 있다.

접근권한 확인하기

  • ls -al 명령어를 실행하면 디렉토리의 접근권한을 확인 할 수 있다.
  • ex) (d)(rwx)(rwx)(r-x) => (d):파일종류 (rwx):사용자 (rwx):그룹 (r-x):모든이용자

접근권한 수정하기

chmod 명령어와 문자 or 숫자를 이용하여 접근권한을 수정할 수 있다.

문자를 이용한 경우
chmod g+rw testfile // 해당 그룹에 속하는 유저에게 읽기와 쓰기 권한을 준다.
chmod u+r testfile // 해당 파일을 소유한 사람에게 읽기 권한을 준다.
chmod ugo+rwx testfile // 소유자, 그룹, 모든 유저에게 읽기 쓰기 실행 권한을 준다
chmod g-rw testfile // 해당 그룹에 속하는 유저에게 읽기와 쓰기 권한을 삭제한다.
chmod u-r testfile // 해당 파일을 소유한 사람에게 읽기 권한을 삭제한다.
chmod ugo-rwx testfile // 소유자, 그룹, 모든 유저에게 읽기 쓰기 실행 권한을 삭제한다.

숫자를 이용한 경우

  • 4 = Read 2 = Write 1 = Execute
    chmod 755 testfile //소유자 :읽기 o 쓰기 o 실행 o, 그룹 : 읽기 o 실행 o, 모든유저: 읽기 o 실행 o
    chmod 421 testfile //소유자 :읽기 o , 그룹 : 쓰기 o, 모든유저: 실행 o
  • <경우의 수>
    rwx = 4 + 2 + 1 = 7
    rw- = 4 + 2 + 0 = 6
    r-x = 4 + 0 + 1 = 5
    r-- = 4 + 0 + 0 = 4
    -wx = 0 + 2 + 1 = 3
    -w- = 0 + 2 + 0 = 2
    --x = 0 + 0 + 1 = 1

  • cs16디렉토리를 사용 할 수 있도록 접근권한을 수정하였다.

로컬 컴퓨터로 가상환경에서 작업하기

가상서버에 만들었던 디렉토리에 git clone 하기

clone한 디렉토리에 새로운 폴더 만들기

새로운 파일 만들기

profile
한 발자국, 한 걸음 느리더라도 하루하루 발전하는 삶을 살자.

0개의 댓글