본문 바로가기
리눅스/기초 학습

Day 3: 사용자 및 그룹 관리

by CBROJIN 2025. 7. 24.

1) 학습 요약표

학습 내용 설명
사용자 계정 관리 useradd(-m, -G, -s, -u, -d), passwd(-e, -l, -u), usermod(-aG, -s, -d, -L), userdel(-r, -f)로 계정 생성, 수정, 삭제
그룹 관리 groupadd(-g, -K)로 그룹 생성, groupdel로 삭제, usermod -aG로 그룹 추가
계정 정보 확인 id, getent, /etc/passwd, /etc/group으로 UID/GID 및 그룹 확인
 

2) 이론 설명

(1) 사용자 계정 관리

기능 설명:

서버에서 사용자별 작업 환경을 분리하고 권한을 부여하기 위해 계정을 생성·관리한다. 이를 통해 홈 디렉토리, 권한, 로그인 쉘을 개별 설정하여 보안과 효율성을 높인다.

 

동작 원리:

  • /etc/passwd, /etc/shadow, /etc/group 파일에 UID(사용자 ID), GID(기본 그룹 ID), 홈 디렉토리, 로그인 쉘 정보가 저장된다.
  • 이 정보는 프로세스 실행과 파일 접근 권한에 직접적으로 반영된다.

주요 명령과 옵션:

useradd:

  • -m : 홈 디렉토리 자동 생성
  • -G : 보조 그룹 추가 지정
  • -s : 로그인 쉘 지정 (기본은 /bin/bash)
  • -u : UID 직접 지정 (NFS/NIS 환경 등 서버 간 계정 일관성 유지 필요 시)
  • -d : 홈 디렉토리 경로 지정

passwd:

  • -e : 비밀번호 만료 (최초 로그인 시 비밀번호 변경 강제)
  • -l : 계정 잠금
  • -u : 계정 잠금 해제

usermod:

  • -aG : 기존 그룹 유지하며 새 그룹 추가
  • -s : 로그인 쉘 변경
  • -d : 홈 디렉토리 변경
  • -L : 계정 잠금

userdel:

  • -r : 홈 디렉토리와 메일 스풀 삭제
  • -f : 강제 삭제 (로그인 중인 세션 포함)

예제:

sudo useradd -m -u 1201 -G developers -s /bin/bash devuser
sudo passwd devuser
sudo usermod -aG testers -d /srv/devhome devuser
sudo userdel -r -f devuser

설명:

  • UID 1201 지정으로 NFS/NIS 환경에서 계정 일관성을 유지할 수 있다.
  • 홈 디렉토리를 /srv/devhome으로 변경하고 testers 그룹에 추가한다.
  • -f 옵션을 사용하면 로그인 중인 계정도 강제로 삭제된다.

확인 방법:

  • id devuser : UID, GID, 그룹 확인
  • grep devuser /etc/passwd : 홈 디렉토리 및 쉘 확인
  • ls -ld /home/devuser : 홈 디렉토리 실제 생성 여부 확인

(2)  그룹 관리

기능 설명:

여러 사용자가 같은 프로젝트 디렉토리나 파일에 접근해야 할 때, 그룹을 생성하여 공통 권한을 부여한다. 그룹에 속한 사용자는 해당 그룹이 소유한 자원에 공동 접근이 가능하다.

 

주요 명령과 옵션:

groupadd:

  • -g : 그룹 ID(GID) 직접 지정 (여러 서버에서 동일 GID 유지 시 사용, 일반적으로 생략)

groupdel:

  • 그룹 삭제. 그룹에 남아있는 멤버가 없도록 사용자 정리 필요.

사용자 그룹 추가/제거:

  • usermod -aG [group] [user] : 기존 그룹 유지한 채 새 그룹에 사용자 추가
  • gpasswd -d [user] [group] : 특정 그룹에서 사용자 제거

예제:

sudo groupadd qa_team
sudo usermod -aG qa_team devuser
sudo gpasswd -d devuser qa_team
sudo groupdel qa_team

 

(3) 계정 정보 확인

기능 설명:

사용자의 UID, GID, 소속 그룹 정보를 확인하면 파일 접근 문제 해결과 권한 충돌 분석에 유용하다.

 

주요 도구:

1. id [username]:

  • UID, GID, 소속 그룹을 한 번에 확인
id devuser

출력 예시:

uid=1001(devuser) gid=1001(devuser) groups=1001(devuser),1002(developers)

 

2. getent passwd [username]:

  • 로컬 계정뿐 아니라 LDAP/NIS 계정 정보도 조회 가능
getent passwd devuser

출력 예시:

devuser:x:1001:1001::/home/devuser:/bin/bash

 

3. /etc/passwd, /etc/group 직접 확인:

  • 그룹에 포함된 사용자 확인
cat /etc/group | grep developers

출력 예시:

developers:x:1002:devuser

 

 

3) 기본 실습 과제

1.  홈 디렉토리와 bash 쉘을 가진 user01 계정을 생성하고 비밀번호 설정 후 UID/GID 확인.

 

2. devops 그룹 생성 후 user01을 그룹에 추가.

 

3. 계정 잠금 후 확인, 계정과 홈 디렉토리 삭제.

 

4) 심화 실습 과제

1. 개발자 계정 그룹 구성과 확인: devteam 그룹을 생성하고 devA, devB, devC 계정을 각각 홈 디렉토리와 bash 쉘로 생성하고 그룹에 추가. 각 계정의 UID/GID와 그룹을 확인.

 

2. 비밀번호 만료 처리 : devA 계정의 비밀번호를 만료시켜 다음 로그인 시 변경되도록 설정.

 

3. 계정 및 그룹 정리 : devA, devB, devC 계정을 홈 디렉토리와 함께 삭제하고 devteam 그룹도 삭제.

/etc/passwd /etc/group에서 삭제 결과를 확인.