-
사용자 그룹 관리linux/centOS 2018. 7. 4. 11:42
☆ 사용자 관리
(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$ : 암호화 알고리즘 (1: md5)
$z0vZjMTK$ : salt key (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
(명령어 사용예)
# 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 지정
---------------------------------------------------------------------------------
(전제 조건) 기존에 존재하는 사용자는 없어야 한다.
user01/user02/user03 .....
만약 사용자가 존재한다면 아래와 같이 삭제한다.
# cat /etc/passwd | tail
# userdel -r <사용자이름> (# userdel -r user01)
(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
(명령어 사용예)
# 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 */
※ 사용자 설명 정보(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
※ 사용자 만기일(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
#
※ 홈계정 생성시 참조되는 디렉토리 및 파일
사용자 계정이 생성될 때 /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'
※ 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
☆ 그룹 관리
/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)에 속한 사용자 목록
(1-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
(명령어 사용예)
# groupadd class1
# groupadd -g 1000 class1
(1-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.
(명령어 사용예)
# groupmod -g 1001 class1
# groupmod -n class2 class1 (-n : Group Name)
(1-3) groupdel 명령어
(명령어 형식)
# groupdel group
(명령어 사용예)
# groupdel class1
☆ 비밀번호 사용 제한 관리
(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:
last change : 1970년1월1일을 기준으로 오늘을 일수로 한 날짜가 표시된다.
min : 암호를 변경할 수 없는 날짜
max : 암호를 사용할 수 있는 최대 날짜
warn : max의 7일전에 암호를 변경하라는 경고 메시지를 보낸다.
inative : max로부터 30일동안 비활성화 상태로 둔다.
expire date : 절대로 넘을 수 없는 날. 이 기간을 지나면 사용자가 못들어온다. 외부사용자용으로 사용할 때 씀
'linux > centOS' 카테고리의 다른 글
backup (0) 2018.07.06 스케줄링 관리 (0) 2018.07.05 리눅스 부팅 과정 (0) 2018.07.03 소프트웨어 관리 2 (0) 2018.07.02 소프트웨어 관리 1 (0) 2018.06.29