[Server] 리눅스 기초: 기본적인 명령어들과 그 역할

Linux?

 


Linux는 컴퓨터 운영체제(OS)의 한 종류로, 

무료로 사용할 수 있는 오픈 소스 소프트웨어이며 안정적인 장점을 통해 서버 구축에 자주 사용된다.

또한, 널리 사용되므로 오픈 소스 생태계가 잘 되어 있고, 커뮤니티 지원이 좋다는 장점이 있다.

 

📌 Linux의 구조

1. 애플리케이션

일반적으로 사용하는 바이너리, 명령어, 빌드된 파일들을 통틀어서 애플리케이션이라고 함

사용자가 직접 상호작용하는 단계이고 다양한 프로그램 언어로 빌드된 앱들을 포함

  • 사용자 인터페이스 제공: 사용자가 쉽게 상호작용할 수 있는 인터페이스를 제공
  • 시스템 리소스 사용

2. 쉘

애플리케이션이 커널에서 사용하는 명령어 등을 가려주고 쉘 자체를 사용해 스크립트를 만들 수도 있음

  • 명령어 해석: 사용자가 입력한 명령어를 해석하고 실행하기 위해 시스템 콜을 사용
  • 스크립트 실행: 쉘 스크립트를 통해 여러 명령어 조합이나 여러 라인의 명령어를 일괄 실행할 수 있음
  • 환경 관리: 쉘 내에서 환경 변수를 설정하고 관리할 수 있음

3. 커널

운영체제의 핵심 부분으로 하드웨어와 직접 상호작용하는 단계

시스템자원(CPU, Memory 등)을 관리하고 애플리케이션/쉘 ↔ 하드웨어 간의 통신을 중재

  • 프로세스 관리: 프로세스 생성, 스케쥴링, 종료 등을 관리
  • 메모리 관리: 가상 메모리, 페이징, 스왑 메모리등을 통해 효율적으로 메모리를 관리함
    • 가상 메모리: 보조기억장치를 이용해 실제 사용 가능한 메모리보다 더 많은 메모미를 사용가능하게 하는 기법
    • 페이징: 메모리를 좀 더 효율적으로 사용하기 위해 고안된 기법, 메모리를 일정 크기만큼 잘라서 사용하는 기법
    • 스왑 메모리: 실제로 사용하지 않는 나머지 부분(페이지)을 보조기억장치의 특정 영역(스왑 영역)으로 옮겨서 공간을 확보하는 기법
  • 파일 시스템 관리: 파일의 저장, 접근, 조작을 지원하는 파일 시스템을 관리
  • 장치 관리: 하드웨어 장치와의 상호작용을 관리하고, 장치 드라이버를 통해 이를 추상화
  • 보안 및 접근 제어: 사용자와 시스템 자원 간의 보안 정책을 관리하고 적용

 

 

 🔎 Linux 종류

Ubuntu

  • Debian 계열 중에 가장 유명한 배포판
  • 초보자도 쉽게 쓰도록 설계하고 직관적인 GUI를 제공
  • 방대한 커뮤니티 덕분에 래퍼런스가 많아 문제해결에 용이
  • 2년단위의 버전 출시 및 각 버전당 5년간의 유지보수 → 보안성, 안전성

CentOS

  • RHEL(RedHot Enterprise Linux)계열로 안정성과 보안이 뛰어나 주로 기업에서 많이 사용
  • Ubuntu와 마찬가지로 커뮤니티가 방대, 래퍼런스가 많음
  • CentOS 7까지는 무료, 8부터는 유료

Arch Linux

  • 경량화와 커스터마이징에 특화된 OS
  • 경량화가 핵심이라 용량이 매우 작음

위의 세가지 외에도 많은 종류가 있음..

 

 

🔑 Linux에서의 권한 및 소유자

 

Linux에서는 모든 파일과 디렉토리는 사용자(user)그룹(Group)에 의해 소유됨

  • 사용자(User): 파일을 생성한 주체로써 생성된 파일은 기본적으로 사용자에 의해 소유됨
  • 그룹(Group): 여러 사용자가 속해있는 그룹으로 기본적으로 그룹 내의 같은 사용자들은 권한을 공유할 수 있음
소유자가 Yong:SKZ = Yong이라는 사람과 SKZ라는 그룹에 의해 소유됨

 

 

직접 해보기

sudo passwd
su root

 

사용자 계정의 비밀번호를 생성 후, root로 사용자를 전환함

전환할 때 비밀번호 확인 필요

adduser yongbok

yongbok이라는 유저를 추가해줌

비밀번호만 설정해주고, 나머지는 엔터키로 생략 가능

cat /etc/group

현재 있는 리스트 확인

groupadd skz

skz라는 그룹 생성

usermod -aG skz yongbok

skz라는 그룹에 yongbok유저 넣어주기

그룹 먼저, 유저 나중에 나와야함

cat /etc/group

추가된 것 확인 가능

 

🔓 파일의 권한 

  • R(Read): 읽기 권한, cat으로 파일 내용 확인 가능
  • W(Write): 쓰기 권한, vim / echo / sed로 파일 수정 가능
  • X(eXecute): 실행 권한, sh / bash에 의해 실행 가능

직접 해보기

cd /tmp
echo 'echo Hello World!' > hello.sh
cat hello.sh

tmp폴더 위치에서 'echo Hello World!'라는 내용의 hello.sh파일 생성

cat함수를 통해 읽기

./hello.sh

실행해보기

실행했을 때에는 권한이 없어서 거절됨

ls -al hello.sh

hello.sh의 상태를 확인해보기

각 요소가 의미하는 것은?

더보기
  1. 첫 번째 문자 (-): 파일의 유형을 나타냅니다.
    • -: 일반 파일
    • d: 디렉토리
    • l: 심볼릭 링크
    • c: 문자 장치 파일
    • b: 블록 장치 파일
  2. 다음 세 문자 (rw-): 파일 소유자(즉, 파일을 만든 사용자)의 권한을 나타냅니다.
    • r: 읽기 권한 (read)
    • w: 쓰기 권한 (write)
    • x: 실행 권한 (execute)
    • -: 해당 권한 없음
  3. 그다음 세 문자 (r--): 파일 그룹의 권한을 나타냅니다.
    • r: 읽기 권한
    • w: 쓰기 권한
    • x: 실행 권한
    • -: 해당 권한 없음
  4. 마지막 세 문자 (r--): 기타 사용자(즉, 소유자와 그룹에 속하지 않는 모든 사용자)의 권한을 나타냅니다.
    • r: 읽기 권한
    • w: 쓰기 권한
    • x: 실행 권한
    • -: 해당 권한 없음

여기서는 파일을 소유한 사람도 rw권한 밖에 없기때문에 실행인 x를 하지 못함

그래서 x를 추가해줘야 함

 

chmod +x hello.sh
ls -al hello.sh

아까와 달리 x가 생긴 것을 확인할 수 있음

그럼 이제 실행이 되는지 확인

./hello.sh

 

반대로 권한을 삭제하려면

chmod -r hello.sh