RHCSA 7일차
Chapter 5. Securing Systems with Users, Groups, and Permissions
1. 시스템 환경 표준화 (Standardization)
일단 자꾸 한글 인코딩 버그가 나는게 짜증나서 시스템 언어 및 키보드 설정을 영문 표준으로 고정한다.
-
Locale 설정:
localectl set-locale LANG=en_US.UTF-8명령어로 시스템 언어를 영어로 변경한다. -
Keyboard 설정:
localectl set-keymap us를 실행하여 가상 콘솔(VC)과 X11 레이아웃을 미국 표준 배열로 맞춘다. -
설정 확인:
localectl명령어로 System Locale과 VC Keymap이 모두us및en_US기반인지 검증한다.
2. 사용자 및 그룹 관리
다중 사용자 환경에서 보안 경계를 설정하기 위한 가장 기초적인 단계다.
-
사용자 생성:
useradd명령어를 사용한다.-g옵션으로 Primary Group을,-c옵션으로 사용자 설명을 추가할 수 있다. -
그룹 관리:
groupadd로 새로운 그룹을 생성하고,usermod -aG를 통해 기존 그룹을 유지하며 새로운 보조 그룹을 추가한다. -
정보 확인:
id <username>을 통해 UID, GID, 소속 그룹 리스트를 실시간으로 확인한다.
3. 비밀번호 보안 정책 (Password Aging)
계정 탈취 방지를 위해 비밀번호의 유효 기간을 강제하는 설정이다.
-
chage 도구:
/etc/shadow파일의 만료 정보를 제어한다. -
chage -M 90 <user>: 비밀번호 최대 사용 일수를 90일로 제한한다. -
chage -W 7 <user>: 만료 7일 전부터 로그인 시 경고 메시지를 출력한다. -
계정 상태 확인:
chage -l <user>명령어로 모든 에이징 정책을 리스트 형태로 출력한다.
4. 관리자 권한 위임 (Sudo)
root 비밀번호 노출 없이 특정 사용자에게 제한된 관리자 권한을 부여한다.
-
설정 파일:
/etc/sudoers파일을 직접 수정하지 않고 반드시visudo를 사용해 구문 오류를 방지한다. -
NOPASSWD 설정:
dev_user ALL=(ALL) NOPASSWD: /usr/bin/dnf와 같이 설정하면 해당 사용자는 비밀번호 입력 없이 특정 명령어만sudo로 실행 가능하다. -
wheel 그룹: RHEL 9에서 기본적으로 모든 관리 권한이 부여된 특수 그룹이다.
5. 파일 권한 및 특수 권한 (SGID)
표준 Permission과 더불어 협업 환경에 필수적인 특수 권한을 관리한다.
-
기본 권한 변경:
chmod,chown,chgrp명령어를 사용하여 소유자와 그룹, 권한 모드를 제어한다. -
SGID (Set-Group-ID):
-
디렉토리에
chmod g+s를 설정하면 해당 디렉토리 내에 생성되는 모든 파일은 생성자의 기본 그룹이 아닌 디렉토리의 소유 그룹을 상속받는다. -
이는 팀 단위 프로젝트 디렉토리에서 파일 소유권 문제를 해결하는 핵심 기술이다.
-
권한 확인:
ls -ld실행 시 그룹 권한의 실행 비트 자리에s가 표시되는지 확인한다.
6. 실습 미션
[미션 시나리오]
- Group:
devops그룹 생성.
2.User: dev_user 생성 (Primary Group: devops, Comment: “Junior Developer”).
-
Sudo:
dev_user가dnf명령어를NOPASSWD로 실행하도록 설정. -
Password Policy*: 최대 사용 기간 90일, 만료 경고 7일 설정.
-
Shared Directory:
/project디렉토리 생성 및 SGID 적용.
[내 답안]
- User/Group:
groupadd및useradd -g옵션으로 정확히 생성 완료. - Sudoers:
visudo를 통해dev_user ALL=(ALL) dnf라인 추가. - Permissions:
chmod g+s /project를 통해 특수 권한 부여. - Aging:
chage명령어를 사용하여 유효 기간 설정.
[답안]
# 1 & 2. 그룹 및 사용자 생성
sudo groupadd devops
sudo useradd -g devops -c "Junior Developer" dev_user
# 3. Sudo 권한 위임 (명령어 전체 경로 사용 권장)
# visudo 실행 후 아래 내용 추가
dev_user ALL=(ALL) NOPASSWD: /usr/bin/dnf
# 4. 비밀번호 정책 설정
sudo chage -M 90 -W 7 dev_user
# 5. 공유 디렉토리 설정 (SGID 포함)
sudo mkdir /project
sudo chown :devops /project
sudo chmod 2775 /project # 2(SGID) + 775(rwxrwxr-x)
아직까지는 아주 기본적인 내용만 훑고있다.
아주 무난하다.
마침.