본문 바로가기
Security/OverTheWire

Bandit Level 21 → Level 22 (cron)

by curious week 2025. 12. 1.

문제

A program is running automatically at regular intervals from cron, the time-based job scheduler. Look in /etc/cron.d/ for the configuration and see what command is being executed.

## 문제 요구사항
cron(시간 기반 스케줄러)이 자동으로 실행하는 프로그램이 있다.
/etc/cron.d/ 안을 보고 어떤 명령이 실행되고 있는지 확인하라

## 내가 사용한 명령어
ssh bandit21@bandit.labs.overthewire.org -p 2220
cd /etc/cron.d
ls -l
cat cronjob_bandit22
cat /usr/bin/cronjob_bandit22.sh
cat /tmp/t7O6lds9S0RqQh9aMcz6ShpAoZKF7fgv

 


1. cron

cron = 백그라운드에서 돌아가는 스케줄러 데몬

  • 항상 시스템에서 실행되고 있는 프로그램(데몬)
  • 사용자가 설정한 스케줄을 해석하고, 그 시간에 명령을 실행함
  • 즉 “스케줄을 실제로 실행하는 실행기(executor)”

비유:

알람을 울려주는 시계.


2. crontab

crontab = 사용자가 설정하는 스케줄 목록(파일)을 관리하는 도구

  • cron이 언제 어떤 작업을 실행해야 할지 알려주는 “작업 리스트”
  • 명령어 crontab 로 리스트를 열고 편집한다
  • 각 사용자마다 자신만의 crontab 목록을 가질 수 있다

주요 명령:

crontab -e   # crontab 편집
crontab -l   # 설정된 cron 스케줄 확인
crontab -r   # 삭제

비유:

알람을 언제 울릴지 설정하는 메뉴(설정표).


3. crontab(5)

crontab(5) = crontab 파일의 문법을 설명하는 매뉴얼 페이지(section 5)

  • man 5 crontab 으로 볼 수 있다
  • crontab 파일을 어떤 형식으로 작성해야 하는지 설명하는 공식 문법 문서
  • 즉, 스케줄을 적는 형식(분, 시, 일, 월, 요일, 명령)의 정확한 문법이 나와 있음

예:

man 5 crontab

비유:

알람을 어떻게 설정하는지 설명한 “사용 설명서”.


 

crontab 문법 예시

형식:

* * * * * <실행할 명령>
분 시 일 월 요일

예:

매 분마다 echo 실행:

* * * * * echo "hello"

매일 오전 1시:

0 1 * * * /path/to/script.sh