LabHub

스토리지와 마운트 · 마운트와 /etc/fstab 읽고 쓰기 · 실습

fstab 감사하고 고치기

LabHub 에서 이어서 보기

목표

망가진 fstab 을 규칙에 따라 감사하고, 고치고, 직접 검증 스크립트를 작성합니다.

왜 중요한가

fstab 은 시스템에서 가장 위험한 파일 중 하나입니다. 잘못 쓰면 부팅 도중 멈추고, 콘솔이 없는 클라우드 인스턴스라면 손쓸 방법이 없습니다. 특히 여섯 번째 필드인 pass(fsck 순서) 가 자주 틀립니다 — 루트가 아닌데 1 을 주거나, 네트워크 파일시스템에 0 이 아닌 값을 주면 부팅이 멈춥니다. 그리고 nofail 이 없으면 데이터 디스크 하나가 죽었을 때 서버 전체가 안 뜹니다. 실무에서는 재부팅 전에 반드시 검증합니다 — 재부팅해서 확인하는 것은 확인이 아니라 도박입니다.

이 실습에서 쓰는 규칙

단계

1. /root/fstab 디렉터리를 만들고 /opt/fixtures/st-fstab/fstab.broken/root/fstab/work.tab 으로 복사하세요.
2. 주석과 빈 줄을 제외한 각 항목을 장치,마운트지점,타입,옵션,dump,pass CSV 로 변환해 /root/fstab/fields.csv 로 저장하세요. 필드가 모자란 줄은 있는 것만 적으세요.
3. 위 네 규칙을 어긴 줄 번호를 오름차순으로 한 줄에 하나씩 /root/fstab/audit.txt 에 적으세요. 줄 번호는 주석 포함 파일 맨 위부터 1로 셉니다.
4. 모든 위반을 고친 /root/fstab/fixed.tab 을 만드세요. 원본의 정상 항목은 그대로 유지하고, 필드가 모자란 줄은 0 2 를 채우고, 중복된 마운트 지점 중 나중 것은 /var2 로 옮기고, 잘못된 pass 값은 규칙 B 에 맞게 고치세요.
5. fixed.tab 에서 장치 경로(/dev/...)로 적힌 항목을 UUID=1a2b3c4d-0004-4000-8000-000000000004 표기로 바꾸세요.
6. fixed.tab 에서 루트가 아닌 모든 로컬 항목의 옵션에 nofail 을 추가하고, /tmp 항목의 옵션에 noexec, nosuid, nodev 를 모두 추가하세요.
7. fixed.tab 의 NFS 항목 옵션에 _netdev, soft, timeo=600, retrans=2 가 모두 들어가도록 하세요.
8. /root/fstab/validate.sh 를 작성하세요. 첫 번째 인자로 fstab 파일 경로를 받아 규칙 A~D 를 검사하고, 위반이 없으면 종료 코드 0, 하나라도 있으면 0 이 아닌 값으로 끝나야 합니다. 채점기가 fixed.tab(통과해야 함)과 fstab.broken(실패해야 함) 양쪽으로 실행합니다.

참고

단계 8개

  1. 작업 사본 만들기
  2. 필드를 CSV 로 분해
  3. 규칙 위반 줄 찾기
  4. 수정본 제출
  5. 장치명을 UUID 표기로
  6. 안전 옵션 추가
  7. NFS 항목 작성
  8. 검증 스크립트 작성