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
'Learning > └Essential & Admin' 카테고리의 다른 글
Linux_ServerAdmin (12) 백업 과 복구 (0) | 2016.11.04 |
---|---|
Linux_ServerAdmin (11) 스케줄링 관리 (0) | 2016.11.04 |
Linux_ServerAdmin (9) 리눅스 부팅과정 (0) | 2016.11.04 |
Linux_ServerAdmin (8)Software관리 (0) | 2016.11.03 |