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

레벨001-2 : useradd로 새로운 계정을 생성하는 실무적인 메커니즘의 이해

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

레벨001-2 : useradd로 새로운 계정을 생성하는 실무적인 메커니즘의 이해

리눅스 시스템관리자라면 초보자라 하더라도 useradd라는 명령어를 사용하여 새로운 사용자를 생성하는 방법은 알고 계실 것이라 생각합니다. 

 

  하지만 useradd라는 명령어로 새로운 사용자가 생성이 될 때에 시스템에서는 어떤 작업들이 자동으로 이루어져서 새로 생성되는 사용자의 시스템사용을 하도록 하는가에 대하여 정확한 시스템의 실무 메커니즘을 이해하고 계신분은 드물 것이라 생각합니다. 

 

 

 

필자는 useradd라는 명령어를 사용하는 방법을 익히는 것도 중요하지만 유능한 시스템관리자가 되려면 useradd명령어의 실행으로 서버에서 어떤 작업들이 실제로 이루어지는가를 알아야 하며 생성되는 사용자를 위한 시스템환경설정이 어떻게 이루어지는가를 정확하게 알고 있어야 한다고 생각합니다. 

 

 

 

, 이번 예에서는 시스템관리자가 useradd라는 명령어를 사용하여 새로운 계정사용자를 생성하였을 경우에 서버내부에서 작업되는 여러 가지 실무적인 메커니즘을 설명하고자 합니다. 

 

 

 

 - sspark이라는 계정생성

 

먼저 간단히 아래의 예와 같이 sspark이라는 계정사용자를 새로 생성하였습니다. 

 

  , 지금부터 sspark이라는 계정사용자를 useradd로 생성하는 간단한 방법과 useradd로 인하여 리눅스 서버 내에서 어떤 작업들이 자동으로 이루어지는가를 살펴볼 것입니다. 

 

 

 

[root@host3 root]# useradd sspark  
[root@host3 root]#

 

위와 같이 "useradd sspark"이라고 하면 sspark이라는 계정사용자가 생성이 됩니다. 

 

 

 

 

 - sspark 패스워드 생성

 

그리고 아래와 같이 새로 생성된 sspark의 패스워드를 입력해 주었습니다. 

 

 

 

[root@host3 root]# passwd sspark
Changing password for user sspark.
New password: ********
Retype new password: ********
passwd: all authentication tokens updated successfully.
[root@host3 root]#

 

, 이제 useradd sspark이라는 계정사용자를 생성한 후에 리눅스서버에서 어떤 작업들이 이루어 졌는가를 살펴보겠습니다. 

 

 



 - /etc/passwd내에 sspark의 계정사용 정보 등록

 

먼저, /etc/passwd에는 sspark의 기본정보들이 다음과 같이 등록 됩니다. 

 

 

 

[root@host3 root]# grep sspark /etc/passwd
sspark:x:505:506::/home/sspark:/bin/bash
[root@host3 root]#

 

, /etc/passwd파일에 sspark이라는 계정사용자의 ID,암호필드, UID, GID,이름, 홈디렉토리위치, 로그인쉘이 등록되어 있음을 알 수 있습니다. 

 

 

 


 - /etc/shadow
내에 sspark의 패스워드와 aging정보 등록

 

그리고, /etc/shadow파일에는 sspark의 암호정보와 계정 aging정보가 등록이 됩니다. 

 

 

 

[root@host3 root]# grep sspark /etc/shadow
sspark:$1$BGpBJuD1$taey.N2NIvfYrruY/1p5U1:12314:0:99999:7:::
[root@host3 root]#

 

 - /etc/group내에 sspark의 그룹정보 등록

 

그리고, /etc/group파일에는 sspark의 그룹정보가 등록됩니다. 

 

  여기에 등록이 되는 그룹정보는 계정명과 동일한 그룹명과 /etc/passwd파일의 GID번호와 동일한 GID가 생성되어 추가 됩니다. 

 

 

 

[root@host3 root]# grep sspark /etc/group
sspark:x:506:
[root@host3 root]#

 

, sspark의 계정명과 동일한 sspark이라는 그룹명과 GID 506이라는 그룹이 생성되어 /etc/group파일이 등록 되었습니다. 

 

 

 


 - sspark
의 홈디렉토리 생성 및 환경파일 생성

 

그리고, 계정이 생성되고 나면 그 계정의 홈디렉토리가 생성이 됩니다. 

 

  아래는 sspark의 홈디렉토리를 나타낸 것입니다. 

 

  홈디렉토리는 /etc/passwd sspark의 홈디렉토리위치에 생성이 됩니다. 

 

 

 

[root@host3 root]# ls -al /home/sspark/
합계 32
drwx------    3 sspark   sspark       4096  9
19 10:47 .
drwxr-xr-x    7 root     root         4096  9
19 10:47 ..
-rw-r--r--    1 sspark   sspark         24  9
19 10:47 .bash_logout
-rw-r--r--    1 sspark   sspark        191  9
19 10:47 .bash_profile
-rw-r--r--    1 sspark   sspark        124  9
19 10:47 .bashrc
-rw-r--r--    1 sspark   sspark        854  9
19 10:47 .emacs
-rw-r--r--    1 sspark   sspark        120  9
19 10:47 .gtkrc
drwxr-xr-x    3 sspark   sspark       4096  9
19 10:47 .kde
[root@host3 root]#

 

위의 파일들은 /etc/skel/디렉토리내에 존재하는 파일들이 모두 복사되어 들어간 것입니다. 

 

   아래 "useradd가 참조하는 파일 : /etc/skel/디렉토리내의 모든 파일들"설명을 참조하시기 바랍니다. 

 

 

 

 

 - sspark의 메일저장 파일생성

 

그리고 계정이 생성이 되면 /var/spool/mail에 계정명과 동일한 파일이 생성이 되는데, 이는 sspark의 메일박스로 사용될 파일입니다. 

 

  , sspark에게 도착한 메일을 보관하기 위한 sspark의 개인 메일파일입니다. 

 

 

 

[root@host3 root]# ls -l /var/spool/mail
합계 4
-rw-rw----    1 bible    bible           0  8
28 03:20 bible
-rw-rw----    1 bible1   bible1          0  9
18 17:48 bible1
-rw-rw----    1 bible2   bible2          0  9
18 17:48 bible2
-rw-rw----    1 bible3   bible3          0  9
18 17:48 bible3
-rw-------    1 root     root         1010  8
28 11:40 root
-rw-rw----    1 sspark   sspark          0  9
19 10:47 sspark
[root@host3 root]#



 - useradd가 참조하는 파일 : /etc/login.defs

 

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

 

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

 

 

 

. MAIL_DIR : 메일 디렉토리 지정
  . PASS_MAX_DAYS :
패스워드 변경후 재변경없이 지속적으로 사용할 수 있는 최대일자.
  . PASS_MIN_DAYS :
패스워드 변경 후 다시 변경할 수 있는 최소일자
  . PASS_MIN_LEN :
패스워드의 최소바이트 수
  . PASS_WARN_AGE
  . UID_MIN :
생성할 수 있는 UID 시작번호
  . UID_MAX :
생성할 수 있는 최대 GID 번호
              (
, UID_MAX에서 UID_MIN를 빼고 1을 더한 수만큼의 새로운 계정을 생성할 수 있음을 알 수 있다.)
  . GID_MIN :
새로 생성되는 그룹의 GID 시작번호
  . GID_MAX :
새로 생성되는 그룹에서 지정 할 수 있는 최대 GID번호
  . CREATE_HOME :
홈디렉토리를 생성할 것인가의 여부

. UMASK : umask(permission mask) 지정, 지정하지 않으면 022로 기본 설정됨

. USERGROUPS_ENAB : userdel시에 멤버가 없는 그룹도 삭제함.

. MD5_CRYPT_ENAB : 패스워드 암호화를 위하여 MD5 또는 DES를 사용함.

. ENCRYPT_METHOD SHA512 : 암호화 방법으로 SHA512를 사용함.

 

위와 같은 정보들이 이 파일에 들어 있습니다. 

 

  , 새로운 계정생성에 꼭 참조되어야 하는 정보들이 들어있다는 것입니다. 

 

  시스템관리자는 반드시 이 파일의 내용을 숙지하고 필요할 경우에는 변경하여 사용할 수 있어야 합니다. 

 

 

 

[root@su249 ~]# 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 overridden with the -m flag on

# useradd command line.

#

CREATE_HOME     yes

 

# The permission mask is initialized to this value. If not specified,

# the permission mask will be initialized to 022.

UMASK           077

 

# This enables userdel to remove user groups if no members exist.

#

USERGROUPS_ENAB yes

 

# Use MD5 or DES to encrypt password? Red Hat use MD5 by default.

MD5_CRYPT_ENAB no

 

ENCRYPT_METHOD SHA512

[root@su249 ~]#  

 


 - useradd
가 참조하는 파일 : /etc/skel/디렉토리 내의 모든 파일들

 

sspark의 홈디렉토리 /home/sspark이 생성이 되었으며, 로그인 후에 서버사용 환경을 설정하기 위하여 .()으로 시작하는 파일들이 홈디렉토리에 있습니다. 

 

  여기서 중요한 것은 계정이 생성되고 난 후에  /etc/skel/디렉토리에 존재하는 모든 파일들이 새로 생성된 사용자의 홈디렉토리로 복사되었다는 점입니다. 

 

  

 

, /etc/skel/디렉토리에는 위의 홈디렉토리에 복사되어 들어간 파일들과 동일한 파일들이 있음을 알 수 있습니다. 

 

 

 

[root@host3 skel]# ls -al /etc/skel/
합계 36
drwxr-xr-x    3 root     root         4096  8
28 03:08 .
drwxr-xr-x   62 root     root         8192  9
19 10:47 ..
-rw-r--r--    1 root     root           24  8
24  2010 .bash_logout
-rw-r--r--    1 root     root          191  8
24  2010 .bash_profile
-rw-r--r--    1 root     root          124  8
24  2010 .bashrc
-rw-r--r--    1 root     root          854  8
29  2010 .emacs
-rw-r--r--    1 root     root          120  9
11  2010 .gtkrc
drwxr-xr-x    3 root     root         4096  8
12  2010 .kde
[root@host3 skel]#

 

 

[권고사항]

만약 여러분들께서 리눅스를 호스팅서버로 사용하고 계신다면 호스팅 신규사용자들에게 셋팅해야하는 홈페이지디렉토리(public_html)와 초기안내파일(index.html)들을 미리 만들어서 /etc/skel디렉토리내에 넣어 두시면 useradd명령어로 계정을 생성할 때에 초기 홈페이지디렉토리(public_html)와 초기 홈페이지안내파일(index.html)등을 자동 복사할 수 있습니다. 

 

 

 

, /etc/skel디렉토리내에 public_html 디렉토리를 생성해 두시고 이 디렉토리내에 호스팅 신규셋팅완료 및 사용법안내파일(index.html)을 생성해 두신다면 useradd명령어로 사용자의 계정을 생성하면서 동시에 자동 복사되므로 굉장히 편리하게 호스팅사용자 신규셋팅작업을 할 수 있습니다. 

 

 

 


 - useradd
가 참조하는 파일 : /etc/default/useradd

 

이 파일을“useradd의 기본파일이라고 하며, useradd로 계정 생성시에 어떤 환경과 어떤 파일들을 참조하여 새로운 계정을 생성할 것인가에 대하여 정의되어 있는 파일입니다. 

 

 


이 파일의 기본적인 내용은 다음과 같습니다. 

 

 

 

[root@su249 ~]# cat /etc/default/useradd

# useradd defaults file

GROUP=100

HOME=/home

INACTIVE=-1

EXPIRE=

SHELL=/bin/bash

SKEL=/etc/skel

CREATE_MAIL_SPOOL=yes

 

[root@su249 ~]#

 

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

 

 

 

 . GROUP       : 기본등록 그룹의 GID
 . HOME        :
생성될 홈디렉토리 위치
 . INACTIVE    :
패스워드 종료일 이후의 유효(기간)여부 설정(0, -1, 1이상의 숫자)
 . EXPIRE      :
계정 종료일자지정
 . SHELL       :
기본사용쉘 지정
 . SKEL        :
홈디렉토리에 복사할 기본환경파일위치

 

위 각 항목들에 대한 추가 설명으로서 INACTIVE에 대한 설명입니다. 

 

 예를 들어 INACTIVE의 값으로  10을 지정하면 패스워드 만료기간이 된 이후에 10일 동안은 패스워드가 유효하도록 합니다. 

 

 만약 0으로 설정하면 패스워드 만료기간이 되자마자 바로 패스워드를 잠궈버리게 되고, -1은 이 기능자체를 비활성화(disable the feature) 시키게 됩니다. 

 

 

 

필요할 경우에 /etc/default/useradd파일을 직접 수정하여 사용할 수도 있습니다. 

 

  하지만 이 파일을 바로 수정하는 것 보다는 "useradd -D"명령어를 이용하여 수정하는 것이 일반적인 수정방법입니다. 

 

  이에 대한 설명은 이 책의 “useradd –D”명령어편을 참조하시기 바랍니다. 

 

 


이상과 같이 간단한 useradd명령어로 위와 같은 작업들이 이루어집니다. 

 

  시스템관리자라면 이러한 사실들을 분명히 알고 있어야 합니다. 

 

  새로운 계정이 생성될 때에 서버내에서 이와 같은 작업들이 이루어 진다는 것을 모른다면 올바른 서버관리를 하기가 어렵다는 점을 꼭 기억하시기 바랍니다. 

 

 

관련자료

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

공지사항


뉴스광장


  • 현재 회원수 :  60,032 명
  • 현재 강좌수 :  35,772 개
  • 현재 접속자 :  87 명