[리눅스마스터 1급 - 2차] 사용자/그룹 계정 관리

2024. 10. 23. 17:46·자격증 & 공부/리눅스마스터 1급

1. 리눅스 계정 종류

1.1. 사용자 분류

  • 루트 계정 : 모든 권한을 가진 특별한 사용자
  • 시스템 계정 : 리눅스 설치 시 기본으로 생성되는 계정
  • 사용자 계정 : 실제 리눅스 사용자를 위한 계정

→ 리눅스에서는 사용자를 root(관리자)와 일반 사용자로 구분

→ 각 계정은 번호로 부여하는 UID로 관리함

 

root(Super User) 계정

  • UID 값이 0으로 지정된 관리자 계정
  • 다른 계정을 생성하거나 권한을 부여하고 비밀번호를 바꿀 수 있음

일반 사용자

  • 관리자에게 권한을 부여 받아 사용

시스템 계정

  • 필요에 의해 자동으로 생성되는 시스템 계정
  • bin, daemon, adm, lp, sync, shutdown 등 여러가지가 있으며, 일반적으로 로그인은 불가능함

 

1.2. 계정 확인 명령어

1.2.1. 계정 확인

# 현재 사용자의 UID, GID, 그룹정보를 확인하는 명령어
$ id
uid=0(root) gid=0(root) groups=0(root), 4(adm)

# 현재 시스템을 사용하는 사용자의 정보와 작업 정보를 출력
w
USER   TTY    FROM   LOGING   IDLE   JCPU   PCPU   WHAT
root   tty1   -      01:46    1.00s  0.00s  0.00s  w

# 현재 시스템을 사용하는 사용자의 정보를 출력
who
root tty1 2024-10-23 01:46

# 유효 사용자 아이디의 정보를 확인 (사용자명 출력)
$ whoami
root

# 시스템에 접속할 당시의 계정명과 접속 정보를 확인
who am I 또는 who -m
root tty1 2024-10-23 01:46

# 현재 호스트에 로그인되어 있는 모든 사용자 출력
users 
root

# 시스템 내에 있는 사용자 계정에 대한 정보를 출력
lslogins
UID   USER   PROC   PWD-LOCK   PWD-DENY   LAST-LOGIN   GECOS
  0   root     93          0          0        01:46   root
  1   test     0           1          0

계정 전체 확인

# 전체 목록 확인
$ cat /etc/passwd

 

2. 루트 계정 관리

2.1. 루트 계정 명령어

2.1.1. root 암호 설정

$ sudo passwd root
# 패스워드 입력 후 로그인

2.1.2. root 로그인

# 현재 계정에서 root 권한을 이용하여 명령어를 실행할 때 사용하는 명령어
# sudo : superuser do
$ sudo

# 로그아웃을 하지 않고 다른 사용자의 계정으로 전환
# su : switch user
$ su [계정명]

 

3. 사용자 계정 관리

3.1. 계정 추가 명령어

3.1.1. 사용자 추가 : useradd

useradd [옵션] 사용자명

→ 추가된 사용자는 /etc/passwd 파일에서 확인 가능

$ cat /etc/passwd
root:x:0:0::/root:/bin/sh
testuser:x:1000:1000::/home/testuser:/bin/sh
[사용자명]:[비밀번호]:[uid]:[gid]:[사용자 계정 설명]:[홈 디렉터리]:[셸]

3.1.2. 주요 옵션

  • -b : 홈 디렉터리가 지정되지 않은 경우 시스템이 기본 디렉터리
  • -c : 주석
  • -d 경로 : 사용자 홈 디렉토리 경로 지정
  • -D : /etc/default/useradd 정보
  • -e : 만료일 지정 (YYYY-MM-DD)
  • -f : 패스워드 만기일을 날짜 수로 지정
  • -g 그룹명 : 1차 그룹 지정
  • -G 그룹명 : 2차 그룹 지정
  • -k : /etc/skel (skeldir 지정)
  • -m : 사용자 홈 디렉토리 생성
  • -p : 사용자 암호를 추가 시 지정
  • -s : 사용할 쉘 지정
  • -u : uid 값 지정
  • -U : 사용자 생성 시 사용자명으로 그룹 생성

3.1.3. 사용자 생성 정보 기본 정보 확인

# 신규 사용자 추가 시 반영되는 기본 사항들을 확인하는 명령어
$ useradd -D
$ cat /etc/default/useradd

3.1.4. 예시

  • 사용자 추가 시에 생성되는 홈 디렉터리를 /home2 디렉터리의 하위 디렉터리가 되도록 변경함
    • -useradd –D -b /home2
  • 사용가 추가 시에 부여되는 기본 셸을 /bin/csh가 부여되도록 변경함
    • useradd -D -s /bin/csh
  • 해당 설정의 변경 여부를 확인함
    • cat /etc/default/useradd

3.2. 패스워드 설정

passwd [옵션] 사용자명

3.2.1. 주요 옵션

  • -d : 패스워드 삭제 (패스워드 없이 로그인 가능)
  • -l : 패스워드 일시적 잠금
  • -u : 패스워드 일시적 잠금 해제
  • -e : 다음 로그인 시 반드시 패스워드 변경
  • -x : 패스워드 유효기간
  • -n : 패스워드 변경 후 최소 날짜
  • -w : 패스워드 만료 전 경고 날짜
  • -i : 패스워드 만료된 후 실제 계정이 로그인이 불가능하기까지의 유예기간
  • -S : 사용자에 대한 패스워드 정보를 알려줌

3.3. 패스워드 관리

chage [옵션] 사용자명

3.3.1. 주요 옵션

  • -d : /etc/shadow의 3번째 필드 (패스워드 바꾼날 수정)
  • -E : 만료일(YYYY-MM-DD)
  • -I (i의 대문자) : 패스워드 만료된 후 lock 될 때까지의 유예기간
  • -l : 사용자에 대한 패스워드 정보 보여줌
  • -m : 최소 날짜 수
  • -M : 최대 날짜 수
  • -W : 만료 전 경고 날짜

3.4. 계정 전환 / 설정 / 삭제 명령어

3.4.1. 계정 전환(su)

# 다른 사용자의 권한으로 실행
$ su [옵션] 사용자명
  • -c : 지정한 사용자로 셸이 실행할 명령어 지정
  • -, -ㅣ : 사용자가 직접 로그인했을 때 동일하게 환경 변수가 설정되고 홈 디렉터리로 이동
  • -s : 명시된 셸 사용

3.4.2. 계정 설정

usermod [옵션] 사용자명
  • -d 새로운_경로 : 사용자의 홈 디렉토리 변경 (m 옵션과 같이 사용 시 홈 디렉토리의 파일, 디렉터리도 같이 옮김)
  • -e : 만료일 변경
  • -f : 비번이 만기되고 실제 계정이 lock 될 때까지의 유예기간
  • -g : 1차 그룹 변경
  • -G : 2차 그룹 변경
  • -a -G : 사용자를 추가 그룹에 추가
  • -l : 사용자 이름을 변경
  • -L : 계정 잠금
  • -m : 사용자의 홈 디렉터리로 이동
  • -s : 사용할 쉘 변경
  • -u : uid 값 변경
  • -U : 계정 잠금 해제
# ihduser의 사용자명을 kaituser로 변경
# 홈 디렉터리를 /home/ihduser에서 /home/kaituser로 변경하고, 기존에 소유했던 파일이나 디렉터리도 그대로 이용가능하도록 함
usermod -l kaituser -d /home/kaituser -m ihduser

3.4.3. 계정 삭제

userdel [옵션] 사용자명

# 계정삭제. 단, 홈 디렉터리 파일은 남아있음
$ userdel testuser

# -r 옵션을 통해 사용자 계정 홈 디렉터리도 삭제
$ userdel -r testuser

# -f 옵션으로 강제 삭제
$ userdel -f testuser

 

4. 그룹 계정 관리

4.1. 그룹 계정 명령어

4.1.1. 그룹 출력

# 특정 사용자나 현재 로그인한 사용자가 속한 그룹을 표시
$ groups

4.1.2. 그룹 생성

groupadd [옵션] 그룹명
  • -f : 그룹을 생성할 때 이미 생성되어 있더라도 성공으로 간주
  • -r : 시스템 그룹을 생성
  • -g : 그룹의 양수의 GID를 지정
  • -o : 그룹을 생성할 때 중복된 GID 값 허용

4.1.3. 그룹 정보 변경

groupmod [옵션] 그룹명
  • -g : 변경할 GID 설정
  • -n : 그룹의 이름 변경

4.1.4. 그룹 삭제

# 그룹을 삭제하기 위해선 주 그룹에 존재하는 사용자가 없어야 함
groupdel 그룹명

4.1.5. 그룹 관리 및 패스워드 변경

gpasswd [옵션] 그룹명
  • -a : 그룹에 사용자를 추가
  • -d : 그룹에 사용자 삭제
  • -r : 그룹의 패스워드 제거
  • -R : 그룹 접근 제한
  • -A : 관리자로 지정할 사용자 설정
  • -M : 그룹멤버 설정

4.1.6. 그룹 참여

# 참여하려는 그룹에 그룹 패스워드가 존재하는데, 사용자가 명령어를 통해 그룹에 참여하려면 해스워드 입력 필요
$ newgrp 그룹명

 

5. 사용자 계정 환경 설정 파일

  • 계정 및 그룹 설정 파일
    • /etc/passwd : 사용자 계정의 아이디, 그룹 정보 등 계정정보
    • /etc/shadow : 암호화된 패스워드 및 정책 설정 정보
    • /etc/group : 사용자 그룹의 기본정보
    • /etc/gshadow : 사용자 그룹의 암호화된 패스워드 정보
  • 계정 환경설정 파일
    • /etc/default/useradd : 기본 사용자 부가정보
    • /etc/login.defs : 로그인 수행 시 기본설정
    • /etc/skel : 홈 디렉터리 생성 시 기본으로 제공할 파일

5.1. 환경 설정 파일 종류

5.1.1. /etc/passwd

  • 로그인 시 필요한 UID, GID, 홈 디렉터리, 셸 등의 사용자 계정 정보를 포함
  • 모든 사용자에게 읽기 권한 가진 파일
  • 루트 사용자만 쓰기 허용
  • 각 사용자들에 대한 암호 정보를 담고 있음
$ cat /etc/passwd
 userid:x:14:50:FTP This is test User:/var/userid:/sbin/nologin
 [사용자명]:[비밀번호]:[UID]:[GID] [사용자설명]:[홈디렉토리]:[쉘경로]

# 사용자 명 : 로그인 할때 사용하는 사용자이름
# 비밀번호 : x는 암호화된 패스워드를 보관하고있다는 의미
# UID : 사용자 번호
# GID : /etc/group 파일에 보관된 주 그룹 ID번호
# 사용자 설명 : 사용자에대한 추가설명 코멘트 필드
# 홈 디렉터리 : 기본디렉터리로 절대경로로 설정
# 셸 : 셸의 위치를 절대 경로로 지정

5.1.2. /etc/shadow

  • 사용자 패스워드를 해시 알고리즘으로 암호화한 값과 패스워드와 연관된 여러 속성을 담고 있는 파일
$ cat /etc/shadow
 francis: $fislf2R$R45trhertsdfs:18119:0:99999:7:  :  :
 [사용자명]:[패스워드]:[마지막 변경일]: [패스워드] [최소사용일]:[최대사용일]:[만료경고일]:[유예기간]:[만료일]

5.1.3. /etc/default/useradd

  • 사용자 생성 시 사용되는 기본 설정값이 저장된 환경설정 파일

5.1.4. /etc/login.defs

  • 사용자의 패스워드에 적용되는 해시 알고리즘의 이름을 확인할 수 있는 파일
  • 사용자 계정의 설정과 관련된 기본값을 정의한 파일
  • 기본 메일 디렉터리, 패스워드 에이징, 사용자 계정의 UID/GID 값 범위 등의 기본값을 설정할 수 있음
    • PASS_MIN_LEN : 패스워드 길이 지정
    • PASS_MIN_DAYS : 패스워드 변경없이 사용가능한 기간
    • PASS_WARN_AGE : 패스워드 만료 경고일

5.1.5. /etc/skel

  • 사용자 계정 생성 시 공통으로 배포할 파일이나 디렉터리를 저장하는 디렉터리

5.1.6. /etc/group

  • 그룹에 속한 사용자를 관리하는 파일
  • 그룹에 여러 사용자가 속할 수 있음
$ cat /etc/group | grep mail
 mail:x:12:mail,postfix
 [그룹명]:[패스워드]:[GID]:[멤버목록]Copy

5.1.7. /etc/gshadow

  • 그룹의 암호화된 비밀번호 정보를 포함
  • 루트 권한 사용자만 접근 가능
$ cat /etc/gshadow
 test:$65$ssafhasrjkg/sasldfjsadkf:test:francis
 [그룹명]:[패스워드]:[그룹관리자]:[멤버목록]

참고 문헌

https://inpa.tistory.com/entry/LINUX-📚-사용자-계정-관리-명령어-💯-정리

 

🐧 리눅스 사용자/그룹 계정 관리 명령어 💯 총정리

리눅스 계정 종류 사용자 분류 루트 계정 : 모든 권한을 가진 특별한 사용자 시스템 계정 : 리눅스 설치시 기본으로 생성되는 계정 사용자 계정 : 실제 리눅스 사용자를 위한 계정 리눅스에서는

inpa.tistory.com

 

 

저작자표시 비영리 변경금지 (새창열림)

'자격증 & 공부 > 리눅스마스터 1급' 카테고리의 다른 글

[리눅스마스터 1급 - 2차] 파일 및 디렉터리 권한  (0) 2024.10.23
[리눅스마스터 1급 - 2차] 파일 링크 (하드 링크 / 심볼릭 링크 / inode)  (0) 2024.10.23
[리눅스마스터 1급] 필기 시험 후기  (0) 2024.09.09
[리눅스마스터1급 - 1차] 2과목 - 6-3. 시스템 백업  (0) 2024.06.13
[리눅스마스터1급 - 1차] 2과목 - 6-2. 시스템 보안 및 관리  (0) 2024.06.13
'자격증 & 공부/리눅스마스터 1급' 카테고리의 다른 글
  • [리눅스마스터 1급 - 2차] 파일 및 디렉터리 권한
  • [리눅스마스터 1급 - 2차] 파일 링크 (하드 링크 / 심볼릭 링크 / inode)
  • [리눅스마스터 1급] 필기 시험 후기
  • [리눅스마스터1급 - 1차] 2과목 - 6-3. 시스템 백업
woojin._.
woojin._.
여러가지 개발을 해보며 발생하는 이야기들에 대한 블로그입니다:)
  • woojin._.
    Jin's Dev Story
    woojin._.
  • 전체
    오늘
    어제
    • 분류 전체보기 (829)
      • Tools (25)
        • eGovFrame (3)
        • GeoServer (3)
        • QGIS (2)
        • LabelImg (2)
        • Git (6)
        • GitHub (1)
        • Eclipse (7)
        • Visual Studio (1)
      • Web & Android (121)
        • SpringBoot (37)
        • Three.js (2)
        • Spring Data JPA (9)
        • 스프링 부트 쇼핑몰 프로젝트 with JPA (25)
        • Thymeleaf (4)
        • Spring Security (15)
        • Flutter (29)
      • Programming Language (61)
        • JAVA (27)
        • JavaScript (14)
        • Dart (2)
        • Python (15)
        • PHP (3)
      • Database (43)
        • PostgreSQL (32)
        • MYSQL (7)
        • Oracle (3)
        • MSSQL (1)
      • SERVER (17)
        • TCP_IP (3)
        • 리눅스 (7)
        • AWS (7)
      • Coding Test (445)
        • 백준[JAVA] (108)
        • 프로그래머스[JAVA] (260)
        • 알고리즘 고득점 Kit[JAVA] (3)
        • SQL 고득점 Kit[ORACLE] (74)
      • CS 지식 (49)
        • [자료구조] (14)
        • [네트워크] (12)
        • [데이터베이스] (10)
        • [알고리즘] (9)
        • [운영체제] (4)
      • 기타 (6)
      • 자격증 & 공부 (62)
        • 정보처리기사 (2)
        • SQLD (6)
        • 네트워크관리사 2급 (5)
        • 리눅스마스터 1급 (44)
        • 리눅스마스터 2급 (1)
        • ISTQB (3)
        • 시스템보안 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 인기 글

  • 태그

    DB
    programmers
    Java
    플러터
    Flutter
    리눅스마스터 1급
    JPA
    postgresql
    스프링부트
    리눅스마스터
    springboot
    Oracle
    CS
    시큐리티
    자바
    스프링
    스프링 부트 쇼핑몰 프로젝트 with JPA
    프로그래머스
    backjoon
    Linux
    baekjoon
    데이터베이스
    python
    pcce 기출문제
    spring
    Spring Security
    데이터
    CS지식
    백준
    리눅스
  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
woojin._.
[리눅스마스터 1급 - 2차] 사용자/그룹 계정 관리
상단으로

티스토리툴바