본문 바로가기

Linux

06. CentOS7 명령어 - useradd, usermod, userdel, group

1. 사용자 및 그룹 관리

1.1. 관련된 파일 및 디렉토리

  • /etc/passwd
    • id, 패스워드, uid, gid, 코멘트, 홈디렉토리, shell
  • /etc/group
    • id, 패스워드, gid, 사용자
  • /etc/shadow
    • id, 패스워드, 마지막으로 패스워드 수정한 날짜, 패스워드 최소 사용기간. 패스워드 최대 사용기간, 경고메세지 출력일, 유예기간, 계정만료일
  • /etc/default/useradd
    • 기본그룹, 유예기간, 계정만료일, shell, spool생성여부
  • /etc/login.defs
    • 메일사서함위치, 패스워드최소사용일, 최대사용일, 경고메세지출력일, 패스워드 최소길이, uid시작 및 끝번호, gid시작 및 끝번호, 패스워드 암호화방식 sha512
  • /etc/skel
    • 사용자 계정 생성시 기본적으로 홈디렉토리에 복사하는 파일 및 디렉토리

 


 

2. 사용자 계정 생성

2.1. 사용자 계정 생성 시 자동 생성되는 디렉토리 및 파일

  • /home/계정이름 디렉토리 생성됨. 사용자의 홈디렉토리
  • /var/spool/mail/계정이름 파일생성. (메일 사서함 파일 = /var/mail/계정이름)
  • 동일한 이름의 계정 생성 시 계정은 생성되지만 uid 충돌 문제 발생

 


 

3. /etc/passwd 파일 분석

3.1. 원본 a:x:1000:1000::/home/aa:/bin/bash

 

3.2. 분석 (컬럼별로 분석, 컬럼은 콜론으로 구분됨)

  • a:
    • ID
  • x:
    • password
  • 1000:
    • uid
    • 사용자별로 고유하다.
    • 기본적으로 1000번부터 생성된다.
    • /etc/login.defs
  • 1000:
    • gid
    • 그룹별로 고유하다.
    • 사용자 계정을 생성하면 동일한 그룹이 자동으로 생성됨
  • :
    •  코멘트 설명
  • /home/a:
    • 사용자의 홈디렉토리
  • /bin/bash:
    • login 시 주어지는 Shell

 

 

4. useradd, usermod, userdel

4.1. 사용자 계정 생성 시 /etc/passwd의 Colume 값을 변경할 수 있는 옵션

  • -u : uid 설정
    • 기본적으로 1000번 부터 할당
    • 마지막 uid 값 이후로 생성
  • -g : gid 설정
    • 기본적으로 uid와 동일한 gid 자동 생성
    • 단 -g 옵션은 해당 그룹이 존재하여야 함
  • -G : 추가 그룹 설정
  • -c : coment 생성
  • -d : 홈디렉토리 지정 (이때 해당 홈 디렉토리는 존재하는 디렉토리여야 한다.)
  • -s : login Shell 지정
    • 기본값 : /bin/bash
    • shell : 명령어 해석기, App에서 전달하는 명령을 받아서 Kernel에 전달. shell이 없으면 login 불가
    • 현재 shell 확인 : # echo $SHELL
    • 모든 shell 확인 : # cat /etc/shells
    • login shell 변경 : # chsh -s [로그인shell] [사용자명]
    • login 불가능하도록 설정
      • /bin/false : 로그인 불가 메세지 출력 안함
      • /sbin/nologin : 로그인 불가 메세지 출력

※ aa 계정 생성

 

※ a, b, c 계정 생성

  • /etc/passwd 파일에서 생성된 계정 정보 확인 가능 (마지막으로 생성된 계정의 uid에서 +1씩 차례대로 부여됨)
  • /var/spool/mail 디렉토리 아래에 생성된 각 유저의 메일 사서함 파일 확인 가능
  • /home 디렉토리 아래에 생성된 각 유저의 홈 디렉토리 확인 가능

 

※ b 계정 생성. uid는 2000으로 설정

 

※ c 계정 생성. gid는 3000

  • group이 없을 경우 그룹 먼저 생성하기

 

※ d 계정 생성. uid는 3001, gid는 3000, 추가그룹 2000, 코멘트 admin

 

※ f 계정 생성. 코멘트는 test, 쉘은 로그인 불가로 설정하며 메세지는 출력하지 않음. 홈디렉토리는 /home_1 아래에 생성

 

※ 루트 계정의 쉘을 본쉘로 변경

 

 

4.2. usermod ( 옵션은 useradd와 동일)

  • 홈디렉토리 변경 시 내부 컨텐츠 이동을 위해서는 -m 옵션 추가
  • ex) # usermod -d /home_1/a -m a

※ test1 계정의 gid를 2000, 코멘트를 test123, 홈 디렉토리를 /home/test1 로 변경

  • nologin 쉘로 지정되어 있어 로그인을 할 수 없으며, 메세지가 출력된다.
  • 홈 디렉토리 변경 시 -m 옵션을 주어야 아래에 있는 데이터들도 이동된다.

 

 

4.3. userdel

  • 사용자 계정 삭제
  • 사용자 계정 삭제 시 유의할 점
    • -r 옵션을 반드시 추가해서 삭제해야 한다.
  • 계정 생성 시 생성되는 파일/디렉토리
    • 홈디렉토리 생성 /home/계정명
    • 메일 사서함 파일 생성 /var/mail/계정명 and /var/spool/mail/계정명 (동일한 파일임)
  • -r 옵션 없이 삭제 시 위의 두 개의 디렉토리 및 파일이 그대로 남는다.
    • 동일한 계정 생성 시 uid 충돌 문제 발생. 해당 계정 -r 삭제해도 디렉토리 및 파일 존재 error
  • 해결책
    • 사용자 홈 디렉토리와 메일풀 디렉토리를 삭제한다.
    • ex ) # rm -rf /home/계정명
    •       # rm -rf /var/spool/mail/계정명

※ aa 계정 삭제 (-r  옵션)

  • -r 옵션을 주어 삭제할 경우 사용자의 홈디렉토리와 메일사서함파일이 함께 삭제되는 것을 확인할 수 있다.

 

※ c 계정 삭제 (-r 옵션 주지 않음)

  • -r 옵션을 주지 않을 경우 홈 디렉토리와 메일 사서함 파일이 그대로 남아 있는 것을 볼 수 있다.
  • 이때는 수동으로 해당 파일 및 디렉토리를 삭제해준다.

※ 홈 디렉토리와 메일 사서함 파일 명령어로 삭제

 

※ -r 옵션을 주지 않고 b 계정 삭제 후, 다시 b 계정을 생성

  • -r 옵션을 주지 않고 b 계정을 삭제하여 b 계정의 홈디렉토리와 메일파일이 남아있는 상태
  • 삭제한 b 계정과 uid 값 다르게 새로운 b 계정 생성
  • 계정 생성 시 기존 b 계정의 파일/디렉토리가 남아있어 경고 메세지가 출력됨
  • 새로 생성한 b 계정을 -r 옵션을 주어 삭제하면 소유자가 아니라는 메세지가 출력되며 홈디렉토리와 메일파일이 삭제되지 않음
  • uid가 달라서 홈디렉토리와 메일파일이 삭제되지 않는다.
  • 같은 계정명과 같은 uid를 가지도록 생성해 보았는데,  이 경우 정상적으로 삭제되는 것을 확인함

 


 

5. group 명령어

5.1. 그룹 생성

  • groupadd -g [gid] [그룹명]

5.2. 그룹 삭제

  • groupdel [그룹명]

5.3. 그룹에서 유저 삭제

  • gpasswd -d [그룹에서 삭제할 유저명] [그룹명]
  • 유저 삭제 시 해당 그룹에 다른 유저가 있을 경우 그룹 삭제가 안됨.
  • 따라서 그룹에 들어가있는 다른 유저들 삭제 후에 유저를 삭제하거나, 유저를 이미 삭제했을 경우 그룹디렉토리를 삭제한다.
  • 기본 그룹은 뺄 수 없음

문제 풀어보기

[문제 1] 사용자 test1 생성 uid 3001(그룹명: tgroup1), gid 3002, 추가그룹 4001(그룹명: tgroup2), 코멘트는 testuser, 홈 디렉토리는 /home_3/ 아래에 생성 유저명으로 생성, 쉘은 배쉬쉘 사용하라.

 

[문제2] 사용자 test1의 그룹을 3001(test1), 홈디렉토리는 /home_4/test1로 변경하며 컨텐츠도 모두 이동, 
코멘트는 test1user, 로그인 불가로 설정하며 메세지는 출력되지 않도록 변경하라