본문 바로가기

Learning/ └Essential & Admin

Linux_ServerAdmin (10) 사용자 그룹관리

 

Linux_ServerAdmin (10) 사용자 그룹관리

 

사용자 관리

사용자 정보 파일

사용자 관리 명령어

useradd CMD

usermod CMD

userdel CMD

그룹 관리

그룹 정보 파일

그룹 관리 명령어

groupadd CMD

groupmod CMD

groupdel CMD

패스워드 에이징(password Aging)

 

 

1. 사용자 관리

 

 

(1) 사용자 정보 파일

 

/etc/passwd    사용자의 기본적인 정보가 저장된 파일

/etc/shadow    사용자의 암호가 저장된 파일

 

 

 

# cat /etc/passwd | grep root

root:x:0:0:root:/root:/bin/bash

 

(/etc/passwd 파일의 필드 해석)

필드

설  명

root

사용자 이름

x

사용자 암호(보안상 /etc/shadow 파일에 암호를 옮겨 놓았음)

0

사용자 아이디(UID)

0

그룹 아이디(GID), 사용자의 주 그룹(Primary Group)

root

설명 정보(Comment)

/root

홈 디렉토리

/bin/bash

로그인 쉘

 

 

 

 

 

 

 

 

# cat /etc/shadow | grep root

root:$1$z0vZjMTK$pp5tRxbS9k9CWhimjHfZA.:16110:0:99999:7:::

 

(/etc/shadow 파일의 필드 해석)

필드

설 명

root

사용자 이름(login name)

$1$z0vZjMTK$pp5tRxbS9k9CWhimjHfZA.

사용자 암호(encrypted password)

$1$   : 암호화 알고리즘

$z0vZjMTK$   : salt key

$pp5tRxbS9k9CWhimjHfZA.   : 암호화된 암호

14642

암호변경일(days since Jan 1, 1970 that password was last changed)

0

암호를 변경할 수 없는 최소 날짜

(days before password may be changed)

99999

암호를 사용할 수 있는 최대 날짜

(days after which password must be changed)

7

사용자 암호 만료되기전 사용자에게 경고 메세지를 주는 기간

(days before password is to expire that user is warned)

 

사용자 로그인하지 않으면 암호를 비활성화 시키는 기간

(days after password expires that account is disabled)

 

사용자 암호 만료 기간, 절대로 넘을 수 없는 기간

(days since Jan 1, 1970 that account is disabled)

 

아직 기능이 없음

  

 

 

 

 

 

(2) 사용자 관리 명령어

 

useradd CMD    사용자 정보 추가 명령어

usermod CMD    사용자 정보 변경 명령어

userdel CMD    사용자 정보 삭제 명령어

 

 

 

(2-1) useradd 명령어

useradd 명령어나 adduser 명령어 모두 수행 가능하다.

 

(명령어 형식)

# useradd [options] LOGIN

Options:

-b, --base-dir BASE_DIR    base directory for the new user account home directory

-c, --comment COMMENT      set the GECOS field for the new user account

-d, --home-dir HOME_DIR    home directory for the new user account

-D, --defaults             print or save modified default useradd configuration

-e, --expiredate           EXPIRE_DATE  set account expiration date to EXPIRE_DATE

-f, --inactive             INACTIVE  set password inactive after expiration to INACTIVE

-g, --gid GROUP            force use GROUP for the new user account

-G, --groups GROUPS        list of supplementary groups for the new user account

-h, --help                 display this help message and exit

-k, --skel SKEL_DIR        specify an alternative skel directory

-K, --key KEY=VALUE        overrides /etc/login.defs defaults

-m, --create-home          create home directory for the new user account

-l,                        do not add user to lastlog database file

-M,                        do not create user's home directory(overrides /etc/login.defs)

-r,                        create system account

-o, --non-unique           allow create user with duplicate(non-unique) UID

-p, --password PASSWORD    use encrypted password for the new user account

-s, --shell SHELL          the login shell for the new user account

-u, --uid UID              force use the UID for the new user account

-Z, --selinux-user SEUSER  use a specific SEUSER for the SELinux user mapping

 

(/etc/passwd)

user01:x:500:500:Test User:/home/user01:/bin/bash

           -u  -g    -c        -d         -s

 

(명령어 사용예)

# useradd -u 1000 -g users -c "Test User" -d /users/user01 -s /bin/ksh user01

# useradd -d /users/user01 user01

# useradd -M -d /oracle oracle

 

# useradd user01

# passwd user01

 

 

         ■ useradd 명령어의 기본 옵션(Default Options)

         ---------------------------------------------------------------------------------

         -u UID            자동으로 UID 선택(UID 500 이상), 기존 사용자 UID 다음번째 UID 선택

         -g GID            자동으로 GID 선택(GID 500 이상), 사용자 이름과 동일한 그룹 생성

         -c COMMENT        설명은 없음

         -d HOME_DIR       /home/$USER 디렉토리 생성

         -s /bin/bash      기본적으로 /bin/bash 지정

         ---------------------------------------------------------------------------------

 

 

[EX1] user01 사용자 추가

 

         (전제 조건) 기존에 존재하는 사용자는 없어야 한다.

         user01/user02/user03 .....

         만약 사용자가 존재한다면 아래와 같이 삭제한다.

         # cat /etc/passwd | tail

         # userdel -r <사용자이름>  (# userdel -r user01)

 

 

① user01 사용자 추가 및 정보 확인

 

         ■ 사용자 추가(useradd CMD + passwd CMD)

         - /etc/passwd    (user01:x:501:501::/home/user01:/bin/bash)

         - /etc/shadow    (user01:$1$RK5NpNRt$y8/Z68Liqo0Dzx4iClpLH1:16674:0:99999:7:::)

         - /etc/group     (user01:x:501:)

         - /home/$USER/*  (/etc/skel/*)

         - /var/spool/mail/$USER

 

 

# useradd user01

# passwd user01

Changing password for user user01.

New UNIX password: (user01)

BAD PASSWORD: it is based on a dictionary word

Retype new UNIX password: (user01)

passwd: all authentication tokens updated successfully.

 

# grep user01 /etc/passwd

user01:x:501:501::/home/user01:/bin/bash

-> 사용자 UID              : 501

-> 사용자 GID              : 501

-> 사용자 홈디렉토리       : /home/user01

-> 로그인 쉘               : /bin/bash

 

# grep user01 /etc/shadow

user01:$1$caEAV/uv$uKeoIoVSoabo/DDK91qmm/:14668:0:99999:7:::

 

 

# grep user01 /etc/group

user01:x:501:

 

# ls -ld /home/user01

drwx------ 3 user01 user01 4.0K Mar  1 04:55 /home/user01

 

-> 홈디렉토리의 퍼미션이 700(rwx------)이다. (다른사용자는 /home/user01 디렉토리안에를 볼수 없다.)

 

# ls -al /home/user01

drwx------ 3 user01 user01 1.0K Aug 27 10:26 ./

drwxr-xr-x 5 root   root   1.0K Aug 27 10:26 ../

-rw-r--r-- 1 user01 user01   34 Aug 27 10:26 .bash_logout

-rw-r--r-- 1 user01 user01  176 Aug 27 10:26 .bash_profile

-rw-r--r-- 1 user01 user01  124 Aug 27 10:26 .bashrc

-rw-r--r-- 1 user01 user01  515 Aug 27 10:26 .emacs

drwxr-xr-x 4 user01 user01 1.0K Aug 27 10:26 .mozilla/

 

 

# ls -al /etc/skel

drwxr-xr-x   3 root root 4.0K Aug 26 09:50 ./

drwxr-xr-x 110 root root  12K Aug 27 10:27 ../

-rw-r--r--   1 root root   34 Aug 12 10:39 .bash_logout

-rw-r--r--   1 root root  176 Sep 26  2014 .bash_profile

-rw-r--r--   1 root root  124 Sep 26  2014 .bashrc

-rw-r--r--   1 root root  515 Apr 28  2011 .emacs

drwxr-xr-x   4 root root 4.0K Oct 30  2013 .mozilla/

 

 

# ls -l /var/spool/mail

fedora   root   rpc   user01

 

 

 

 

 

② user02 사용자 추가 및 정보 확인

# mkdir -p /users

# useradd -d /users/user02 user02

# passwd user02

Changing password for user user02.

New UNIX password: (user02)

BAD PASSWORD: it is based on a dictionary word

Retype new UNIX password: (user02)

passwd: all authentication tokens updated successfully.

 

# grep user02 /etc/passwd

user02:x:502:502::/users/user02:/bin/bash

 

 

# grep user02 /etc/shadow

user02:$1$ZlX3G9ny$lRUXflE8LYfyOQI6mtyxE.:14668:0:99999:7:::

 

 

# ls -ld /users/user02

drwx------ 3 user02 user02 4.0K Mar  1 04:58 /users/user02

 

 

# grep user02 /etc/group

user02:x:502:

 

 

# ls /var/spool/mail

fedora   root   rpc   user01    user02

 

 

(2-2) usermod 명령어

 

(명령어 형식)

# usermod [options] LOGIN

 

Options:

-a, --append                        append the user to the supplemental GROUPS(use only with -G)

-c, --comment COMMENT               new value of the GECOS field

-d, --home HOME_DIR                 new home directory for the user account

-e, --expiredate EXPIRE_DATE        set account expiration date to EXPIRE_DATE

-f, --inactive INACTIVE             set password inactive after expiration to INACTIVE

-g, --gid GROUP                     force use GROUP as new primary group

-G, --groups GROUPS                 new list of supplementary GROUPS

-h, --help  display                 this help message and exit

-l, --login NEW_LOGIN               new value of the login name

-L, --lock                          lock the user account

-m, --move-home                     move contents of the home directory to the new location (use only

                                    with -d)

-o, --non-unique                    allow using duplicate (non-unique) UID

-p, --password PASSWORD             use encrypted password for the new password

-s, --shell SHELL                   new login shell for the user account

-u, --uid UID                       new UID for the user account

-U, --unlock                        unlock the user account

-Z, --selinux-user                  new selinux user mapping for the user account

 

(/etc/passwd)

user01:x:500:500:Test User:/home/user01:/bin/bash

     -l    -u  -g    -c         -d           -s

 

(명령어 사용예)

# usermod -u 2000 user01

# usermod -s /bin/ksh user01

# usermod -g 10 -c "Test Group" user01

# usermod -l user03 -d /home/user03 -m user01  (-l : login name, -m : move directory)

 

 

[EX1] user01 사용자 정보 변경

# grep user01 /etc/passwd

user01:x:501:501::/home/user01:/bin/bash

 

 

# usermod -u 2000 user01

# grep user01 /etc/passwd

user01:x:2000:503::/home/user01:/bin/bash

 

 

# usermod -s /bin/ksh user01

# grep user01 /etc/passwd

user01:x:2000:503::/home/user01:/bin/ksh

 

# usermod -l user03 -d /home/user03 –m user01  (-l : Login name, -d : Directory, -m : Move directory)

# grep user03 /etc/passwd

user03:x:2000:503::/home/user03:/bin/ksh

 

 

# ls -l /home

drwx------ 3 fedora fedora 4.0K Feb  3 02:08 fedora

drwx------ 3 user03 user01 4.0K Mar  1 05:21 user03

 

-> 사용자 홈디렉토리가 /home/user03으로 변경 되었다.

-> 홈디렉토리의 소유권은 user03으로 변경 되었지만, 그룹권은 user01 그대로이다.

-> 따라서, 리눅스에서 사용자를 변경한다면, 보통은 다음과 같은 절차여야 한다.

         (user01 -> user03 사용자 변경)

         # groupadd user03

         # usermod -l user03 -g user03 -d /home/user03 -m user03

         # groupdel user01

 

 

 

 

 

(2-3) userdel 명령어

 

(명령어 형식)

# userdel [options] LOGIN

 

Options:

-f, --force       force removal of files, even if not owned by user

-h, --help        display this help message and exit

-r, --remove      remove home directory and mail spool

 

(명령어 사용예)

# userdel user01       /* /etc/passwd, /etc/shadow 정보 삭제 */

# userdel -r user01    /* /etc/passwd, /etc/shadow + Home Directory 삭제 + /var/spool/mail/$USER */

 

 

 

[EX] 사용자 삭제 실습

 

① user02 사용자 삭제 및 확인

 

         ■ 사용자 삭제(userdel or userdel –r)

         (userdel)

         - /etc/passwd

         - /etc/shadow

         - /etc/group

         (userdel -r)

         - /etc/passwd

         - /etc/shadow

         - /etc/group

         - /home/$USER

         - /var/spool/mail/$USER

 

# userdel user02

# grep user02 /etc/passwd

#

 

# ls -l /users

drwx------ 3 502 502 4.0K Mar  1 04:58 user02

-> 파일의 소유권/그룹권 부분이 숫자로 표시난다.

-> 이것은 사용자나 그룹 정보(/etc/passwd, /etc/shadow)가 없는데 사용자의 파일이 존재하는 경우이다.

 

# rm -rf /users/user02

# rm -rf /var/spool/mail/user02

 

② user03 사용자 삭제

# userdel -r user03

#

 

# grep user01 /etc/group

user01:x:501:

 

-> 그룹은 삭제 되지 않았다.

 

# groupdel user01

# grep user01 /etc/group

-> user01 그룹이 존재하지 않는다.

 

 

 

 

 

 

 

[EX1] 사용자 설명 정보(Comment) 및 로그인 쉘(Shell) 변경

 

# cat /etc/passwd | grep user01

#

-> 사용자 없음

 

# useradd user01

# passwd user01

New UNIX password: (사용자암호입력)

Retype new UNIX password: (사용자암호입력)

 

 

# cat /etc/passwd | grep user01

user01:x:504:504::/home/user01:/bin/bash

 

 

# useradd -c testuser -s /bin/sh user02         /* -c 옵션은 사용자에 대한 설명 추가 */

# passwd user02

New UNIX password: (사용자암호입력)

Retype new UNIX password: (사용자암호입력)

 

 

# cat /etc/passwd | grep user02        /* 사용자에 대한 설명과 쉘에 대한 내용이 기본 설정과 다르게 설정 */

user02:x:505:505:testuser:/home/user02:/bin/sh

 

 

# mkdir -p /users

# useradd -s /bin/tcsh -d /users/test user03    /* -s 사용자가 사용할 쉘과 -d 홈디렉토리 선택 */

# passwd user03

New UNIX password: (사용자암호입력)

Retype new UNIX password: (사용자암호입력)

 

 

# cat /etc/passwd | grep user03                 /* user3만 "/users" 디렉토리에 홈디렉토리가 만들어졌다. */

user03:x:506:506::/users/test:/bin/tcsh

 

 

# ls -l /users

drwx------ 4 user03 user03 4096 Jan 28 09:50 test

 

 

 

 

[EX2] 사용자 만기일(Expire Date) 설정

 

--------------------------------------------------------------------------------

OPTIONS                    DESCRIPTIONS

--------------------------------------------------------------------------------

-e, --expiredate           EXPIRE_DATE  set account expiration date to EXPIRE_DATE

--------------------------------------------------------------------------------

 

① 현재 시간 확인

# date

Mon Mar  1 17:07:51 KST 2010

 

-> 오늘 : 2010년 03월01일 17:07:51

 

② user04 사용자의 Expire Date 설정

# useradd -e 2010-03-30 user04

# passwd user04

New UNIX password: (사용자암호입력)

Retype new UNIX password: (사용자암호입력)

 

-> user04 사용자는 30일이 지나면 시스템에 들어 올수 없다.

 

# grep user04 /etc/shadow

user04:$1$wxAr5EL9$Addd5AWeumVztBnhkQ7UK0:14669:0:99999:7::14698:

 

-> 14669 : Last Changed

-> 14698 : Expire Date

-> 14698 - 14669 = 약 30일정도

   # expr 14698 - 14669

 

 

 

 

 

③ 운영체제 시간 변경 및 테스트

# date 04011713

Thu Apr  1 17:13:00 KST 2010

 

-> 운영체제 시간 변경(2010년 04월01일 17:12)

 

 

 

 

# telnet localhost

Connected to localhost.localdomain (127.0.0.1).

Escape character is '^]'.

 

    linux101.example.com (Linux release 2.6.18-164.11.1.el5 #1 SMP Wed Jan 20 07:39:04 EST 2010) (4)

 

login: user04

Password: (사용자 암호입력)

[Your account has expired; please contact your system administrator]

Login incorrect

Connection closed by foreign host.

 

 

 

 

 

user04 사용자로 로그인

-> 로그인 되지 않음

-> Expire Date를 넘었기 때문에

 

④ 운영체제 시간 복원 및 테스트

# rdate -s time.bora.net

# date

Mon Mar  1 17:23:13 KST 2010

 

 

 

 

 

 

# telnet localhost

user04 사용자로 로그인

 

$ id

uid=501(user04) gid=502(user04) groups=502(user04)

 

 

$ exit

#

 

 

 

[EX3] 홈계정 생성시 참조되는 디렉토리 및 파일

사용자 계정이 생성될 때 /etc/skel(skelton) 디렉토리에서 파일등이 복사 된다.

 

# useradd user05

# passwd user05

-> user05 사용자의 암호 입력

 

# ls -al /etc/skel /home/user05      /* 두 파일이 동일한 것을 알 수 있다 */

/etc/skel:

total 56K

drwxr-xr-x  3 root root  4.0K Feb  3 01:56 .

drwxr-xr-x 109 root root  12K Mar  1 20:05 ..

-rw-r--r--  1 root root   33 Jan 22  2009 .bash_logout

-rw-r--r--  1 root root  176 Jan 22  2009 .bash_profile

-rw-r--r--  1 root root  124 Jan 22  2009 .bashrc

drwxr-xr-x  4 root root 4.0K Feb 18 09:18 .mozilla

 

/home/user05:

total 32K

drwx------ 3 user04 user04 4.0K Mar 25 17:13 .

drwxr-xr-x 4 root  root    4.0K Mar  1 20:05 ..

-rw-r--r-- 1 user04 user04   33 Mar  1 20:05 .bash_logout

-rw-r--r-- 1 user04 user04  176 Mar  1 20:05 .bash_profile

-rw-r--r-- 1 user04 user04  124 Mar  1 20:05 .bashrc

drwxr-xr-x 4 user04 user04 4.0K Mar  1 20:05 .mozilla

 

 

 

 

 

 

# cd /etc/skel

# alias ll

         alias ll='ls -l --color=tty'  <----- 복사

 

 

 

# vi .bashrc      (# vi /etc/skel/.bashrc)

# .bashrc

 

# Source global definitions

if [ -f /etc/bashrc ]; then

         . /etc/bashrc

fi

 

# User specific aliases and functions

alias ll='ls -lFh --color=tty'  <----- 새로운 라인 추가

 

 

 

 

 

# useradd user06

# passwd user06

-> user06 사용자 암호 입력

 

# ls -al /etc/skel /home/user06

/etc/skel:

total 52K

drwxr-xr-x  3 root root  4.0K Apr  1 17:20 .

drwxr-xr-x 109 root root  12K Apr  1 17:23 ..

-rw-r--r--  1 root root   33 Jan 22  2009 .bash_logout

-rw-r--r--  1 root root  176 Jan 22  2009 .bash_profile

-rw-r--r--  1 root root  155 Apr  1 17:20 .bashrc

drwxr-xr-x  4 root root 4.0K Feb 18 09:18 .mozilla

 

/home/user06:

total 28K

drwx------ 3 user06 user06 4.0K Apr  1 17:23 .

drwxr-xr-x 6 root  root    4.0K Apr  1 17:23 ..

-rw-r--r-- 1 user06 user06   33 Apr  1 17:23 .bash_logout

-rw-r--r-- 1 user06 user06  176 Apr  1 17:23 .bash_profile

-rw-r--r-- 1 user06 user06  155 Apr  1 17:23 .bashrc

drwxr-xr-x 4 user06 user06 4.0K Apr  1 17:23 .mozilla

 

-> /etc/skel 디렉토리안의 내용을 변경했을때 적용되는 시점은 새로운 사용자가 추가되었을시이다.

-> /etc/skel 디렉토리안의 내용을 변경했을때 이전 사용자 디렉토리(기존에 추가된 사용자의 홈디렉토리)에 파일

   들에는 반영이 되지 않는다.

 

# cat /home/user06/.bashrc

# .bashrc

 

# Source global definitions

if [ -f /etc/bashrc ]; then

        . /etc/bashrc

fi

 

# User specific aliases and functions

alias ll='ls -lhF --color=tty'

 

 

 

 

 

 

[EX4] 다중 사용자 추가

 

         (권장) 관리자용 스크립트 디렉토리: /root/bin, /root/shell

                # ls -ld /root

 

# mkdir -p /root/bin

# cd ~/bin

# vi passwd.txt

 

 

(cd ~/bin ; vi passwd.txt)

 

(사용자)  (암호)

 

         # vi add.sh

 

#!/bin/bash

 

START=100

END=140

 

while [ $START -le $END ]     /* -le : less equal */

do

         echo "user$START  user$START" >> /root/bin/passwd.txt

         START=`expr $START + 1`

done

 

 

 

 

 

 

         # chmod 750 add.sh

         # ./add.sh

         # cat passwd.txt

 

 

 

 

# vi useradd.sh

#!/bin/bash 

cat /root/bin/passwd.txt | while read USER_NAME PASSWD

do

       useradd $USER_NAME

       echo $PASSWD | /usr/bin/passwd --stdin $USER_NAME

done

 

 

 

# chmod 750 useradd.sh

# ./useradd.sh

Changing password for user user100.

passwd: all authentication tokens updated successfully.

Changing password for user user101.

passwd: all authentication tokens updated successfully.

 

 

 

 

 

[EX5] useradd 명령어 실행시 사용되는 기본 설정값 바꾸기

# useradd -D        /* -D : Default, 설정파일의 내용을 출력 함 */

GROUP=100         /* 기본 그룹 GID */

HOME=/home        /* 사용자의 홈디렉토리가 생성될 디렉토리 */

INACTIVE=-1       /* 비밀번호 만기 후 계정잠금 기간 */

EXPIRE=           /* 비밀번호 만기 일수 */

SHELL=/bin/bash   /* 기본 쉘 */

SKEL=/etc/skel    /* 계정생성시 홈디렉토리에 복사할 파일을 가진 디렉토리 */

CREATE_MAIL_SPOOL=yes

 

         ▪ useradd -D -g 10

         ▪ useradd -D -b /users

         ▪ useradd -D -s /bin/ksh

 

# cat /etc/default/useradd

# useradd defaults file

GROUP=100

HOME=/home

INACTIVE=-1

EXPIRE=

SHELL=/bin/bash

SKEL=/etc/skel

CREATE_MAIL_SPOOL=yes

 

-> useradd -D 명령어를 통해 설정하면 /etc/default/useradd 파일의 내용을 변경하게 된다.

 

# useradd -D -s /bin/sh

# useradd -D

GROUP=100

HOME=/home

INACTIVE=-1

EXPIRE=

SHELL=/bin/sh

SKEL=/etc/skel

CREATE_MAIL_SPOOL=yes

 

 

# useradd -D -b /users

# useradd -D

GROUP=100

HOME=/users

INACTIVE=-1

EXPIRE=

SHELL=/bin/sh

SKEL=/etc/skel

CREATE_MAIL_SPOOL=yes

 

 

# cat /etc/default/useradd

GROUP=100

HOME=/users

INACTIVE=-1

EXPIRE=

SHELL=/bin/sh

SKEL=/etc/skel

CREATE_MAIL_SPOOL=yes

 

 

# useradd user08

# passwd user08

-> 사용자 암호 입력

 

# cat /etc/passwd | grep user07

user07:x:510:510::/home/user07:/bin/bash

 

 

# cat /etc/passwd | grep user08

user08:x:511:511::/users/user08:/bin/sh

 

 

 

 

         (복원) useradd 명령어의 기본 동작 복원

         # useradd -D -s /bin/bash

         # useradd -D -b /home

 

 

 

 

 

2. 그룹 관리

 

 

 

(1) 그룹 정보 파일

 

/etc/group 파일 : 그룹 정보 파일

 

# cat /etc/group | head -3

root:x:0:root

bin:x:1:root,bin,daemon

daemon:x:2:root,bin,daemon

 

(/etc/group 파일의 필드 해석)

필 드

설 명

root

그룹 이름

x

그룹 암호

0

그룹 아이디(GID)

root

그룹(Secondary Group)에 속한 사용자 목록

 

# id      (# groups)

uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)

         주 그룹(Primary Group)   : root(0)

         부 그룹(Secondary Group) : bin(1), daemon(2), sys(3), adm(4), disk(6), wheel(10)

 

# cat /etc/group | grep root

root:x:0:root

bin:x:1:root,bin,daemon

daemon:x:2:root,bin,daemon

sys:x:3:root,bin,adm

adm:x:4:root,adm,daemon

disk:x:6:root

wheel:x:10:root

 

 

 

(2) 그룹 관리 명령어

 

groupadd 명령어 그룹 정보 추가

groupmod 명령어 그룹 정보 변경

groupdel 명령어 그룹 정보 삭제

 

 

(2-1) groupadd 명령어

 

(명령어 형식)

# groupadd [options] group

 

Options:

-f, --force                force exit with success status if the specified group already exists

-r,                        create system account

-g, --gid GID              use GID for the new group

-h, --help                 display this help message and exit

-K, --key KEY=VALUE        overrides /etc/login.defs defaults

-o, --non-unique           allow create group with duplicate(non-unique) GID

 

(/etc/group)

class1:x:507:

 

(명령어 사용예)

# groupadd class1

# groupadd -g 1000 class1

 

 

 

 

 

[EX] 그룹 추가

# groupadd class1

# grep class1 /etc/group

class1:x:507:

 

 

# groupadd -g 1000 class2

# grep class2 /etc/group

class2:x:1000:

 

 

 

(2-2) groupmod 명령어

 

(명령어 형식)

# groupmod [-g gid [-o]] [-n name] group

 

OPTIONS

      -g gid

         The numerical value of the group's ID. This value must be unique,

         unless the -o option is used. The value must be non-negative. Values

         between 0 and 999 are typically reserved for system groups. Any files

         which the old group ID is the file group ID must have the file group ID

         changed manually.

 

      -n new_group_name

         The name of the group will be changed from group to new_group_name.

 

(/etc/group)

class1:x:507:

   -n       -g

 

(명령어 사용예)

# groupmod -g 1001 class1

# groupmod -n class2 class1    (-n : Group Name)

 

 

[EX] 그룹 정보 변경

# cat /etc/group | grep class1

class1:x:507:

 

 

# groupmod -g 1001 class1

# grep class1 /etc/group

class1:x:1001:

 

 

# groupmod -n class3 class1

# cat /etc/group | tail –3

user101:x:506:

class2:x:1000:

class3:x:1001:

 

 

 

 

(2-3) groupdel 명령어

 

(명령어 형식)

# groupdel group

 

(명령어 사용예)

# groupdel class1

 

 

[EX] 그룹 삭제

# cat /etc/group | tail

sabayon:x:86:

fedora:x:500:

user01:x:501:

user04:x:502:

user05:x:503:

user06:x:504:

user100:x:505:

user101:x:506:

class2:x:1000:

class3:x:1001:

 

 

# groupdel class2

# groupdel class3

# cat /etc/group | tail

-> class2, class3 존재하지 않는다.

 

 

3. 패스워드 사용 제한 관리

 

 

 

시스템 보안을 위해 사용자 패스워드 만기일을 설정 및 변경하는 명령어를 배워 보자.

password age(password aging)

 

(1) chage 명령어

 

(명령어 형식)

# chage [options] user

 

Options:

 

-d, --lastday                       LAST_DAY  set last password change to LAST_DAY

-E, --expiredate EXPIRE_DATE        set account expiration date to EXPIRE_DATE

-h, --help                          display this help message and exit

-I, --inactive INACTIVE             set password inactive after expiration to INACTIVE

-l, --list                          show account aging information

-m, --mindays  MIN_DAYS             set minimum number of days before password change to MIN_DAYS

-M, --maxdays  MAX_DAYS             set maximim number of days before password change to MAX_DAYS

-W, --warndays WARN_DAYS            set expiration warning days to WARN_DAYS

 

 

(명령어 사용예)

# chage -M 30 -W 7 user01

# chage -E 2010-03-30 user01

# chage -l user01

 

(/etc/shadow)

user01:$1$eG0hsAqw$Cfawvh5OsIye2rKYcRPH.0:Last Change:MIN:MAX:WARN:INATIVE:Expire Date:

user01:$1$eG0hsAqw$Cfawvh5OsIye2rKYcRPH.0:14650:0:99999:7:::

user01:$1$eG0hsAqw$Cfawvh5OsIye2rKYcRPH.0:14650:30:90:7:30:15000:

 

 

다음은 패스워드 에이징(Password Aging)에 대한 설명 그림이다.

 

현재(암호가 변경된 날짜)

|

|                     30(MIN)                    90(MAX)               2014.12.31(ExpireDate)

|                        |                          |                            |

|------------------------+--------------------------+---------------------------+---

|                                           |7(WARN)|

 

90(MAX)             30(Inactive)                                        2014.12.31(ExpreDate)

|                        |                                                       |

|------------------------+------------------------------------------------------+

|

 

                            [그림] Password Aging

 

 

[EX1] 패스워드 변경후 다시 변경할 수 있는 최소 날짜(Min Chage 설정)

(전제조건) user01/user02/user03 사용자가 존재해야 한다.

         - 기존의 사용자 모두 삭제(user01, user02, user03, ..... user100, user101)

                  # userdel -r user01

         - 새로운 사용자 추가(user01, user02, user03)

                  # useradd user01

                  # passwd user01

 

# chage -l user01

Last password change                                  : Feb 10, 2010

Password expires                                      : never

Password inactive                                     : never

Account expires                                       : never

Minimum number of days between password change       : 0

Maximum number of days between password change       : 99999

Number of days of warning before password expires    : 7

 

 

# cat /etc/shadow | grep user01

user01:$1$2m3GgTgT$bM5ZxsZqpCi/hkPV0Ytpe.:16129:0:99999:7:::

 

# chage -m 7 user01     /* -m : MIN Change */

# chage -l user01

Last password change                                  : Apr 01, 2010

Password expires                                      : never

Password inactive                                     : never

Account expires                                       : never

Minimum number of days between password change       : 7

Maximum number of days between password change       : 99999

Number of days of warning before password expires    : 7

 

# telnet localhost

user01 사용자로 로그인

 

$ passwd

Changing password for user user01.

Changing password for user01

(current) UNIX password: (사용자 암호입력)

You must wait longer to change your password  <----- 사용자는 7일이전에 암호를 변경할 수 없다.

passwd: Authentication token manipulation error

 

 

$ exit

#

 

 

[EX2] 패스워드 변경 후 다시 변경할 수 있는 최소 날짜(MAX Chage 설정)

# chage -M 30 user02     /* -M : MAX Change */

# chage -l user02

Last password change                                  : Mar 01, 2010

Password expires                                      : Mar 31, 2010

Password inactive                                     : never

Account expires                                       : never

Minimum number of days between password change       : 0

Maximum number of days between password change       : 30

Number of days of warning before password expires    : 7

 

현재(암호가 변경된 날짜)

|

|                                                30(MAX)

|                                                   |

|------------------------+--------------------------+---------------------------+---

|                                           |7(WARN)|

3월2일                                           4월2일

 

 

# date   (# cal)

Mon Mar  1 23:06:44 KST 2010

 

 

# date 03282306    (03월28일 23:06)

Sun Mar 28 23:06:00 KST 2010

 

 

# telnet localhost

Trying 127.0.0.1...

Connected to localhost.localdomain (127.0.0.1).

Escape character is '^]'.

 

     linux101.example.com (Linux release 2.6.18-164.11.1.el5 #1 SMP Wed Jan 20 07:39:04 EST 2010) (4)

 

login: user02

Password: (user02 사용자 암호 입력)

[Warning: your password will expire in 3 days]

 

 

$ exit

# chage -l user02

Last password change                                  : Mar 01, 2010

Password expires                                      : Mar 31, 2010

Password inactive                                     : never

Account expires                                       : never

Minimum number of days between password change       : 0

Maximum number of days between password change       : 30

Number of days of warning before password expires    : 7

 

 

# date 04202306    (04월20일 23:06)

Tue Apr 20 23:06:00 KST 2010

 

 

# telnet localhost

Trying 127.0.0.1...

Connected to localhost.localdomain (127.0.0.1).

Escape character is '^]'.

 

    linux101.example.com (Linux release 2.6.18-164.11.1.el5 #1 SMP Wed Jan 20 07:39:04 EST 2010) (4)

 

login: user02

Password: user02

[You are required to change your password immediately (password aged)]

[Changing password for user02]

(current) UNIX password: user02

New UNIX password: (새로운 암호 입력 : acbd1324)

Retype new UNIX password: (새로운 암호 입력 : acbd1324)

Last login: Sun Mar 28 23:06:51 from linux101

 

 

$ exit

#

 

# rdate -s time.bora.net

# date

-> 시스템 시간 복구

 

# chage -E 2010-11-30 user03      /* -E : Expire Date */

# chage -l user03

Last password change                                  : Mar 02, 2010

Password expires                                      : never

Password inactive                                     : never

Account expires                                       : Nov 30, 2010

Minimum number of days between password change       : 0

Maximum number of days between password change       : 99999

Number of days of warning before password expires    : 7

 

 

# date 12301200    (12월30일 12:00)

Tue Dec 30 12:00:00 KST 2010

 

 

# telnet localhost

Trying 127.0.0.1...

Connected to localhost.localdomain (127.0.0.1).

Escape character is '^]'.

 

    linux101.example.com (Linux release 2.6.18-164.11.1.el5 #1 SMP Wed Jan 20 07:39:04 EST 2010) (4)

 

login: user03

Password:(사용자 암호 입력)

[Your account has expired; please contact your system administrator]

Login incorrect

Connection closed by foreign host.

 

 

# grep user /etc/shadow

user01:$1$6YRLZe7X$Wq2IPhlAPCe.aiRU.bw.t1:14670:7:99999:7:::

user02:$1$NnSNmm9/$XrmbouuCWFxPjvrr4UKvP/:14719:0:30:7:::

user03:$1$wCwjYBvI$zdKUYhOks6c9Hu3Ejw5nr1:14670:0:99999:7::14943:

 

 

         # chage -E "" user03

         # chage –l user03

 

 

[EX3] oracle/wasuser 사용자 추가

■ Oracle DB(oracle) 사용자 추가

# groupadd oinstall

# groupadd dba

# useradd -g oinstall -G dba -d /oracle oracle

 

         [참고] useradd 명령어 수행시 에러 발생되는 경우

         # useradd -g oinstall -G dba -d /oracle oracle

         useradd: warning: the home directory already exists.

         Not copying any file from skel directory into it.

         # ls –ld /oracle

         # chown –R oracle:oinstall /oracle

 

# passwd oracle

# su - oracle

$ id

$ pwd

$ exit

 

■ WAS(Web Application Server) 사용자 추가

# groupadd wasgroup

# useradd -g wasgroup -d /was wasuser

# passwd wasuser

# su – wasuser

$ id

$ pwd

$ exit

 

 

 

 

 

 

(원복) 사용자 정보 원복 및 시간

1.  사용자 정보 원복

         # userdel –r oracle

         # groupdel dba

         # groupdel oinstall

 

         # userdel -r wasuser

         # groupdel wasgroup

 

         # userdel -r user01

         # userdel -r user02

         # userdel -r user03

 

         # useradd user01

         # useradd user02

         # useradd user03

 

         # passwd user01

         # passwd user02

         # passwd user03

 

2. 운영체제 시간 원복

         # rdate -s time.bora.net (# rdate 172.16.9.252)

 

 

 

 

DB
root[~]#groupadd oinstall
root[~]#groupadd dba
root[~]#ls -ld /oracle
drwxr-xr-x 2 root root 4096 11월  1 18:02 /oracle

root[~]#chown -R oracle:oinstall /oracle
chown: `oracle:oinstall': 잘못된 사용자

[EX3] oracle/wasuser 사용자 추가
■ Oracle DB(oracle) 사용자 추가
# groupadd oinstall
# groupadd dba (dba마음대로관리)

# useradd -g oinstall -G dba -d /oracle oracle
-g : 프라이머리그룹
-G : 세컨더리그룹
 [참고] useradd 명령어 수행시 에러 발생되는 경우
 # useradd -g oinstall -G dba -d /oracle oracle
 useradd: warning: the home directory already exists.
 Not copying any file from skel directory into it.
 # ls ?ld /oracle
 # chown ?R oracle:oinstall /oracle

# passwd oracle
# su - oracle
$ id
$ pwd
$ exit

■ WAS(Web Application Server) 사용자 추가
# groupadd wasgroup
# useradd -g wasgroup -d /was wasuser
# passwd wasuser
# su ? wasuser
$ id
$ pwd
$ exit

 

 


(원복) 사용자 정보 원복 및 시간
1.  사용자 정보 원복
 # userdel ?r oracle
 # groupdel dba
 # groupdel oinstall

 # userdel -r wasuser
 # groupdel wasgroup

 # userdel -r user01
 # userdel -r user02
 # userdel -r user03

 # useradd user01
 # useradd user02
 # useradd user03

 # passwd user01
 # passwd user02
 # passwd user03

2. 운영체제 시간 원복
 # rdate -s time.bora.net (# rdate 172.16.9.252)

 

 


root[~]#useradd -g oinstall -G dba -d /oracle -M oracle
root[~]#grep oracle /etc/passwd
oracle:x:501:501::/oracle:/bin/bash

root[~]#ls -ld /oracle
drwxr-xr-x 2 root root 4096 11월  1 18:02 /oracle

root[~]#chown -R oracle:oinstall /oracle
root[~]#ls -ld /oracle
drwxr-xr-x 2 oracle oinstall 4096 11월  1 18:02 /oracle

root[~]#passwd oracle
Changing password for user oracle.
New UNIX password:
BAD PASSWORD: it is based on a dictionary word
Retype new UNIX password:
passwd: all authentication tokens updated successfully.

root[~]#su - oracle
-bash-3.2$ exit
logout
root[~]#

 

-bash-3.2$ cp /etc/skel/.?* /oracle
-bash-3.2$ exit

root[~]#su - oracle
oracle[~]$ls