Notice
Recent Posts
Recent Comments
Link
맘가는 대로
RHCSA 목표 간단 정리 본문
- 필수 툴 이해 및 사용
- 셸 프롬프트에 액세스하고 올바른 구문으로 커맨드 실행
- 입력-출력 리디렉션(>, >>, |, 2> 등) 사용
- > - truncate
- >> - append
- | - pipe
- 2> - redirection from stderr
- grep 및 정규 표현식을 사용하여 텍스트 분석
- grep -P
- egrep
- SSH를 사용하여 원격 시스템에 액세스
- ssh <user>@<hostname or ip>
- 로그인하고 멀티유저 타겟에서 사용자 변경
- su - <user>
- tar, star, gzip, bzip2를 사용하여 파일 아카이브, 압축, 배포, 압축 해제
- 아카이브 - tar file[files...]
- 압축 - tar cvzf <filename>.tar.gz file[files...]
- 압축 해제 - tar xvzf <filename>.tar.gz
- 텍스트 파일 생성 및 편집
- vim <filename>
- 파일 및 디렉토리 생성, 삭제, 복사, 이동
- 삭제
- 파일 - rm
- 디렉토리 - rmdir
- 복사 - cp
- 이동 - mv
- 삭제
- 하드 링크와 소프트 링크 생성
- 하드 링크 - ln
- 소프트 링크 - ln -s
- 표준 ugo/rwx 권한 목록 작성, 설정 및 변경
- 권한 보기 - ls -l
- 권한 변경 - chmod [0..7][0..7][0..7] or u[go]+r[wx], u[go]-r[wx]
- /usr/share/doc에서 man, info, 및 파일을 포함한 시스템 문서를 찾고, 읽고, 사용
- 실행 시스템 운영
- 시스템을 정상적으로 부팅, 재부팅, 셧다운
- 재부팅
- reboot
- systemctl reboot
- 셧다운
- shutdown
- poweroff
- systemctl halt
- systemctl poweroff
- 참고 링크 - https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/configuring_basic_system_settings/managing-services-with-systemd_configuring-basic-system-settings#shutting-down-suspending-hibernating-system_managing-services-with-systemd
- 재부팅
- 시스템을 수동으로 다른 타겟으로 부팅
- 타겟 목록
- systemctl -t target --all
- 수동 전환
- systemctl isolate <target>
- 영구 전환
- systemctl set-default <target>
- 참고 링크 - https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/configuring_basic_system_settings/managing-services-with-systemd_configuring-basic-system-settings#working-with-systemd-targets_managing-services-with-systemd
- 타겟 목록
- 시스템에 액세스하기 위해 부팅 프로세스 중단
- 부트로더에서 e 를 통해 부트 엔트리 수정 가능
- 설정 파일에서 linux 항의 맨 뒤에 rd.break 를 추가하면 리눅스 커널에 권한을 넘기기 전까지만 부팅 과정 수행
- 참고 링크 - https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/configuring_basic_system_settings/managing-user-and-group-accounts_configuring-basic-system-settings#resetting-the-forgotten-root-password-on-boot_changing-and-resetting-the-root-password-from-the-command-line
- CPU/메모리 사용이 많은 프로세스를 식별하여 중단
- 프로세스 식별
- top
- F - 정렬
- ps
- ps -eo pid,%cpu,%mem,cmd --sort -%mem
- top
- 프로세스 중단
- kill
- 기본적으로 SIGTERM 을 보내 프로세스를 중단
- 강제 중단을 원하면 kill -9 <pid>
- SIGKILL
- 리눅스 커널이 절대 무시하지 않는 시그널이 있는데, SIGKILL 이 그 중 하나
- kill
- 프로세스 식별
- 프로세스 스케줄링 조정
- nice
- renice
- 튜닝 프로파일 관리
- tuned
- 명령어
- tuned-adm active - 적용된 프로필
- tuned-adm list - 프로필 목록
- tuned-adm profile virtual-guest powersave - 프로필 적용 및 정
- tuned-adm verify - 프로필 적합성 체크
- 설정 파일
- /usr/lib/tuned - 배포판 프로필
- /etc/tuned/ - 커스텀 프로필
- 명령어
- 참고 링크 - https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/monitoring_and_managing_system_status_and_performance/index
- tuned
- 시스템 로그 파일 및 저널 확인 및 해석
- 로그 파일 위치 - /var/log
- journalctl
- journalctl -u <대상> --since=<로그 처음> --until=<로그 마지막>
- 시스템 저널 보존
- /etc/systemd/journald.conf
- storage=persistent 로 수정
- systemctl restart systemd-journald
- 혹은 재부팅
- 참고 매뉴얼 - man journald.conf
- 참고 링크 - https://www.freedesktop.org/software/systemd/man/journald.conf.html#
- /etc/systemd/journald.conf
- 네트워크 서비스 시작, 중단 및 상태 점검
- systemctl start NetworkManager
- systemctl stop NetworkManager
- systemctl status NetworkManager
- 안전하게 시스템 간 파일 전송
- scp, sftp, rsync
- SSH 프로토콜을 사용해서 전송
- 시스템을 정상적으로 부팅, 재부팅, 셧다운
- 로컬 스토리지 설정
- MBR 및 GPT 디스크에서 파티션 목록 작성, 생성, 삭제
- MBR 파티션 테이블
- fdisk
- type
- 82 - 리눅스 SWAP
- 8e - 리눅스 LVM
- type
- 증설
- 해당 파티션을 지우고, 반드시 동일한 번호에서 증설한 크기의 파티션을 생성
- fdisk
- GPT 파티션 테이블
- fdisk -> g
- type
- 19 - 리눅스 SWAP
- 31 - 리눅스 LVM
- type
- fdisk -> g
- 참고 - https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/managing_storage_devices/assembly_getting-started-with-partitions_managing-storage-devices
- MBR 파티션 테이블
- 물리 볼륨 생성 및 제거
- 생성
- pvcreate <디스크>
- 제거
- pvremove
- 한 디스크를 나눠 물리 볼륨으로 할당하지 말 것. 성능 저하
- 한 디스크를 두 개 이상의 물리 볼륨으로 반드시 해야한다면 파티셔닝 이후에 할 것.
- 참고 - https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/configuring_and_managing_logical_volumes/deploying-lvm_configuring-and-managing-logical-volumes#creating-lvm-physical-volume_deploying-lvm
- 생성
- 볼륨 그룹에 물리 볼륨 할당
- 생성
- vgcreate <볼륨 그룹 이름> <pv>...
- 증설
- vgextend <볼륨 그룹 이름> <pv>...
- 참고 - https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/configuring_and_managing_logical_volumes/deploying-lvm_configuring-and-managing-logical-volumes#creating-lvm-volume-group_deploying-lvm
- 생성
- 논리 볼륨 생성 및 제거
- 생성
- 단순 볼륨
- lvcreate -n <논리 볼륨 이름> -L <용량> <볼륨 그룹>
- 스트라이프 볼륨
- lvcreate --type raid0 -l <용량> --stripes <줄무늬 개수> --stripsize 4 -n <논리 볼륨 이름> <볼륨 그룹>
- 줄무늬 개수는 디스크 개수로 하면 됨
- 줄무늬 길이는 4 KiB가 된다.
- 지정하지 않을 경우 기본값은 64 KiB
- 확인
- lvs -a -o name,segtype
- 이론적으로 동일 크기, 동일 속도의 디스크의 경우 읽기/쓰기 속도가 디스크의 개수만큼 증가한다.
- 참고 - man lvmraid
- lvcreate --type raid0 -l <용량> --stripes <줄무늬 개수> --stripsize 4 -n <논리 볼륨 이름> <볼륨 그룹>
- 단순 볼륨
- 제거
- lvremove <논리 볼륨 위치>
- /boot 는 논리 볼륨에 할당하지 말 것. 부트로더가 LVM 을 인식하지 못함
- 참고 - https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/configuring_and_managing_logical_volumes/deploying-lvm_configuring-and-managing-logical-volumes#creating-lvm-logical-volume_deploying-lvm
- 생성
- UUID(Universally Unique ID)나 라벨을 사용하여 부팅 시 파일 시스템을 마운트하도록 시스템 설정
- 확인
- 파일
- /etc/fstab
- UUID
- lsblk
- 마운트 지점
- findmnt
- mount
- 파일
- 마운트
- /etc/fstab 에 이미 지정됨
- mount <디바이스 혹은 경로>
- 수동
- mount --type <파일시스템> <디바이스> <경로>
- 이동
- mount --move <원 지점> <신규 지점>
- 영구
- 파일
- /etc/fstab
- 변경후 systemd 등록을 위해 systemctl daemon-reload 진행 필요
- 파일
- /etc/fstab 에 이미 지정됨
- 참고 - https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/managing_file_systems/assembly_mounting-file-systems_managing-file-systems
- 확인
- 어떠한 손실/손상 없이 시스템에 새로운 파티션 및 논리 볼륨과 스왑 추가
- 파티션
- MBR
- fdisk
- 증설할 파티션을 삭제
- 동일한 순서의 새로운 파티션을 생성하되 더 큰 크기로 생성
- fdisk
- GPT
- fdisk -> g
- 증설할 파티션을 삭제
- 동일한 순서의 새로운 파티션을 생성하되 더 큰 크기로 생성
- fdisk -> g
- 파티션은 블록 순서상 연속되어야 하므로 파티션 크기를 키울 때는 바로 이어지는 블록이 있어야 한다.
- MBR
- 논리 볼륨
- lvextend
- 볼륨 그룹에 용량이 남아있을 경우
- lvextend -l +100%free <논리 볼륨 경로>
- 볼륨 그룹에 용량이 남아있을 경우
- vgextend
- 볼륨 그룹에 용량이 없을 경우
- vgextend <볼륨 그룹> <디바이스>
- lvextend <논리 볼륨 경로> <디바이스>
- 볼륨 그룹에 용량이 없을 경우
- lvextend
- 스왑
- mkswap
- 증설
- swapoff 를 통해 해당 파티션을 해제한 뒤 증설
- 추가
- 해당 파티션을 스왑 파티션으로 만들어주면 됨
- 스왑 파일
- 파일 생성
- dd if=/dev/zero of=/swapfile bs=4096 count=<용량에 맞게>
- mkswap /swapfile
- 파일 생성
- 증설
- swapon
- /etc/fstab
- swap 파일 시스템
- 마운트 유닛 생성
- systemctl daemon-reload
- mkswap
- 참고 - https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/managing_storage_devices/getting-started-with-swap_managing-storage-devices
- 파티션
- MBR 및 GPT 디스크에서 파티션 목록 작성, 생성, 삭제
- 파일 시스템 구축 및 설정
- vfat, ext4, xfs 파일 시스템 생성, 마운트, 분리 및 사용
- 비교
- ext4
- RHEL 6 기본 파일 시스템
- 용량 - 50 TiB 까지 지원
- Quota - 사후 적용 지원. 마운트 옵션 지원.
- 용량 변경 - 줄이기, 늘리기 모두 지원
- 낮은 IOPS 및 대역폭의 서버 혹은 어플리케이션에서 권장됨
- xfs
- RHEL 7 이상 기본 파일 시스템
- 용량 - 1024 TiB 까지 지원
- Quota - 마운트 옵션 지원. 마운트 이후에는 적용 불가.
- 용량 변경 - 늘리기만 지원
- 높은 IOPS 및 대역폭의 서버, 멀티 쓰레드 읽기/쓰기 어플리케이션에서 권장됨
- ext4 보다 메타데이터 작업에 약 2 배의 CPU 사용률을 보임
- ext4
- 파일시스템 생성
- mkfs.vfat
- 패키지 - dosfstools
- mkfs.ext4
- mkfs.xfs
- mkfs.vfat
- 마운트
- /etc/fstab
- mount -a
- umount
- 비교
- NFS를 사용하여 네트워크 파일 시스템 마운트 및 분리
- 특성
- 네트워크
- TCP 권장
- 서버 - 클라이언트 구조
- 네트워크
- 서버
- 목표는 아니지만 실습 목적으로 서술
- 기동
- rpcbind 서비스
- systemctl status rpcbind
- RPC 기반 통신을 위해 사용되는 서비스
- nfs-server
- systemctl enable --now nfs-server
- 활성화 동시에 시작
- systemctl enable --now nfs-server
- rpcbind 서비스
- 공유 디렉토리 지정
- 설정 파일
- /etc/exports
- 문장 구조
- <공유 디렉토리> <공유 대상 호스트>(<옵션>)
- 문장 구조
- /etc/exports
- 적용
- exportfs -r 혹은
- systemctl reload nfs-server
- 설정 파일
- 방화벽
- firewall-cmd --permanent --add-service rpc-bind
- firewall-cmd --permanent --add-service mountd
- firewall-cmd --permanent --add-service nfs-server
- firewall-cmd --permanent --add-port=<mountd 포트>/tcp
- firewall-cmd --reload
- 클라이언트
- 탐색
- showmount -e <호스트>
- 수동
- mount -t nfs -o <옵션> <마운트 대상> <마운트 디렉토리>
- 파일
- /etc/fstab
- <마운트 대상> <마운트 디렉토리> nfs defaults,_netdev 0 0
- /etc/fstab
- 참고 - https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/managing_file_systems/exporting-nfs-shares_managing-file-systems#starting-the-nfs-server_exporting-nfs-shares
- 특성
- 기존 논리 볼륨 확장
- 파티션 증설
- vgextend
- lvextend
- 파일 시스템
- resize2fs
- xfs_growfs
- 협업을 위해 set-GID 디렉토리 생성 및 설정
- chmod g+s <디렉토리>
- 디스크 압축 설정
- VDO 디스크
- 개념
- 중복 제거, 압축, 씬 프로비저닝으로 디스크 사용량 축소
- 씬 프로비저닝은 오버 프로비저닝으로 부르기도 하고 이해가 더 쉽다.
- 실제 디스크보다 더 많은 용량을 할당할 수 있다.
- 중복 제거, 압축, 씬 프로비저닝으로 디스크 사용량 축소
- 운영
- 실제 디스크 용량의 한계에 가까워질 때 용량을 늘려줘야 한다.
- 쉬운 증설을 위해 LVM 을 사용하고 VDO 를 사용하는 것이 권장된다.
- 따라서 지속적인 모니터링이 필요하다.
- DISCARD(or TRIM)
- 파일 시스템에서 안쓰는 블록을 삭제하는 것을 의미한다.
- 씬 프로비저닝 스토리지에는 사용하는 것이 권장된다.
- 단, 이 동작은 CPU 에 높은 부하를 가한다.
- 실제 디스크 용량의 한계에 가까워질 때 용량을 늘려줘야 한다.
- 용도
- 블록 디바이스
- 실 사용
- 설치
- dnf install -y vdo
- 블록 디바이스 구성
- vdo create --name=<VDO 디바이스 이름> --device=<블록 디바이스> --vdoLogicalSize=<용량>
- VM 스토리지 용도는 실제 크기의 10 배
- 오브젝트 스토리지 용도는 실제 크기의 3 배
- 실제 스토리지 크기가 16TiB 이상일 때는 디스크 slab 크기를 32 GB 로 구성해야함
- vdo create --name=<VDO 디바이스 이름> --device=<블록 디바이스> --vdoLogicalSize=<용량>
- 파일 시스템 구성
- xfs
- mkfs.xfs -K <VDO 디바이스 경로>
- ext4
- mkfs.ext4 -E nodiscard
- 왜 discard 동작을 중단하는지?
- 디바이스 노드 등록 대기
- udevadm settle
- 모든 udev 이벤트가 끝날 때까지 대기하는 동작
- udevadm settle
- xfs
- 마운트
- /dev/mapper/<이름> /<마운트 위치> <xfs|ext4> defaults,_netdev,x-systemd.device-timeout=0,x-systemd.requires=vdo.service 0 0
- 참고
- man vdo
- man systemd.mount
- DISCARD 구성
- systemctl enable --now fstrim.timer
- 통계
- vdostats --human-readable
- 압축
- VDO 디바이스는 기본 값이 허용됨
- 수동
- vdo enableCompression --name=<VDO 이름>
- 설치
- 개념
- 참고 - https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/deduplicating_and_compressing_storage/index
- VDO 디스크
- 계층화된 스토리지 관리
- stratis
- 테크 프리뷰 상태
- 현재 개발중이며 완전한 동작을 보장하지 않는다.
- (그런데 왜 RHCSA 목표인지는 모르겠다. ZFS 대안이며 Btrfs 대체 기술이라서 레드햇이 세게 밀고 있기는 하다.)
- (더 심각한 것은 대안 및 대체 기술에서는 데이터 손실을 어떻게든 막는데, 이 녀석은 대놓고 데이터 손실이 있을 수 있다고 말한다. 엔터프라이즈 쪽에서의 사용은 아직 힘들 것 같다.)
- 설치
- yum install -y stratisd stratis-cli
- 설정
- 디스크 풀
- wipefs --all <디바이스 경로>
- 디스크에 대한 모든 정보를 삭제한다.
- stratis pool create <풀 이름> <디바이스 경로>...
- 풀 생성
- stratis pool add-data <풀 이름> <디바이스 경로>...
- 풀 확장
- stratis pool list
- 풀 확인
- wipefs --all <디바이스 경로>
- 파일 시스템
- stratis fs create <풀 이름> <파일시스템 이름>
- 파일 시스템 생성
- 여기서 파일 시스템 이름은 '홍길동' 같은 애정 있는 이름을 말한다.
- stratis fs list
- 확인
- stratis fs create <풀 이름> <파일시스템 이름>
- 구성 확인
- stratis blockdev
- stratis pool
- stratis fs
- 마운트
- 수동
- mount /stratis/<풀 이름>/<파일시스템 이름> <마운트 경로>
- /dev 밑에 원본이 있지만 쉽게 하기 위한 설계이다.
- mount /stratis/<풀 이름>/<파일시스템 이름> <마운트 경로>
- 자동
- /etc/fstab
- UUID=<uuid> <마운트 경로> xfs defaults,x-systemd.requires=stratisd.service 0 0
- 데몬이 관리해주는 파일 시스템이기 때문에 서비스 동작 여부 확인은 필수
- UUID=<uuid> <마운트 경로> xfs defaults,x-systemd.requires=stratisd.service 0 0
- stratisd 가 실행되는 상태로 dracut -f 실행
- stratis 는 devicemapper 기반으로 동작하는데, 안타깝게도 재부팅시 자동적으로 실행되지 않는다.
- 부팅시 dm_mod 모듈이 initramfs 에 없어서 발생하는 현상이므로, stratisd 를 동작한 상태에서 initramfs 를 다시 생성한다.
- /etc/fstab
- 수동
- 디스크 풀
- 주의
- stratis 는 내부적으로 XFS 파일시스템을 사용하지만 추적하는 정보가 달라 사용자가 직접 xfs 관련 수정을 진행해서는 안된다.
- 절대 stratisd 를 죽여서는 안된다.
- 참고 - https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/managing_storage_devices/managing-layered-local-storage-with-stratis_managing-storage-devices
- 테크 프리뷰 상태
- stratis
- 파일 권한 문제 진단 및 수정
- vfat, ext4, xfs 파일 시스템 생성, 마운트, 분리 및 사용
- 시스템 배포, 설정 및 유지 관리
- at과 cron을 사용하여 태스크 스케줄링
- cron
- 목적
- 반복 작업
- 파일
- /etc/crontab
- /var/spool/cron/*
- 명령어
- crontab
- 데몬
- crond
- 목적
- at
- 목적
- 일회성 작업
- 파일
- /var/spool/at/*
- 명령어
- at [-l|-d|-b]
- 목록
- at -l 혹은 atq
- 삭제
- at -d 혹은 atrm
- 배치 - 시스템 자원 사용률이 낮을 때에만 작업 진행
- at -b 혹은 batch
- 데몬
- atd
- 목적
- 참고
- man cron[crontab]
- man at
- cron
- 서비스를 시작 및 중단하고 부팅 시 자동으로 시작하도록 서비스 설정
- systemd
- 시작
- systemctl start <서비스>
- 중단
- systemctl stop <서비스>
- 자동 시작
- systemctl enable <서비스>
- systemctl enable --now <서비스>
- 활성화와 동시에 바로 시작
- 시작
- systemd
- 자동으로 특정 타겟에 시스템이 부팅되도록 설정
- 목록
- systemctl -t target
- 현재 값 확인
- systemctl get-default
- 변경
- systemctl set-default *.target
- 목록
- 타임 서비스 클라이언트 설정
- chronyd
- 시작 및 등록
- systemctl enable --now chronyd
- 동기화 목록
- chronyc sources
- 동기화 상태
- chronyc tracking
- 동기화 서버 설정
- /etc/chronyd.conf
- server <IP 혹은 도메인>
- pool <IP 혹은 도메인>
- /etc/chronyd.conf
- 시작 및 등록
- 참고 - https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/configuring_basic_system_settings/using-chrony-to-configure-ntp
- chronyd
- Red Hat Network, 원격 리포지토리 또는 로컬 파일 시스템에서 소프트웨어 패키지 설치 및 업데이트
- 명령어
- yum 혹은 dnf
- 검색
- dnf search <검색어>
- 파일 기반 검색
- dnf whatprovides <파일명>
- 업데이트 확인
- dnf check-update
- 업데이트
- dnf update [<패키지>]
- dnf update --security
- 보안 업데이트
- dnf upgrade-minimal
- 자동 업데이트
- 설치
- dnf install -y dnf-automatic
- 운용
- systemctl enable --now dnf-automatic.timer
- 설치
- /etc/yum.repos.d
- 저장소 추가
- dnf config-manager --add-repo <주소>
- http 로 시작하면 원격지
- 아니면 파일
- dnf config-manager --add-repo <주소>
- 저장소 추가
- 명령어
- 패키지 모듈 스트림을 사용하여 작업
- 저장소 구분
- Base OS
- 기존의 RPM 배포
- AppStream
- 스트림
- 어플리케이션의 큰 구분
- 주로 버전으로 하지만, 버전만 가능한 것은 아니다.
- 어플리케이션의 큰 구분
- 프로필
- 설치 형태를 나타낸다.
- 스트림
- Base OS
- 운용
- 설치
- dnf module install <모듈 이름>:<스트림>/<프로필>
- 삭제
- dnf module remove <모듈이름>:<스트림>/<프로필>
- 스트림 옮기기
- dnf distro-sync
- 준비 상태 확인
- dnf module reset <모듈 이름>
- 모듈을 최신 상태로 변경
- dnf module enable <모듈 이름>:<스트림>
- 변경할 스트림으로 활성화
- dnf [--allowerasing] distro-sync
- 스트림 변경
- dnf distro-sync
- 설치
- 목적
- 하나의 시스템에서 다양한 버전의 어플리케이션을 사용
- 다양한 시스템에서 하나의 버전의 어플리케이션을 사용
- 참고
- 매뉴얼 - https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/installing_managing_and_removing_user-space_components/index
- 페도라 매뉴얼 - https://docs.fedoraproject.org/en-US/modularity/
- 커뮤니티 기반 특성상 아직 수정과 추가 작성이 필요한 문서가 많다.
- Fedora's modularity mess - https://lwn.net/Articles/805180/
- 레드햇의 지원을 받아 페도라에 RPM 모듈 지원을 고민하는 개발자들의 상황을 엿볼 수 있다. 기존과 다르기 때문에 어렵기도 하지만, 가야만 하는 자들을 볼 수 있다.
- 저장소 구분
- 시스템 부트로더 수정
- 파일
- /etc/sysconfig/grub
- /etc/default/grub
- 수동 생성
- grub2-mkconfig -o /boot/grub2/grub.cfg
- 확인
- 목록 - grubby --info=ALL
- 인덱스 - grubby --default-index
- 커널 - grubby --default-kernel
- 참고 - https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/system_administrators_guide/ch-working_with_the_grub_2_boot_loader
- 파일
- at과 cron을 사용하여 태스크 스케줄링
- 기본 네트워킹 관리
- IPv4 및 IPv6 주소 설정
- 파일 로드
- nmcli con load /etc/sysconfig/network-scripts/ifcfg-XXX
- 인터페이스 설정
- nmcli con add con-name <연결 이름> type <인터페이스 종류> ifname <인터페이스 이름>
- nmtui
- 터미널 인터페이스로 설정
- 인터페이스 시작
- nmcli con up <인터페이스>
- 인터페이스 속성 확인
- nmcli con show <인터페이스>
- 인터페이스 속성 변경
- nmcli con modify <인터페이스> <속성> <값>
- 라우팅
- 파일
- /etc/sysconfig/network-scripts/route-<인터페이스>
- 파일
- 참고 - https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/configuring_and_managing_networking/index
- 파일 로드
- 호스트 이름 확인 설정
- 확인
- hostnamectl
- hostname -f
- 설정
- hostnamectl set-hostname <호스트명>
- nmtui
- nmcli g[eneral] h[ostname] <호스트명>
- /etc/hostname
- 참고 - https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/networking_guide/ch-configure_host_names
- 확인
- 부팅 시 네트워크 서비스가 자동으로 시작하도록 설정
- systemctl enable NetworkManager
- firewall-cmd/firewall을 사용하여 네트워크 액세스 제한
- 특징
- 기본은 전부 차단
- 서비스
- systemctl status firewalld
- 목록
- 전체
- firewall-cmd --list-all
- 존
- firewall-cmd --get-default-zone
- firewall-cmd --get-zones
- firewall-cmd --get-active-zones
- 타겟
- firewall-cmd --get-default-target
- 서비스
- firewall-cmd --get-services
- firewall-cmd --info-service <서비스>
- 파일
- /usr/lib/firewalld
- 전체
- 정책
- 서비스
- firewall-cmd --permanent --add-service <서비스>
- firewall-cmd --permanent --remove-service <서비스>
- 포트
- firewall-cmd --permanent --add-port <포트 시작[-끝]>/<프로토콜>
- firewall-cmd --permanent --remove-port <포트 시작[-끝]>/<프로토콜>
- 호스트
- firewall-cmd --permanent --add-source <IP 주소>
- firewall-cmd --permanent --remove-source <IP 주소>
- 주의
- 정책 적용은 리로드 이후
- firwall-cmd --reload
- 정책 적용은 리로드 이후
- 서비스
- 참고 - https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/configuring_and_managing_networking/using-and-configuring-firewalld_configuring-and-managing-networking
- 특징
- IPv4 및 IPv6 주소 설정
- 사용자 및 그룹 관리
- 로컬 사용자 계정 생성, 삭제, 수정
- useradd
- usermod
- userdel
- 로컬 사용자 계정의 비밀번호 변경 및 비밀번호 유효 기간 설정 조정
- passwd
- chage
- 로컬 그룹 및 그룹 멤버십 생성, 삭제, 수정
- groupadd
- groupmod
- groupdel
- 슈퍼 사용자(superuser) 액세스 설정
- SUDO 권한 확인
- cat /etc/sudoers
- visudo
- 권한 할당
- usermod -aG wheel <사용자>
- useradd -G wheel <사용자>
- SUDO 권한 확인
- 로컬 사용자 계정 생성, 삭제, 수정
- 보안 관리
- firewall-cmd/firewalld를 사용하여 방화벽 설정
- systemctl enable firewalld
- 파일 액세스 제어 목록 생성 및 사용
- 목록
- getfacl <파일 경로>
- 정책 적용
- 추가 - setfacl -m [d:] u:<유저명>:<권한>
- 삭제 - setfacl -x [d:] u:<유저명>
- 목록
- 키 기반 SSH 인증 설정
- 키 생성
- ssh-keygen -t <암호화 방식>
- 키 전달
- ssh-copy-id <원격 유저>@<원격 주소>
- 주의
- 키 전달은 비밀번호를 이용한 로그인을 필요로 함
- 참고 - https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/configuring_basic_system_settings/using-secure-communications-between-two-systems-with-openssh_configuring-basic-system-settings
- 키 생성
- SELinux 실행 및 허용 범위 모드 설정
- 확인
- getenforce
- sestatus
- 파일
- /etc/selinux/config
- 참고 - https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/using_selinux/changing-selinux-states-and-modes_using-selinux
- 확인
- SELinux 파일 목록 작성 및 식별, 컨텍스트 처리
- 파일 목록
- ls -Z
- semanage fcontext -l
- matchpathcon <경로>
- 파일 목록
- 기본 파일 컨텍스트 복원
- restorecon -Rv
- 부울 설정을 사용하여 시스템 SELinux 설정 수정
- 확인
- getsebool -a
- 설정
- setsebool -P <불린 변수>
- 패키지 - policycoreutils
- 확인
- 일반적인 SELinux 정책 위반 진단 및 해결
- 읽기 쉬운 형태
- sealert -l "*"
- setroubleshoot 패키지 필요
- sealert -l "*"
- 기초
- ausearch -m AVC,USER_AVC,SELINUX_ERR,USER_SELINUX_ERR
- 참고 - https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/using_selinux/troubleshooting-problems-related-to-selinux_using-selinux
- 읽기 쉬운 형태
- firewall-cmd/firewalld를 사용하여 방화벽 설정
Red Hat의 모든 수행 기반 시험에서와 마찬가지로, 이러한 설정은 재부팅 후에도 변경 없이 유지되어야 합니다.
Comments