OS/Linux - Ubuntu

[Linux - 리눅스 / Ubuntu - 우분투] 사용자 계정 관리 명령 - useradd, usermod, userdel

주누다 2015. 4. 30. 00:32
반응형

사용자 계정 관리

- 사용자가 시스템에 접근하려면 사용자 계정이 반드시 필요

- 사용자 계정은 시스템 관리자가 만들어주어야 하는 것



사용자 계정 생성하기

- 사용자 계정을 생성 할 때는 'useradd' 나 'adduser' 명령을 사용

- 둘 중 어느 것을 사용해도 좋음

- 'useradd' 명령을 사용할 때 지정하는 옵션은

  '/etc/passwd' 파일에 저장되는 각 항목에 해당

 

useradd

- 기능 : 사용자 계정을 생성

- 형식 : useradd [옵션] 로그인 ID

- 옵션 :

 * '-u uid' : UID 를 지정

 * '-g gid' : 기본 그룹의 GID를 지정

 * '-d 디렉터리명' : 홈 디렉터리를 지정

 * '-c 설명' :  사용자의 이름 등 부가적인 설명을 지적

 * '-D' : 기본 설정 값을 설정하거나 출력

 * '-e 유효 기간' : EXPIRE 항목을 설정( YYYY-MM-DD).

 * '-f 비활성 일수' : INACTIVE 항목을 설정

 * '-k 디렉터리' : 계정 생성시 복사할 초기 파일이나 디렉터리를 설정해 놓은 디렉터리를 지정

 * '-m' : 홈 디렉터리를 생성

- 사용 예 :  

 * 'useradd user2'

 * 'useradd -m -d /home/user2 user2'

 * 'useradd -m -d /home/user2 -u 2000 -g 100 -s /bin/ksh user2'

 * 'useradd -D -d /export/home'



1) 옵션 없이 계정 생성하기

- 아무 옵션없이 useradd 명령으로 계정을 만들고 홈 디렉터리와 '/etc/passwd' 파일을 확인해 보면,

  홈 디렉터리를 생성되지 않고 '/etc/passwd' 파일에 계정이 추가되었음을 확인 가능

======================================================================

sjw@sjw-HP-Mini-110-3500:~$ ls /home
lost+found  sjw
sjw@sjw-HP-Mini-110-3500:~$ sudo useradd user2
sjw@sjw-HP-Mini-110-3500:~$ ls /home
lost+found  sjw
sjw@sjw-HP-Mini-110-3500:~$ tail /etc/passwd
saned:x:108:115::/home/saned:/bin/false
whoopsie:x:109:116::/nonexistent:/bin/false
speech-dispatcher:x:110:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh
avahi:x:111:117:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false
lightdm:x:112:118:Light Display Manager:/var/lib/lightdm:/bin/false
colord:x:113:121:colord colour management daemon,,,:/var/lib/colord:/bin/false
hplip:x:114:7:HPLIP system user,,,:/var/run/hplip:/bin/false
pulse:x:115:122:PulseAudio daemon,,,:/var/run/pulse:/bin/false
sjw:x:1000:1000:sjw,,,:/home/sjw:/bin/bash
user2:x:1001:1001::/home/user2:
sjw@sjw-HP-Mini-110-3500:~$
======================================================================


- 사용자의 홈 디렉터리를 생성하려면 '-m' 옵션을 지정해야함

======================================================================

sjw@sjw-HP-Mini-110-3500:~$ sudo useradd -m user22
sjw@sjw-HP-Mini-110-3500:~$ ls /home
lost+found  sjw  user22
sjw@sjw-HP-Mini-110-3500:~$

======================================================================


- '/etc/shadow' 파일을 확인해보면 'user2' 와 'user22' 계정에 암호가 설정되지 않고 '!' 로 잠겨있음

======================================================================

sjw@sjw-HP-Mini-110-3500:~$ sudo tail /etc/shadow
whoopsie:*:16273:0:99999:7:::
speech-dispatcher:!:16273:0:99999:7:::
avahi:*:16273:0:99999:7:::
lightdm:*:16273:0:99999:7:::
colord:*:16273:0:99999:7:::
hplip:*:16273:0:99999:7:::
pulse:*:16273:0:99999:7:::
sjw:$6$Na.60bmv$vdvc9GzD1yJHgEZlr/LhvvksEtxhRaYtb6ydAt9RnHL5NiwsFlYcULZGXQVFVZ8I3V1YclEN1A/GVYvVjP0Rj/:16496:0:99999:7:::
user2:!:16555:0:99999:7:::
user22:!:16555:0:99999:7:::
sjw@sjw-HP-Mini-110-3500:~$ 

======================================================================


- 시스템 관리자는 계정을 추가했을때 반드시 초기 암호를 바로 설정해야함

- 그 후 사용자에게 초기 암호를 바꿔주고 바꾸도록 권고

======================================================================

sjw@sjw-HP-Mini-110-3500:~$ sudo passwd user22
새 UNIX 암호 입력:
새 UNIX 암호 재입력:
passwd: 암호를 성공적으로 업데이트했습니다
sjw@sjw-HP-Mini-110-3500:~$ 

======================================================================



2) 기본 설정 값 확인하기 :  '-D' 옵션

- 사용자 계정을 설정할 때 참고하는 기본 설정 값은 '-D' 옵션으로 확인 가능

======================================================================

sjw@sjw-HP-Mini-110-3500:~$ useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=
SKEL=/etc/skel
CREATE_MAIL_SPOOL=no
sjw@sjw-HP-Mini-110-3500:~$ 

======================================================================

 * GROUP : 기본 등록 그룹의 GID로 100은 users 그룹

 * HOME : 홈 디렉터리의 생성 위치

 * INACTIVE :

   => -1 이면 INACTIVE 기능이 비활성화됨

   => 0 이면 암호가 만료되자마자 바로 계정이 잠김

 * EXPIRE : 계정 종료일을 지정

 * SHELL : 기본 로그인 쉘을 지정

 * SKEL : 홈 디렉터리에 복사할 기본 환경 파일의 위치

 * CREATE_MAIL_SPOOL : 메일 디렉터리의 생성 여부를 지정


 위의 항목들은 '/etc/default/useradd' 파일에 저장되어 있음

======================================================================

sjw@sjw-HP-Mini-110-3500:~$ cat /etc/default/useradd
cat: /etc/default/useradd: 허가 거부
sjw@sjw-HP-Mini-110-3500:~$ sudo cat /etc/default/useradd
[sudo] password for sjw:
# Default values for useradd(8)
#
# The SHELL variable specifies the default login shell on your
# system.
# Similar to DHSELL in adduser. However, we use "sh" here because
# useradd is a low level utility and should be as general
# as possible
SHELL=/bin/sh
#
# The default group for users
# 100=users on Debian systems
# Same as USERS_GID in adduser
# This argument is used when the -n flag is specified.
# The default behavior (when -n and -g are not specified) is to create a
# primary user group with the same name as the user being added to the
# system.
# GROUP=100
#
# The default home directory. Same as DHOME for adduser
# HOME=/home
#
# The number of days after a password expires until the account
# is permanently disabled
# INACTIVE=-1
#
# The default expire date
# EXPIRE=
#
# The SKEL variable specifies the directory containing "skeletal" user
# files; in other words, files such as a sample .profile that will be
# copied to the new user's home directory when it is created.
# SKEL=/etc/skel
#
# Defines whether the mail spool should be created while
# creating the account
# CREATE_MAIL_SPOOL=yes

GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SKEL=/etc/skel
CREATE_MAIL_SPOOL=no
sjw@sjw-HP-Mini-110-3500:~$

======================================================================


- vi 로 파일을 수정할 수 있지만, useradd -D 명령으로 수정하는 것이 좋음

- D 다음에 -b(HOME), -e(EXPIRE), -f(INACTIVE), -g(GID), -s(SHELL) 를 지정하여 수정

======================================================================

sjw@sjw-HP-Mini-110-3500:~$ sudo useradd -D -s /bin/bash
sjw@sjw-HP-Mini-110-3500:~$ sudo cat /etc/default/useradd
# Default values for useradd(8)
#
# The SHELL variable specifies the default login shell on your
# system.
# Similar to DHSELL in adduser. However, we use "sh" here because
# useradd is a low level utility and should be as general
# as possible
SHELL=/bin/sh
#
# The default group for users
# 100=users on Debian systems
# Same as USERS_GID in adduser
# This argument is used when the -n flag is specified.
# The default behavior (when -n and -g are not specified) is to create a
# primary user group with the same name as the user being added to the
# system.
# GROUP=100
#
# The default home directory. Same as DHOME for adduser
# HOME=/home
#
# The number of days after a password expires until the account
# is permanently disabled
# INACTIVE=-1
#
# The default expire date
# EXPIRE=
#
# The SKEL variable specifies the directory containing "skeletal" user
# files; in other words, files such as a sample .profile that will be
# copied to the new user's home directory when it is created.
# SKEL=/etc/skel
#
# Defines whether the mail spool should be created while
# creating the account
# CREATE_MAIL_SPOOL=yes

GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SKEL=/etc/skel
CREATE_MAIL_SPOOL=no
sjw@sjw-HP-Mini-110-3500:~$

======================================================================



3) /etc/skel 디렉터리의 역할

- 사용자 계정을 생성할때 시스템 운영 정책에 따라

  사용자 계정의 홈 디렉터리에서 공통으로 배포해야 할 파일이 있을 경우가 있음

- 예를 들어 .bash_profile 과 같은 초기화 파일을 공통으로 작성해 놓고 사용자 계정에 복사하는 것

- '/etc/skel' 디렉터리에 파일을 만들어 놓으면 사용자 계정 생성시에 자동으로 복사가 됨

======================================================================

sjw@sjw-HP-Mini-110-3500:~$ ls -a /etc/skel
.  ..  .bash_logout  .bashrc  .profile  examples.desktop
sjw@sjw-HP-Mini-110-3500:~$

======================================================================



4) 옵션을 지정하여 사용자 계정 생성하기

- 만약 UID 2000번이 이미 있다는 메시지가 출력될 경우 다른 번호로 지정

======================================================================

sjw@sjw-HP-Mini-110-3500:~$ sudo useradd -m -d /home/user3 -u 2000 -g 1000 -G 3 user3
[sudo] password for sjw:
sjw@sjw-HP-Mini-110-3500:~$ grep user3 /etc/passwd
user3:x:2000:1000::/home/user3:
sjw@sjw-HP-Mini-110-3500:~$

======================================================================


- '-e' 와 '-f' 옵션을 사용하여 EXPIRE 와 INACTIVE 의 값을 지정. '-c' 옵션으로 설명 부분도 값 지정

======================================================================

sjw@sjw-HP-Mini-110-3500:~$ sudo useradd -m -e 2014-12-31 -f 5 -c "user4 test" user4
sjw@sjw-HP-Mini-110-3500:~$ grep user4 /etc/passwd
user4:x:2001:2001:user4 test:/home/user4:
sjw@sjw-HP-Mini-110-3500:~$ sudo grep user4 /etc/shadow
user4:!:16556:0:99999:7::16435:
sjw@sjw-HP-Mini-110-3500:~$

======================================================================


- 생성된 계정 정보 확인시 UID가 2001번.

- useradd 는 기존 UID 중 가장 큰 값에 1을 더하여 UID 를 지정




사용자 계정 정보 수정하기

- usermod 명령은 사용자 계정 정보를 수정할 때 사용

- UID, GID, 홈 디렉터리, 기본 쉘, 설명, 로그인 ID 등 계정과 관련된 모든 정보를 수정

- 패스워드 에이징 정보 중 INACTIVE 와 EXPIRE 값을 지정할 수 있음

usermod

- 기능 : 사용자 계정 정보를 수정

- 형식 : usermod [옵션] 로그인 ID

- 옵션 :

 * -u uid : UID를 수정

 * -o : UID 의 중복을 허용

 * -g gid : 기본 그룹을 수정

 * -G gid : 2차 그룹을 수정함

 * -d 디렉터리명 : 홈 디렉터리를 수정

 * -s 쉘 : 기본 쉘을 수정

 * -c 설명 : 부가적인 설명을 수정

 * -f inactive : 계정 비활성화(INACTIVE) 날짜를 수정

 * -e expire : 계정 만료(EXPIRE) 날짜를 수정

 * -l 새 로그인 이름 : 새 로그인 이름으로 계정 이름을 바꿈

- 사용 예 : usermod -u 1111 user1, usermod -l user111 user1, usermod -d /home/user111 user1

 

1) UID 변경하기 : -u 옵션

- 사용자 계정의 UID는 -u 옵션을 사용하여 바꿀 수 있음

======================================================================

user22:x:1002:1002::/home/user22:
user3:x:2000:1000::/home/user3:
user4:x:2001:2001:user4 test:/home/user4:
sjw@sjw-HP-Mini-110-3500:~$ sudo usermod -u 1003 user3
sjw@sjw-HP-Mini-110-3500:~$ grep user3 /etc/passwd
user3:x:1003:1000::/home/user3:
sjw@sjw-HP-Mini-110-3500:~$

======================================================================


- 사용자 계정의 UID는 '-o' 옵션을 사용하면 중복할 수 있음

- UID를 같은 번호로 지정하는 것은 아주 특별한 경우에만 허용해야..

- 리눅스는 UID가 같으면 로그인 ID가 달라도 같은 사용자로 인식

======================================================================

sjw@sjw-HP-Mini-110-3500:~$ grep 1001 /etc/passwd
user2:x:1001:1001::/home/user2:
sjw@sjw-HP-Mini-110-3500:~$ grep user3 /etc/passwd
user3:x:1003:1000::/home/user3:
sjw@sjw-HP-Mini-110-3500:~$ sudo usermod -u 1001 -o user3
sjw@sjw-HP-Mini-110-3500:~$ grep 1001 /etc/passwd
user2:x:1001:1001::/home/user2:
user3:x:1001:1000::/home/user3:
sjw@sjw-HP-Mini-110-3500:~$
======================================================================



2) 홈 디렉터리 변경하기 : -d 옵션

- 사용자 계정의 홈 디렉터리를 변경하려면 '-d' 옵션을 사용

======================================================================

sjw@sjw-HP-Mini-110-3500:~$ grep user4 /etc/passwd
user4:x:2001:2001:user4 test:/home/user4:
sjw@sjw-HP-Mini-110-3500:~$ sudo usermod -d /home/user41 user4
[sudo] password for sjw:
sjw@sjw-HP-Mini-110-3500:~$ grep user4 /etc/passwd
user4:x:2001:2001:user4 test:/home/user41:
sjw@sjw-HP-Mini-110-3500:~$ 

======================================================================

- '/etc/passwd' 파일의 설정 값만 바꾼 것으로, 실제로 '/home/user41' 디렉터리가 생성되지 않음

- 별도의 수작업으로 디렉터리르 만들고 이전 파일들을 옮겨야 함

======================================================================

sjw@sjw-HP-Mini-110-3500:~$ ls -l /home/user41
ls: /home/user41에 접근할 수 없습니다: 그런 파일이나 디렉터리가 없습니다
sjw@sjw-HP-Mini-110-3500:~$ ls /home
lost+found  sjw  user22  user3  user4
sjw@sjw-HP-Mini-110-3500:~$
======================================================================



3) 로그인 ID 변경하기 :  -l 옵션

- '-l' 옵션으로 사용자 계정의 로그인 ID를 바꿀 수 있음

- 로그인 ID를 바꿀 때는 홈 디렉터리도 같이 바꿔주는 것이 좋음

- 기존의 홈 디렉터리에 있던 파일들이 자동으로 옮겨지지는 않으므로 별도로 디렉터리를 생성하고 이동

======================================================================

sjw@sjw-HP-Mini-110-3500:~$ grep user4 /etc/passwd
user4:x:2001:2001:user4 test:/home/user41:
sjw@sjw-HP-Mini-110-3500:~$ sudo usermod -d /home/user44 -l user44 user4
sjw@sjw-HP-Mini-110-3500:~$ grep user4 /etc/passwd
user44:x:2001:2001:user4 test:/home/user44:
sjw@sjw-HP-Mini-110-3500:~$
======================================================================





패스워드 에이징 관련 명령

- 패스워드 에이징은 'useradd', 'usermod', 'passwd', 'chage' 명령으로 설정

- 'chage' 는 패스워드 에이징을 관리하는 별도의 명령

 패스워드 에이징 관련 명령

항목

useradd, usermod, passwd 명령

chage 명령

MIN

passwd -n 날수

chage -m

MAX

passwd -x 날수

chage -M

WARNING

passwd -w 날수

chage -W

INACTIVE

useradd -f 날수 

usermod -f 날수

chage -I(대문자 i)

EXPIRE

useradd -e 날짜 (YYYY-MM-DD) 

usermod -e 날짜 (YYYY-MM-DD)

chage -E


1) 기존 명령으로 패스워드 에이징 변경하기

- 'usermod' 명령과 'passwd' 명령으로 MIN, MAX, WARNING, INACTIVE, EXPIRE 설정

======================================================================

sjw@sjw-HP-Mini-110-3500:~$ sudo grep user3 /etc/shadow
[sudo] password for sjw:
user3:!:16556:0:99999:7:::
sjw@sjw-HP-Mini-110-3500:~$ sudo usermod -f 10 -e 2014-10-31 user3
sjw@sjw-HP-Mini-110-3500:~$ sudo passwd -n 2 -x 100 -w 5 user3
passwd: password expiry information changed.
sjw@sjw-HP-Mini-110-3500:~$ sudo grep user3 /etc/shadow
user3:!:16556:2:100:5:10:16374:
sjw@sjw-HP-Mini-110-3500:~$
======================================================================

-  MIN은 2일, MAX는 100일, WARNING은 5일, INACTIVE는 10일, EXPIRE는 2014년 10월 31일로 설정



2) chage 명령으로 패스워드 에이징 변경하기

- chage 명령을 사용

======================================================================

sjw@sjw-HP-Mini-110-3500:~$ sudo grep user4 /etc/shadow
[sudo] password for sjw:
user44:!:16556:0:99999:7::16435:
sjw@sjw-HP-Mini-110-3500:~$ sudo chage -m 2 -M 100 -W 5 -I 10 -E 2014-12-31 user44
sjw@sjw-HP-Mini-110-3500:~$ sudo grep user4 /etc/shadowuser44:!:16556:2:100:5:10:16435:
sjw@sjw-HP-Mini-110-3500:~$
======================================================================



3) chage 명령으로 패스워드 에이징 설정 내용 확인하기

- chage 명령에는 설정 내용을 확인하는 ' -l(소문사 L)' 옵션과

  사용자가 암호를 변경한 마지막 날짜를 알려주는 '-d' 옵션이 있음

======================================================================

sjw@sjw-HP-Mini-110-3500:~$ sudo chage -l user3
마지막으로 암호를 바꾼 날                    :  5월 01, 2015
암호 만료                    :  8월 09, 2015
암호가 비활성화 기간                    :  8월 19, 2015
계정 만료                        : 10월 31, 2014
암호를 바꿀 수 있는 최소 날 수        : 2
암호를 바꿔야 하는 최대 날 수        : 100
암호 만료 예고를 하는 날 수        : 5
sjw@sjw-HP-Mini-110-3500:~$

======================================================================





사용자 계정 삭제하기 

- userdel 명령은 사용자 계정을 삭제함

- 사용자 계정을 삭제할 때 홈 디렉터리를 함께 삭제할 것인지를 결정

userdel

- 기능 : 사용자 계정을 삭제

- 형식 : userdel [옵션] 로그인 ID

- 옵션 :

 * '-r' : 홈 디렉터리와 메일 디렉터리를 삭제함

 * '-f' : 사용자가 로그인 중이어도 강제로 삭제함

- 사용 예 : userdel user4, userdel -r user4


1) 사용자 계정만 삭제하기

- userdel 명령에서 '-r' 옵션을 지정하지 않으면 사용자 계정만 삭제

======================================================================

user2:x:1001:1001::/home/user2:
user22:x:1002:1002::/home/user22:
user3:x:1001:1000::/home/user3:
user44:x:2001:2001:user4 test:/home/user44:
sjw@sjw-HP-Mini-110-3500:~$ sudo userdel user44
sjw@sjw-HP-Mini-110-3500:~$ grep user44 /etc/passwd
sjw@sjw-HP-Mini-110-3500:~$ ls /home
lost+found  sjw  user22  user3  user4
sjw@sjw-HP-Mini-110-3500:~$
======================================================================



2) 사용자 계정과 홈 디렉터리 삭제하기

- userdel 명령에서 '-r' 옵션을 지정하면 사용자 계정과 홈 디렉터리가 함께 삭제됨

======================================================================

sjw@sjw-HP-Mini-110-3500:~$ ls /home
lost+found  sjw  user22  user3  user4
sjw@sjw-HP-Mini-110-3500:~$ grep user3 /etc/passwd
user3:x:1001:1000::/home/user3:
sjw@sjw-HP-Mini-110-3500:~$ sudo userdel -r user3
userdel: user3 mail spool (/var/mail/user3) not found
sjw@sjw-HP-Mini-110-3500:~$ ls /home
lost+found  sjw  user22  user4
sjw@sjw-HP-Mini-110-3500:~$
======================================================================


- 홈 디렉터리가 아닌 다른 곳에 위치한 사용자 계정 소유의 파일이 있을 수 있음

- '-r' 옵션은 홈 디렉터리는 삭제하지만 홈 디렉터리 이외의 다른 디렉터리에 있는 파일은 삭제하지 않음

- 관리자는 find 명령으로 해당 계정 소유의 파일을 모두 찾아 삭제하는 것이 바람직

- find 명령을 사용하면 좋음

 * 'find / -user UID -exec rm -r {} \;


ex) 

======================================================================

sjw@sjw-HP-Mini-110-3500:~$ sudo find / -user 2001 -exec rm -r {} \;
find: `/proc/3110/task/3110/fd/5': 그런 파일이나 디렉터리가 없습니다
find: `/proc/3110/task/3110/fdinfo/5': 그런 파일이나 디렉터리가 없습니다
find: `/proc/3110/fd/5': 그런 파일이나 디렉터리가 없습니다
find: `/proc/3110/fdinfo/5': 그런 파일이나 디렉터리가 없습니다
find: `/run/user/1000/gvfs': 허가 거부
find: `/home/user4': 그런 파일이나 디렉터리가 없습니다
find: `/home/sjw/.cache/mozilla/firefox/791ymulu.default/cache2/entries/0FDDA61F4DF0B62431E9F63F918B67B5DF86A153': 그런 파일이나 디렉터리가 없습니다
sjw@sjw-HP-Mini-110-3500:~$
======================================================================





반응형