강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

사용자및그룹관리 1편 : 새로운 사용자 생성, 일시정지, 삭제하기

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

사용자및그룹관리 1: 새로운 사용자 생성, 일시정지, 삭제하기

 

리눅스 서버의 계정관리의 가장 기초적인 업무는 바로 새로운 사용자를 생성하는 작업입니다. 

 

 그리고 계정을 생성할 때에 사용하는 명령어가 useradd입니다. 

 

 이번 절에서는 리눅스 서버에서 useradd를 이용하여 새로운 계정을 생성하고 관리하는 여러가지 실무적인 기법들에 대해서 알아보도록 하겠습니다. 

 

 useradd를 이용하여  계정사용자를 생성할 수도 있고, 메일사용자를 생성할 수도 있습니다. 

 

 , 원하는 계정을 생성할 때 사용하는 리눅스 관리자용 명령어입니다. 

 

 , useradd는 관리자용 명령어이므로 일반사용자들은 사용할 수  없는 명령어입니다. 

 

 

 

, 그럼 먼저 간단한 계정생성을 해보도록 하겠습니다. 

 

  useradd라는 명령어를 실행함으로서 리눅스 서버가 내부적으로 어떤 파일을 참조하며 어떠한 과정을 거쳐서 계정을 생성하는가? 그리고 useradd의 실행결과로 생성되는 파일들과 디렉토리들이 어디에 어떻게 생성이 되는가를 정확히 이해하시기 바랍니다. 

 

 여기서 설명하는 것은 useradd를 이용하여 단순히 계정을 생성하는 작업만을 설명하고 있는 것이 아니라 리눅스 서버의 내부적인 실무처리과정을 이해하도록 설명할 것입니다 .

그리고 기존에 사용하고 있던 계정을 삭제하는 userdel과 함께 기존 계정의 계정정보를 변경하는 usermod에 대해서도 이번 절에서 함께 알아볼 것 입니다. 

 

 

 

가장 간단한 계정생성방법과 그 결과분석

 

먼저, 가장 간단한 방법으로 계정을 생성해 보도록 하겠습니다. 

 

 

cb7659c654fd99a396bca435184bb9c9_1649660473_5278.png
 

 

위의 예에서 bible이라는 일반사용자 계정을 생성하였습니다. 

 

 그리고 다음은 방금 생성한 bible이라는 계정의 패스워드를 생성하는 작업입니다. 

 

 

cb7659c654fd99a396bca435184bb9c9_1649660485_4683.png
 

 

지금까지 가장 간단하고 보편적인 방법으로 bible이라는 계정 사용자의 생성과 패스워드를 입력하는 작업을 하였습니다. 

 

 이러한 작업은 여러분들도 너무나 잘 알고 계실 것입니다. 

 

 , 그럼 이제 이와 같은 작업의 결과로 인하여 서버내부에는 어떤 일이 있었는가를 확인해 보도록 하겠습니다. 

 

 

 

먼저, useradd명령의 실행에 의해 bible이라는 계정정보가 /etc/passwd파일의 맨 마지막 행에 다음과 같이 추가되어 있습니다. 

 

 
cb7659c654fd99a396bca435184bb9c9_1649660499_8652.png


위의 결과를 보시는 바와 같이 /etc/passwd파일의 맨 마지막행에 bible사용자의 ID(bible), 암호필드(x), UID(500), GID(500),이름, 홈디렉토리위치(/home/bible), 사용쉘(/bin/bash)이 차례대로 등록되어 있음을 알 수 있습니다. 

 

 

 

그리고 passwd의 실행으로 다음과 같이 /etc/shadow파일에 bible행에는 다음과 같은 정보가 등록되어 있습니다. 

 

 

cb7659c654fd99a396bca435184bb9c9_1649660516_2259.png
 

 

, 위의 결과를 보시면 /etc/shadow파일의 bible행에 bible사용자의 aging정보(암호, 계정종료일자, 패스워드종료일자등)가 등록되어 있습니다. 

 

 

 

 

[참고] useradd로 계정만 생성하고 passwd는 입력하지 않는다면
useradd
로 계정만 생성하고 passwd로 사용자의 패스워드를 입력하지 않았다면 그 사용자의 로그인은 허용되지 않습니다. 

 

 , passwd를 입력하기 전의 사용자에 대한 /etc/shadow파일의 내용은 다음과 같습니다. 

 

 


cb7659c654fd99a396bca435184bb9c9_1649660532_5742.png

 

이 경우에는 위와는 달리 /etc/shadow파일의 암호문자 자리에 “!!”라는 문자만 등록이 되며 이 문자는 어떠한 패스워드로 받아들이지 않기 때문입니다. 

 

 

 

 

그리고 이번에는 /etc/group파일에 bible사용자의 그룹정보가 다음과 같이 등록되어 있습니다. 

 

 

cb7659c654fd99a396bca435184bb9c9_1649660545_0924.png
 


, 위의 결과를 보시면 useradd명령으로 새로운 사용자를 생성하면 /etc/group파일에 위와 같은 그룹정보(그룹명(bible), 그룹패스워드(x), 그룹GID(500), 그룹소속사용자)가 생성된다는 것을 알 수 있습니다. 

 

 

 

그리고 이번에는 새로 생성된 bible이라는 사용자의 홈디렉토리를 살펴보도록 하겠습니다. 

 

 아래의 예는 useradd명령어로 새로 생성된 bible사용자의 홈디렉토리(/home/bible) 내용입니다. 

 

 

cb7659c654fd99a396bca435184bb9c9_1649660559_1621.png
 


리눅스를 사용하는 모든 사용자들의 홈디렉토리에는 위와 같이 로그인시 .()으로 시작하는 환경설정파일들이 존재합니다. 

 

 이들 파일들은 useradd로 계정생성시에 /etc/skel이라는 디렉토리에 존재하는 파일들을 그대로 복사해 오는 것입니다. 

 

 , /etc/skel디렉토리에는 새로 생성되는 사용자들의 홈디렉토리로 복사될 초기 환경설정파일들이 존재하고 있습니다. 

 

 이에 대해서는 이절의 뒷편에서 자세히 설명합니다. 

 

 

 

, 그리고 이번에는 useradd의 결과로 생성된 bible계정의 메일파일을 살펴보도록 하겠습니다. 

 

 useradd 명령어로 새롭게 계정이 생성되면 /var/spool/mail디렉토리에는 다음과 같이 계정이름과 동일한 메일파일이 생성됩니다. 

 

 
cb7659c654fd99a396bca435184bb9c9_1649660574_6351.png


위의 예를 보시면 /var/spool/mail 디렉토리에 bible이라는 파일이 존재하고 있다는 것을 알 수 있습니다. 

 

 , useradd의 수행으로 이 디렉토리내에 계정명과 동일한 파일명이 자동생성되었기 때문입니다. 

 

 이 파일에는 bible사용자에게 도착한 메일이 저장될 것입니다. 

 

 

 

이상으로 useradd passwd명령어를 이용하여 새로운 계정생성하는 방법과 그 결과로서 어떤 파일들이 어디에 생성이 되는가를 살펴보았습니다. 

 

 지금까지 설명드린 방법이 계정생성의 가장 기본적인 내용입니다. 

 

 

 

 

 

/etc/default/useradd파일 실무활용

 

 

이 파일은 useradd명령어로 새로운 사용자를 생성할 때에 기본적으로 사용할 홈디렉토리와 사용할 쉘종류, 종료일자, 기본소속그룹,홈디렉토리에 복사될 초기화 파일들의 위치등을 정의하고 있는 파일입니다. 

 

 

cb7659c654fd99a396bca435184bb9c9_1649660589_8052.png
 

위의 각 행의 의미들은 다음과 같습니다. 

 

 

 

GROUP은 새로 생성되는 사용자가 기본적으로 소속될 그룹의 GID를 지정한 것입니다. 

 


 
HOME
은 새로 생성되는 사용자의 홈디렉토리위치를 지정한 것입니다. 

 

 , bible이라는 사용자가 새로 생성이 된다면 /home/bible이라는 홈디렉토리가 자동 지정되는 것입니다. 

 

 

INACTIVE
는 새로 생성되는 사용자의 패스워드 종료일 이후의 유효(기간)여부를 설정(0, -1, 1이상의 숫자)한 것입니다. 

 


 
EXPIRE
는 새로 생성되는 사용자의 계정 종료일자지정를 지정한 것입니다. 

 

 , 이 값이 “EXPIRE=2010-10-30”로 지정되어 있다면 이후 생성되는 모든 사용자들의 계정종료일자는 2010년 10월 30까지만 사용할 수 있는 것입니다. 

 


 
SHELL
는 새로 생성되는 사용자가 기본쉘로 사용할 쉘의 종류입니다. 

 


 
SKEL
는 새로 생성되는 사용자의 홈디렉토리로 복사될 초기환경파일들이 저장된 디렉토리위치를 지정한 것입니다. 

 

 


결론적으로 “useradd bible5”라는 명령문을 실행하였을 경우에 이 /etc/default/useradd파일의 내용이 모두 그대로 적용이 된다는 의미입니다. 

 

 하지만 앞의 예에서 보았던 useradd명령어 사용시의 각 옵션들을 사용하시면 이 옵션들이 우선되며 이 파일의 내용은 무시된다는 것도 반드시 알아두셔야 합니다. 

 

 예를 들어 “useradd -d /user/bible7 bible7”을 실행하시면 여기서 지정한 -d옵션의 홈디렉토리위치가 /etc/default/useradd파일의 HOME항목에 지정되어있는 홈디렉토리 위치보다 우선된다는 의미입니다. 

 

 이외의 다른 옵션들도 모두 동일하게 적용이 됩니다. 

 

 

이제 /etc/default/useradd파일의 용도와 필요성에 대한 이해를 하셨으리라 생각합니다. 

 

 이제 우리는 /etc/default/useradd파일을 수정함으로써 useradd명령어를 사용하여 다양한 방법으로 새로운 계정을 생성할 수 있다는 것을 알아야 합니다. 

 

  /etc/default/useradd파일을 수정하는 방법에는 “vi /etc/default/useradd” , vi로 이 파일을 열어서 직접 수정해 주는 방법과 “useradd -D”라는 명령문을 사용하는 방법 두가지가 있습니다. 

 

 

 

 

 

 

/etc/login.defs파일 실무활용

 

 

이제 useradd로 새로운 계정사용자를 생성할 때에 그 환경을 지배하고 있는 두번째 파일에 대해서 알아보도록 하겠습니다. 

 

 두번째 파일은 /etc/login.defs파일로서 이 파일은 useradd가 새로운 계정을 생성할 때에 반드시 참조하는 파일입니다. 

 

 , 다음은 /etc/login.defs파일의 내용을 나타낸 것입니다. 

 

 

 

[root@bible /]# cat /etc/login.defs

# *REQUIRED*

#   Directory where mailboxes reside, _or_ name of file, relative to the

#   home directory.  If you _do_ define both, MAIL_DIR takes precedence.

#   QMAIL_DIR is for Qmail

#

#QMAIL_DIR      Maildir

MAIL_DIR        /var/spool/mail

#MAIL_FILE      .mail

 

# Password aging controls:

#

#       PASS_MAX_DAYS   Maximum number of days a password may be used.

#       PASS_MIN_DAYS   Minimum number of days allowed between password changes.

#       PASS_MIN_LEN    Minimum acceptable password length.

#       PASS_WARN_AGE   Number of days warning given before a password expires.

#

PASS_MAX_DAYS   99999

PASS_MIN_DAYS   0

PASS_MIN_LEN    5

PASS_WARN_AGE   7

 

#

# Min/max values for automatic uid selection in useradd

#

UID_MIN                   500

UID_MAX                 60000

 

#

# Min/max values for automatic gid selection in groupadd

#

GID_MIN                   500

GID_MAX                 60000

 

#

# If defined, this command is run when removing a user.

# It should remove any at/cron/print jobs etc. owned by

# the user to be removed (passed as the first argument).

#

#USERDEL_CMD    /usr/sbin/userdel_local

 

#

# If useradd should create home directories for users by default

# On RH systems, we do. This option is ORed with the -m flag on

# useradd command line.

#

CREATE_HOME     yes

 

[root@bible /]# 

 

, 위의 파일의 내용을 정리해 보면 다음과 같습니다. 

 

 아래의 예를 보시면 알겠지만, 이 파일에는 다음과 같은 정보들이 들어 있습니다. 

 

 

 

MAIL_DIR은 각 계정사용자들의 메일파일이 저장될 위치를 지정한 것입니다. 

 

 기본값으로 /var/spool/mail로 지정되어 있지만 이 위치를 변경함으로서 메일을 저장하는 디렉토리의 위치를 변경할 수 있습니다. 

 

 

PASS_MAX_DAYS
는 계정사용자들이 패스워드를 변경하지 않고 동일한 패스워드를 지속적으로 사용할 수 있는 최대일자를 지정한 것입니다. 

 

 

PASS_MIN_DAYS
는 패스워드 변경없이 사용할 수 있는 최소일자를 지정한 것입니다. 

 

 

PASS_MIN_LEN
는 각 계정사용자들이 패스워드문자로 지정할 수 있는 최소바이트수(영문자수)를 지정한 것입니다. 

 

 , 패스워드로 사용할 수 있는 최소 문자수이며 현재 5로 지정되어 있기 때문에 모든 계정사용자들이 passwd명령어로 패스워드를 지정할 때에는 반드시 5(영문자 5, 혹은 5bytes) 이상으로 패스워드를 입력해야 합니다. 

 

 

PASS_WARN_AGE
는 패스워드 종료일자가 다가오기 몇일 전부터 패스워드 사용불가에 대한 안내메시지를 알려줄 것인가를 지정한 것입니다. 

 

 , 현재 7로 설정되어 있기 때문에 패스워드가 종료되기 7일전부터 패스워드가 종료된다는 것을 해당 사용자에게 알려줍니다. 

 

 

UID_MIN
는 일반사용자의 UID번호를 할당할 때에 자동 할당할 최소 UID번호를 지정한 것입니다. 

 

 현재 500으로 지정되어 있기 때문에 useradd명령어로 계정을 생성할 때에 UID 500번부터 자동 할당된 것입니다. 

 

 만약 일반사용자의  UID번호를 1000부터 할당하고자 한다면 이 값을 1000으로 수정해 두시면 됩니다. 

 

 

UID_MAX
는 리눅스 서버에서 생성할 수 있는 UID의 최대값입니다. 

 

 현재 이 값이 60000으로 설정되어 있기 때문에 자동 생성될 수 있는 UID 60000까지입니다. 

 

 참고로 UID_MAX에서 UID_MIN를 빼고 1을 더한 수만큼의 새로운 계정을 생성할 수 있음을 알 수 있다는 것을 알 수 있습니다. 

 

 하지만 “useradd -u 70000 bible8”등과 같이 UID를 직접 지정할 때에는 이 값을 넘어서 지정할 수도 있습니다. 

 

 

GID_MIN
는 새로 생성되는 그룹의 GID 시작번호입니다. 

 

 , 리눅스에서는 각 계정이 생성될 때에 자기 자신의 이름으로 된 그룹명을 하나씩 자동으로 생성하게 되는데 이때 GID를 몇번부터 생성할 것인가를 지정한 것입니다. 

 

 /etc/group파일을 보시면 새로 생성한 사용자들의 GID번호가 500번부터 할당되어 있다는 것을 알 수 있는데 그 이유가 현재 이 값이 500으로 지정되어 있기 때문입니다. 

 

 

GID_MAX
는 새로 생성되는 그룹에서 지정 할 수 있는 최대 GID번호입니다. 

 

 UID_MAX값과 함께 비교해보시기 바랍니다. 

 

 

CREATE_HOME
는 새로 생성되는 계정사용자의 홈디렉토리를 생성할 것인가를 결정하는 값입니다. 

 

 , 이 값이 현재 yes로 되어있기 때문에 새로 생성되는 사용자의 홈디렉토리가 자동 생성되는 것이며 만약 이 값이 no로 되어있다면 useradd에 의해 새로 생성되는 사용자들의 홈디렉토리는 자동으로 생성되지 않을 것입니다. 

 

 

지금까지 /etc/login.defs파일의 내용을 주~~욱 살펴보았습니다. 

 

 이쯤되면 이제 여러분들은 useradd로 새로운 계정을 생성하는 작업이 그렇게 간단한것만은 아님을 느낄 수 있을 것입니다. 

 

 아직 끝난 것이 아닙니다. 

 

 하나 더 남아 있습니다. 

 

 다음 /etc/skel/디렉토리의 용도와 역할에 대해서 확인해 보시기 바랍니다. 

 

 


관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,031 명
  • 현재 강좌수 :  35,769 개
  • 현재 접속자 :  92 명