대외활동/42서울

[42서울] Born2beroot 개념 정리 2

Campus Coder 2024. 3. 4. 22:05
728x90
반응형

목차

  1. 파티션 - LVM
  2. sudo
  3. UFW
  4. SSH
  5. cron
  6. 과제 tip

 

명령어가 동작하지 않는다면 앞에 sudo를 추가해 보세요.

 

파티션 - LVM

하드디스크 파티션은 하드디스크를 여러 공간으로 나누어 사용하는 기술이다.

 

파티션 확인

lsblk

 

LVM

  • LVM(Logical Volume Manager)은 공간을 효율적으로 관리하기 위한 커널의 한 부분이다.
  • LVM은 여러 디스크 공간 및 자투리 공간을 합쳐서 하나로 만들 수 있게 해 준다.
  • 다른 디스크의 공간을 추가해서 사용 가능하다.

 

예시를 통해 알아보자.

기존 파티션은 하드디스크를 물리적으로 A구역, B구역... 이런 식으로 나누어 사용하는 반면,

LVM은 물리적인 하드디스크를 작은 단위로 쪼개어 관리하며, 이들을 논리적으로 같은 공간으로 묶어 사용한다. 이런 방식으로 LVM은 물리적으로 분산된 공간을 논리적으로 하나로 관리할 수 있다. 따라서 새로운 하드디스크를 추가하더라도 새로운 공간을 두부를 썰듯이 작은 단위로 나누고 기존 공간과 함께 효율적으로 관리할 수 있어 유연성이 뛰어나다.

 

 

sudo

sudo는 리눅스에서 특정 명령어를 슈퍼유저(최상위 권한을 가진 사용자)로 실행할 수 있게 하는 명령어이다.

 

sudo의 작동 방식은 다음과 같다.

  1. 사용자 인증: 비밀번호를 요청하여 신원 확인
  2. 권한 확인: sudo의 설정 파일인 /etc/sudoers를 참고하여 사용자에게 부여된 권한 확인
  3. 명령어 실행: 명령어를 슈퍼유저 권한으로 실행, 이를 통해 사용자는 파일 시스템이나 시스템 설정 등 보안에 민감한 작업 수행 가능

 

sudo의 사용의의는 다음과 같다.

  1. 보안 강화: 슈퍼유저 권한은 시스템의 핵심 부분에 접근하므로, 이를 필요할 때만 부여함으로써 보안을 강화할 수 있음
  2. 권한 분리: sudo의 권한을 가진 사용자나 그룹만 일부 명령을 실행할 권한을 부여하여 적절한 권한 관리를 할 수 있음
  3. 오류 방지: 실수로 루트 권한으로 위험한 명령을 실행하는 것을 방지, 시스템 손상을 줄 가능성 최소화

 

sudo 설정

/etc/sudoers를 편집하면 된다.

직접 편집하다가 실수가 있으면 sudo를 사용할 수 없으므로 visudo를 사용해 편집하자.

visudo

 

/etc/sudoers 편집

Defaults log_input
# sudo 명령어 실행 시 입력된 명령어 log로 저장
Defaults log_output
# sudo 명령어 실행 시 출력 결과를 log로 저장
Defaults requiretty
# 현재 셀이 tty(콘솔이나 터미널)일 때만 sudo 가능
Defaults iolog_dir="/var/log/sudo/"
# sudo log 저장 디렉토리 설정
Defaults passwd_tries=3
# sudo 패스워드 실행 횟수를 지정

 

 

UFW

UFW는 리눅스 시스템에서 사용하는 간단한 방화벽 설정 도구이다. UFW는 iptables에 기반한다.

 

명령어 예시

  • sudo ufw enable
    # 방화벽 활성화
  • sudo ufw allow 4242
    # 4242 포트 열기
  • sudo ufw allow ssh
    # ssh 서비스 열기
  • sudo ufw deny 4242
    # 4242 포트 연결을 거부
  • sudo ufw delete allow 4242
    # 4242 포트 연결 허용 룰 삭제

 

SSH

ssh는 네트워크를 통해 안전하게 통신하기 위한 프로토콜이다. 주로 원격으로 다른 컴퓨터에 로그인하거나 명령을 실행하기 위해 사용된다. 아마 AWS 서비스를 사용해 봤다면 익숙할 것이다.

 

ssh 동작 확인

sudo service ssh status

 

ssh를 재시작하여 설정을 적용

sudo systemctl restart ssh

 

원격 접속

ssh login@127.0.0.1 -p 4242
# login은 로그인할 사용자의 이름
# 127.0.0.1은 localhost의 IP 주소

 

ssh 설정

/etc/ssh/sshd_config 파일을 수정하면 된다.

sudo vim /etc/ssh/sshd_config
Port 4242
# Port 22를 4242로 수정해야 함 (과제)
PermitRootLogin=No
# 외부에서 root로 로그인 하는 것을 막음 (과제)

 

 

Cron

특정 시간 또는 특정 시간마다 어떤 작업을 수행하게 하는 명령어.

 

cron 작업 설정

crontab -e
# cron 작업을 등록할 수 있는 편집창이 열림

 

cron 작업 주기 설정

* * * * *

각각 *(분 0~59) *(시간 0~23) *(일 1~31) *(월 1~12) *(요일 0~7)을 나타낸다.

*/10 * * * * /root/monitoring.sh | wall
# 10분마다 /root/monitoring.sh 파일 실행

 

10 * * * * 으로 설정한다면 매시간 10분에 파일을 실행한다.

 

과제에서 cron 작업을 종료하라는 말에 대한 해석에 논란이 있다.

일부 사람은 'sudo systemctl disable cron'을 사용해서 cron 서비스 전체를 중지하기도 하고

다른 사람은 'crontab -e'를 통해 작업을 주석 처리하여 종료하기도 한다.

개인적으로 후자가 맞다고 보는데, 전자는 cron 서비스 전체를 중지하므로 다른 작업마저 영향을 받기 때문에 작업을 주석 처리하여 필요한 작업만 비활성화하는 것이 cron을 사용하는 데 있어 유연하기 때문이다.

 

 

과제 tip

가상머신 저장

가상머신의 상태를 저장하기 위해서 가상머신이 존재하는 디렉터리를 열고 ~.vid 파일만 따로 저장하면 된다. 크기가 8GB쯤 될 텐데 구글 계정을 새로 파서 구글 드라이브에 저장하는 것을 추천한다. (구글 계정당 15GB 저장 가능)

 

가상머신 스냅샷

가상머신 스냅샷은 가상머신의 현재 상태를 저장하고, 나중에 필요할 때 이 상태로 복원할 수 있게 하는 기술이다. 스냅샷으로 롤백하기를 누르면 가상머신의 스냅샷을 남긴 시점으로 가상머신이 복구된다. 스냅샷을 남기고 과제를 제출하고, 평가받고 롤백, 평가받고 롤백... 이런 식으로 사용하자.

 

과제 제출

shasum vm이름.vdi > signature.txt

 

cat으로 출력해서 shasum vm이름.vdi 과 같은 결과가 나오는지 확인해 보자. 

728x90
반응형