24. 웹 서버 설치 및 설정 (Apache)
문제 1: 서버 A에서 다음 작업을 수행하세요.
- 기본 웹 서버를 설정하여 접속 시
Welcome to the webserver!라는 메시지를 표시하도록 구성합니다. - 방화벽(
firewall) 설정을 수정하여 HTTP(포트 80)와 HTTPS(포트 443) 서비스를 허용합니다.
Apache 설치
dnf install -y httpd부팅 시 Apache 자동 시작 설정
systemctl enable --now httpd기본 Document root 디렉토리 찾기
grep -i "docu" /etc/httpd/conf/httpd.conf
# 출력 값
DocumentRoot "/var/www/html" # 기본 document root 경로환영 메시지 포함한 웹 페이지 생성하기
cd /var/www/html
vim /index.html환영 메시지 추가
Welcome to the webserver!저장 및 종료: Esc -> :wq -> Enter
apache 재시작
systemctl restart httpd방화벽 설정
HTTP 및 HTTPS 서비스를 허용해주겠습니다.
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload--zone=public: 기본 공개 영역(public zone)에 규칙을 적용합니다.--add-service=http: HTTP(포트 80) 트래픽 허용--add-service=https: HTTPS(포트 443) 트래픽 허용--permanent: 재부팅 후에도 설정이 유지되도록 영구 적용
웹 서버 테스트
로컬 테스트
curl http://localhost외부 테스트
웹 브라우저 열고 다음 주소 입력
http://<ServerA_IP_ADDRESS>25. 파일 찾기 2 (find)
문제 1: /etc 디렉터리 내에서 3MB보다 큰 모든 파일을 찾아, 새로운 디렉터리 /find/3mfiles로 복사하세요.
찾은 파일들을 모아둘 대상 디렉토리 생성하기
mkdir -p /find/3mfiles3MB 초과 파일 찾기 및 복사
sudo find /etc -size +3M -exec cp {} /find/3mfiles \;복사된 파일 확인
ls -lh /find/3mfiles
# 출력 값
-r--r--r--. 1 root root 13M 11월 1일 16:34 hwdb.bin
-rw-r--r--. 1 root root 3.2M 11월 1일 16:34 policy.3426. GRUB 부팅 메시지 설정
문제 1: 서버 A에서 부팅 메시지가 숨겨지지 않고 표시되도록 설정하여, 문제 해결(troubleshooting) 시 부팅 과정을 확인할 수 있도록 하세요.
방법 1: GRUB 설정 파일 직접 수정 (영구 적용)
해당 방법은 /etc/default/grub 파일을 수정하여 모든 부팅에 영구적으로 적용하는 방법입니다.
grub 설정 편집
sudo vim /etc/default/grub시스템이 어떻게 부팅되어야 하는지 제어하는 부팅 매개변수가 포함된 전역 GRUB 설정 파일을 엽니다.
부팅 매개변수 수정
GRUB_CMDLINE_LINUX로 시작하는 줄을 찾아서rhgb quiet을 제거합니다.rhgb(Red Hat Graphical Boot): 상세한 부팅 메시지를 숨기고 그래픽 부팅 화면을 제공합니다.quiet: 대부분의 부팅 메시지를 숨겨 깔끔한 화면을 만듦
- 이 두 옵션 제거 시 텍스트 기반 부팅 메시지가 활성화되어 문제 해결에 용이함.
업데이트된 GRUB 설정 생성
sudo grub2-mkconfig -o /boot/grub2/grub.cfg이 명령은 변경 사항을 부트로더에 적용하기 위해 GRUB 설정을 다시 생성 합니다.
시스템 재부팅
sudo reboot시스템을 다시 시작하여 업데이트된 GRUB 설정을 적용합니다.
방법 2: 커널 명령줄 직접 업데이트 (현재 커널에만 적용)
이 방법은 grubby 명령어를 사용하여 현재 사용 중인 커널에만 변경 사항을 적용합니다.
커널 명령줄 수정
sudo grubby --update-kernel=/boot/vmlinuz-$(uname -r) --remove-args="rhgb quiet"grubby명령은/etc/default/grub파일을 수정하지 않고도 현재 커널의 부팅 매개변수를 업데이트합니다. 이 변경 사항은 다음 재부팅 시 적용됩니다.--update-kernel=/boot/vmlinuz-$(uname -r): 현재 사용 중인 커널 버전을 지정합니다.--remove-args="rhgb quiet": rhgb와 quiet 인수를 제거하여 상세한 부팅 메시지를 활성화합니다.
시스템 재부팅
sudo reboot27. bash 스크립트
문제 1: 서버 A에서 다음 작업을 수행하세요.
/script.sh라는 Bash 스크립트를 생성하고, 이 스크립트가 두 개의 인자(argument) 로 실행될 때
첫 번째 인자 뒤에 두 번째 인자를 출력하는 것이 아니라, 두 번째 인자 다음에 첫 번째 인자를 출력하도록 하세요.
예를 들어, 다음과 같이 실행 시
./script.sh test1 test2출력 결과는 다음과 같아야 합니다.
test2 test1스크립트 파일 생성
vim /script.sh다음 스크립트 작성
#!/usr/bin/bash
# 파일에 들어온 매개변수 체크
if [ $# -eq 2 ]; then
echo "$2 $1"
else
echo "Usage: $0 argument1 argument2"
exit 1
fiif [ $# -eq 2 ]; then: 정확히 두 개의 인수가 제공되었는지 확인합니다.$#는 전달된 인수의 개수를 나타내는 특수 변수입니다.echo "$2 $1": 두 개의 인수가 제공되었다면, 이 줄은 두 번째 인수($2) 다음에 첫 번째 인수($1) 를 공백으로 구분하여 출력합니다. (인수 순서를 뒤집어 출력)
스크립트 테스트
chmod u+x ./script.sh
bash ./script.sh argument1 argument2
# 출력 값
argument2 argument128. 비밀번호 유효기간 설정
문제 1: 서버 A에서 모든 사용자 비밀번호에 대해 다음 정책을 적용하세요.
- 비밀번호 유효기간을 90일로 설정하여, 90일이 지나면 비밀번호를 반드시 변경하도록 합니다.
- 비밀번호 최소 길이를 8자 이상으로 설정합니다.
1. 시스템 전반의 로그인 설정 파일 편집
sudo vim /etc/login.defs암호 만료를 포함하여 시스템 전반의 로그인 정책이 구성되는 파일인 /etc/login.defs를 엽니다.
PASS_MAX_DAYS 구성
vim 내에서 PASS_MAX_DAYS 줄을 찾거나 없으면 추가합니다.
PASS_MAX_DAYS 90PASS_MAX_DAYS를 90으로 설정하면 90일 암호 만료 정책이 적용되어, 사용자들은 약 3개월마다 암호를 업데이트해야 합니다.
2. 최소 암호 길이 8자로 설정
암호 품질 구성 파일 열기
sudo vim /etc/security/pwquality.conf이 파일은 /libpwquality 라이브러리에 의해 관리되며, RHEL 9에서 암호 복잡성과 길이 요구사항을 담당합니다.
minlen 구성
vim 내에서 minlen 줄을 찾거나 없으면 추가합니다.
minlen = 8이는 모든 새 암호 및 업데이트된 암호에 대해 최소 길이 8자 를 강제하여, 약한 암호의 가능성을 줄여 보안을 강화합니다.
29. 파일 소유권 설정 (sticky bit)
문제 1: 서버 A에서 다음 조건에 맞게 사용자, 그룹, 디렉터리 및 권한을 설정하세요
사용자 및 그룹 구성
- 그룹
adminsdevelopers
- 사용자
amr,biko->admins그룹 구성원carlos,david->developers그룹 구성원
디렉터리 구성
/admins- 소유자(owner):
biko - 그룹:
admins - 접근 권한: 오직 소유자와
admins그룹 구성원만 접근 가능
- 소유자(owner):
/developers- 소유자(owner):
carlos - 그룹:
developers - 접근 권한: 오직
developers그룹 구성원만 접근 가능
- 소유자(owner):
파일 소유권 및 권한 요구사항
/admins와/developers디렉터리 내에서 새로 생성되는 파일은 해당 디렉터리의 그룹 소유권을 자동으로 상속받아야 함.- 파일 생성자만 자신의 파일을 삭제할 수 있어야 함.
단계 1: 사용자 및 그룹 생성
그룹 생성하기
sudo groupadd admins
sudo groupadd developersadmins와 developers 그룹을 생성하여, 특정 권한을 가진 사용자들을 조직화할 겁니다.
사용자 생성 및 그룹 추가
useradd amr && usermod -aG admins amr
useradd biko && usermod -aG admins biko
useradd carlos && usermod -aG developers carlos
useradd david && usermod -aG developers david각 사용자를 생성하고 적절한 그룹에 추가합니다.
단계 2: 디렉토리 생성 및 구성
디렉토리 생성
mkdir -p /{admins,developers}그룹별 리소스를 분리하기 위해서 /admins 및 /developers 디렉터리를 생성합니다.
/admins에 대한 소유권 설정하기
디렉토리 소유권 설정
chown biko:admins /admins디렉토리 접근 권한 설정
chmod 770 /admin소유자와 그룹에게는 읽기, 쓰기, 실행 권한을 부여하고, 다른 사용자(other)에게는 모든 접근을 차단합니다.
/admins에 대한 sticky bit 설정하기
chmod -t,g+s /adminschmod g+s:Setgid비트를 활성화하여, 이 디렉토리에 생성되는 파일들이admins그룹 소유권을 상속받도록 보장합니다.chmod -t:Sticky비트를 설정하여,/admins디렉토리 내에서 파일 생성자(또는 root)만이 파일을 삭제할 수 있도록 제한합니다.
/developers에 대한 소유권 설정하기
디렉토리 소유권 설정
chown carlos:developers /developers디렉토리 접근 권한 설정
chmod 770 /developers소유자와 그룹에게는 접근 권한을 제공하고, 다른 사용자들은 제외합니다.
/developers에 대한 sticky bit 설정하기
chmod +t,g+s /developers단계 3: 테스트 (검증)
ls -ld /admins /developers
# 출력 값
drwxrws--T. 2 biko admins 6 11월 1일 17:35 /admins
drwxrws--T. 2 carlos developers 6 11월 1일 17:30 /developersrwxrws--T: 소유자 및 그룹에 대한 읽기, 쓰기, 실행 권한이 부여되었음을 확인합니다.s:Setgid비트가 설정되었음을 확인하고,T는 Sticky 비트가 설정되었음을 보여줍니다.
30. cron job 설정
문제 1: 서버 A에서 다음 작업을 수행하세요.
매주 평일(월~금) 정오 12시(12 PM)에 시스템 로그 파일 /var/lob/messages에 Get Ready! 라는 메시지를 기록하도록
cron 작업을 설정하세요.
또한 이 작업은 적절한 권한으로 실행되어야 하며,
문제 발생 시 추적이 가능하도록 로그 기록이 남도록 구성해야 합니다.
단계 1: root crontab 접근
sudo crontab -eroot 사용자의 크론탭 파일을 엽니다. 이를 통해 /var/log/messages에 기록하는 데 필수적인 root 권한으로 작업 예약이 가능합니다.
단계 2: 메시지를 기록하는 Cron 작업 추가
작업 예약을 위해 crontab에 다음 줄 추가
* 12 * * 1-5 /usr/bin/logger -t "GetReadyCron" "Get Ready!" 2>&1 | tee -a /tmp/cron_jobs.log2>&1: 표준 출력(Standard Output)과 표준 오류(Standard Error)를 단일 스트림으로 리다이렉션(redirection)합니다.
단계 3: Cron 작업 확인
Esc를 누르고:wq를 입력한 후Enter를 누릅니다.- 예약된 cron 작업 목록이 정상적인지 확인합니다.
sudo crontab -l
31. tar 아카이브 파일 생성
문제 1: 요구사항에 맞는 tar 아카이브 파일을 생성하세요
서버 A에서 /usr/local 디렉터리와 그 안의 모든 내용을 포함하는 압축된 tar 아카이브 파일을 생성하세요.
아카이브 파일의 이름은 /root/local.tgz로 하며, 적절한 권한이 설정되어 있고, 생성된 아카이브의 무결성을 검증해야 합니다.
1. 압축된 아카이브 생성
sudo tar -cvzf /root/local.tgz /usr/localc: 새로운 아카이브 생성v: 처리되는 파일들 상세 표시하는 Verbose modez: 효율적인 저장을 위한gzip압축f: 출력 파일 지정
2. 아카이브 무결성 확인
sudo gzip -t /root/local.tgz.tgz 파일의 무결성을 검사하여 오류나 손상이 없는지 확인.
3. 아카이브 권한 확인
ls -l /root/local.tgz아카이브 파일의 소유권 및 권한 확인.
32. 스왑 파티션 생성
문제 1: 다음 요구사항에 맞게 스왑 파티션을 생성하세요.
서버 A에서 /dev/sdb를 사용하여 200MB 크기의 스왑 파티션 을 생성하세요.
이 스왑 영역은 시스템 부팅 시 자동으로 활성화되도록 설정해야 합니다.
1. /dev/sdb에서 새 파티션 생성
fdisk /dev/sdb
# 파티션 생성 과정은 생략 ...
# n -> p -> 2 (파티션 번호) -> Enter -> +200M 파티션 크기 지정2. 파티션 유형 변경 (스왑)
fdisk /dev/sdb
# t -> 2 (파티션 번호) -> 82 (스왑 타입 번호)3. 커널 파티션 정보 업데이트
sudo partprobe /dev/sdb커널에 새 파티션 테이블 알림으로써 재부팅 없이 즉시 접근할 수 있도록 함.
4. 파티션을 스왑으로 포맷
sudo mkswap /dev/sdb2/dev/sdb1를 스왑 공간으로 포맷하여 활성화 준비
5. fstab 구성을 위한 UUID 가져오기
sudo blkid /dev/sdb2새 스왑 파티션의 고유 식별자(UUID)를 검색하여, 부팅 시 자동 마운트를 위한 일관성 보장
6. /etc/fstab에서 자동 마운트 설정
sudo vim /etc/fstab
UUID=... swap swap defaults 0 07. 스왑 파티션 활성화
sudo swapon /dev/sdb28. 검증
free -m33. root ssh no password
문제 1: 서버 A에서 서버 B의 root 계정으로 비밀번호 없이 SSH 원격 접속이 가능하도록 설정하세요.
1. OpenSSH 설치 및 상태 확인
dnf install -y openssh-server
systemctl enable --now sshd2. ServerB에서 Root 로그인 허용
# SSH 설정 편집
vim /etc/ssh/sshd_config
# PermitRootLogin을 yes로 설정
PermitRootLogin yes
:wq # 저장하고 나오기
# 적용 위해 SSH 재시작
systemctl restart sshd3. 서버 A에서 SSH 키 생성
openssh client 설치 (원격 ssh 연결에 필요한 ssh-keygen 및 ssh-copy-id와 같은 도구 포함)
dnf install -y openssh-client4. 서버 A에서 SSH 키 쌍 생성
ssh-keygen -t rsa -b 4096새로운 SSH 키 쌍을 생성
5. 공개 키를 서버 B로 복사
ssh-copy-id root@ServerB이 명령은 서버 A의 공개 키를 서버 B의 Root 계정의 ~/.ssh/authorized_keys 파일로 복사하여, Root의 암호 없는 접근을 허용합니다.
34. SSH 로그인 시도 횟수 설정
문제 1: 서버 A에서 SSH 로그인 시도 횟수의 최대값을 2회로 설정하시오.
1. SSH 설정 파일 편집
vim /etc/ssh/sshd_config이 파일에서 인증 및 보안 관련 설정 수정이 가능합니다.
2. MaxAuthTries 매개변수 설정
# MaxAuthTries 매개변수 값을 2로 변경
MaxAuthTries 2SSH를 통해 허용되는 연속적인 로그인 실패 시도 횟수를 2회로 제한하며, 2회를 초과하면 클라이언트 연결을 끊습니다.
3. SSH 서비스 재시작
systemctl restart sshd35. Rootless Quadlet 기반 Redis (Podman)
💡 참고: Quadlet 기능은 RHEL 9.2 이상 버전에서 사용 가능한 최신 표준입니다.
만약 실습 환경이 RHEL 9 초기 버전이라면, “Alternative Method” 섹션에 있는 podman generate systemd 방식을 사용해야 합니다.
문제 1: 서버 A에서 rootless systemd 서비스로 관리되는 redis 컨테이너를 구성하세요. 이 서비스는 Quadlet을 사용하여 선언적으로 정의되어야 합니다.
- Quadlet 파일 경로
~/.config/containers/systemd/redis.container
- Quadlet 파일 내용 요건
containerName은redis로 설정할 것- 이미지:
docker.io/library/redis를 사용하고, 로컬에서는localhost/myredis로 태깅할 것 - 호스트 포트
6379를 컨테이너 포트6379에 매핑할 것 - 사용자의 홈 디렉토리에
redis-data라는 디렉토리를 생성하고, 이를 컨테이너의/data경로에 영구 볼륨으로 마운트할 것 - 컨테이너 실패 시 자동으로 재시작되도록 설정할 것
- 사용자 세션은 linger(지속 실행) 모드로 설정되어야 함
loginctl enable-linger <username>
- SELinux는 Enforcing 모드로 유지해야 함.
- 만약 접근 거부(
denial)가 발생한다면, 적절한 SELinux boolean을 영구적으로 설정하여 해결해야 한다.
- 만약 접근 거부(
1. 필수 도구 설치
sudo dnf install -y podman skopeopodman 및 skopeo (컨테이너 이미지 관리 도구)를 설치합니다.
Redis 이미지 풀(Pull) 및 태그 지정
podman pull docker.io/library/redis
podman tag docker.io/library/redis localhost/myredisDocker hub에서 공식 redis 이미지를 가져와서 localhost/myredis 라는 이름의 이미지로 태깅합니다.
영구 볼륨을 위한 호스트 디렉토리 생성
mkdir -p ~/redis-dataRedis 데이터가 컨테이너가 재시작되어도 유지되도록 ~/redis-data 디렉토리를 생성합니다.
2. 시스템 필수 조건 구성
현재 사용자에 대한 링거링(Lingering) 활성화
sudo loginctl enable-linger $(whoami)링거링을 활성화하여 현재 사용자가 로그아웃한 후에도 사용자 세션의 시스템드 서비스(예: 컨테이너)가 계속 실행되도록 합니다.
필수 SELinux Bool 영구 설정
sudo setsebool -P container_manage_cgroup on컨테이너가 cgroup을 관리할 수 있도록 SELinux 부울 값을 영구적(-P)으로 설정합니다.
3. Quadlet 유닛 파일 생성
사용자 Quadlet 파일 디렉토리가 존재하는지 확인
mkdir -p ~/.config/containers/systemdQuadlet .container 파일 생성 (절대 경로 사용)
cat <<EOF > ~/.config/containers/systemd/redis.container
[Unit]
Description=Redis Quadlet Container
[Container]
ContainerName=redis
Image=localhost/myredis
PublishPort=6379:6379
Volume=$HOME/redis-data:/data:Z
[Service]
Restart=always
[Install]
WantedBy=default.target
EOF4. 서비스 활성화 및 검증
Quadlet 파일로부터 서비스를 생성하기 위해 systemd 데몬 리로드
systemctl --user daemon-reload문제 해결 참고: "Unit file redis.service does not exist"
위 오류가 발생하면 Quadlet 생성기가 시스템에 올바르게 등록되지 않은 것입니다.
- 실행 파일 존재 여부 확인:
ls /usr/libexec/podman/quadlet - 누락된 링크 생성: `sudo ln -s /usr/libexec/pdoman/quadlet /usr/lib/systemd/system-generators/
- 두 데몬 모두 재로드:
sudo systemctl daemon-reload실행 후systemctl --user daemon-reload를 실행 - 로그인 시 시작하도록 서비스 활성화 및 즉시 시작:
systemctl --user enable --now redis.service - 서비스 및 컨테이너가 올바르게 실행 중인지 확인
systemctl --user status redis.servicepodman ps | grep redis
정리 (선택 사항)
# 서비스 중지 및 로그인 시 시작 비활성화
systemctl --user disable --now redis.service
# 컨테이너, Quadlet 파일 및 데이터 디렉터리 제거
podman rm -f redis
rm -f ~/.config/containers/systemd/redis.container
sudo rm -rf ~/redis-data36. 쉘 스크립트 작성
문제 1: 서버 A에서 /etc/passwd 파일로부터 사용자 이름과 해당 기본 그룹 이름을 추출하여 명확하게 출력하는 간결하고 효율적인 셸 스크립트를 /names.sh라는 이름으로 작성히세요.
- 잘 정리된 형식 갖출 것.
- 쉘 스크립트 작성의 모범 사례(best practice)를 따를 것
- 이해를 돕는 주석 포함할 것
1. /names.sh 스크립트 생성
vim /names.sh<br.
2. 스크립트 작성
#!/usr/bin/bash
cut -d: -f1,4 /etc/passwd \
| while IFS=: read user group_id; \
do \
group_name=$(getent group "$group_id" | cut -d: -f1); echo "$user : $group_name"; \
done2. 스크립트 실행 권한 부여
chmod u+x /names.sh3. 스크립트 실행
bash /names.sh
# 출력 값
root : root
bin : bin
...
...문제 2: ServerA에서 /etc/passwd 파일을 참고하여 사용자 이름(username)과 해당 사용자의 로그인 쉘(login shell) 목록을 생성하는 스크립트를 /users_shells.sh 라는 이름으로 작성하세요.
1. /users_shells.sh 스크립트 생성
vim users_shells.sh2. 스크립트 작성
#!/usr/bin/bash
cut -d: -f 1,7 /etc/passwd3. 스크립트 실행
chmod u+x users_shells.sh
bash users_shells.sh
# 출력 값
root:/bin/bash
daemon:/usr/sbin/nologin
bin:/usr/sbin/nologin
sys:/usr/sbin/nologin
sync:/bin/sync
...
...문제 3: ServerA에서 /home 디렉터리 및 그 하위 디렉터리 내에서, 첫 번째 인자로 전달된 패턴과 일치하는 일반 파일(regular file) 의 개수를 세는 쉘 스크립트를 작성하세요.
- 스크립트의 이름은
/find.sh여야 하며, 오류 처리(error handling) 와 안내 메시지(informative output)를 포함하고, 사용성과 안정성 측면에서 모범 사례(best practices)를 따르도록 작성해야 합니다.
1. /find.sh 스크립트 생성
vim /find.sh2. 스크립트 작성
#!/usr/bin/bash
if [ -z $1 ];then
echo "Error: 인자 1개 필수"
exit 1
fi
if [ ! -d /home ]; then
echo "Error: /home 디렉토리 없음"
exit 1
fi
find /home -type f -name "$1" 2>/dev/null | wc -l3. 스크립트 실행
chmod u+x /find.sh
bash /find.sh *.txt
# 출력 값
16문제 4: ServerA에서 /trim.sh 라는 이름의 다목적이고 안내 메시지가 포함된 쉘 스크립트를 작성하세요.
- 이 스크립트는 입력으로 전달된 각 인자(argument) 에서 모음 문자 "a", "i", "e", "o", "u" 를 모두 제거해야 합니다.
1. 스크립트 작성
#!/usr/bin/bash
if [[ $# -eq 0 ]]; then
echo "하나 이상의 인자 입력"
exit 1
fi
for arg in "$@"; do
trimmed="$(echo $arg | tr -d 'aeiou')"
echo $trimmed
done2. 스크립트 실행
chmod u+x trim.sh
bash trim.sh "Hello World"
# 출력 값
Hll Wrld37. MBR 백업파일 생성
문제 1: ServerA의 /dev/sda디스크에 위치한 MBR(Master Boot Record)을 적절한 명령어를 사용하여서 백업 파일로 생성하세요.
- 백업 파일은
/backup/mbr.img로 저장해야 하며, 다음 조건을 충족해야 합니다.- 블록 크기 (Block size): 512 byte
- 블록 개수 (Number of Blocks): 1
- 검증: 백업이 정상적으로 생성되었는지 확인
1. 백업 디렉토리 생성
mkdir -p /backup2. MBR 백업 수행
sudo dd if=/dev/sdb of=/backup/mbr.img bs=512 count=1 status=progressif=/dev/sda: 입력 파일을 지정합니다. MBR이 위치한 첫 번째 하드 디스크 전체를 의미합니다.of=/backup/mbr.img: 출력 파일을 지정합니다. MBR 백업이 저장될 위치입니다.bs=512: 블록 크기를 MBR의 정확한 크기와 일치하는 512바이트로 설정합니다.count=1: MBR 전체를 캡처하기에 충분한 1개의 블록만 복사하며, 디스크의 추가 데이터를 복사하지 않습니다.status=progress: 백업 진행 상황을 표시하여, 명령어의 작동 상태를 볼 수 있게 합니다.
3. MBR 백업에 대한 보안 권한 설정
sudo chmod 600 /backup/mbr.img왜 600 권한을 사용하는가?
- 권한을
600으로 설정 시, 소유자(root)만이 백업 파일을 읽고 쓸 수 있음.
4. 백업 생성 확인
ls -l /backup/mbr.img