RHCSA 7일차

Chapter 5. Securing Systems with Users, Groups, and Permissions

Jun Noh

1. 시스템 환경 표준화 (Standardization)

일단 자꾸 한글 인코딩 버그가 나는게 짜증나서 시스템 언어 및 키보드 설정을 영문 표준으로 고정한다.

  • Locale 설정: localectl set-locale LANG=en_US.UTF-8 명령어로 시스템 언어를 영어로 변경한다.

  • Keyboard 설정: localectl set-keymap us를 실행하여 가상 콘솔(VC)과 X11 레이아웃을 미국 표준 배열로 맞춘다.

  • 설정 확인: localectl 명령어로 System LocaleVC Keymap이 모두 usen_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. 실습 미션

[미션 시나리오]

  1. Group: devops 그룹 생성.

2.User: dev_user 생성 (Primary Group: devops, Comment: “Junior Developer”).

  1. Sudo: dev_userdnf 명령어를 NOPASSWD로 실행하도록 설정.

  2. Password Policy*: 최대 사용 기간 90일, 만료 경고 7일 설정.

  3. Shared Directory: /project 디렉토리 생성 및 SGID 적용.

[내 답안]

  • User/Group: groupadduseradd -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)

아직까지는 아주 기본적인 내용만 훑고있다.

아주 무난하다.

마침.

다른 글 보기