사용자 계정의 개념과 역할
사용자 계정의 개념
-리눅스는 다중 사용자 운영체제
-따라서 사용자는 사용자 계정이 있어야 리눅스를 사용할 수 있다.
-사용자 계정은 사용자명 또는 로그인 아이디라고 한다.
-사용자 계정은 유일한 식별값인 UID 를 가진다.
사용자 구분
사용자 계정 구분 | 설명 | UID |
---|---|---|
일반 사용자 계정 | - 일반 사용자 계정 - 자신의 홈 디렉터리 외에는 제한된 권한을 가짐 |
기본적으로 1000부터 시작 사용자 생성시 임의 지정 가능 |
root | - 슈퍼유저 또는 관리자 계정 - 시스템 사용에 관한 모든 절대적인 권한을 가지고 있음 |
0 |
시스템 계정 | - 특정 프로그램 실행을 위해 사용 - 보안 목적으로 사용함 - 로그인에 사용되는 계정은 시스템 계정이 될 수 없음 |
사용자 계정의 역할과 의미
-관리자 입장에서 사용자 계정 별로 접근 권한을 통제할 수 있음
-실행 명령도 계정별로 구분할 수 있다.
사용자 계정과 관련된 파일
파일 | 설명 |
---|---|
/etc/login.defs | 사용자 계정 생성시 필요한 설정의 기본값을 정의한 파일 |
/etc/default/useradd | 사용자 계정 생성 명령어인 useradd의 실행 파일 |
/etc/passwd | 사용자 계정에 관련된 정보를 가진 텍스트 파일 암호, UID, GID, 설명, 홈디렉토리, 기본셸 등의 정보를 가진다. |
/etc/shadow | 사용자 계정의 암호와 패스워드 에이징 정보를 가진 파일 패스워드 에이징 : 비밀번호 변경 기간 및 만료 관련 |
/etc/group | 그룹 계정에 관련된 정보를 가진 텍스트 파일 그룹이름, 그룹비밀번호, GID, 구성원 리스트 등의 정보를 가진다. |
/home/ |
생성되는 사용자의 홈 디렉토리 경로 |
/etc/skel | 사용자 홈 디렉터리가 생성될 때 기본으로 생성될 파일들의 원본을 가진 디렉터리 |
사용자 계정의 생성 절차
순서 | 생성 절차 |
---|---|
1 | useradd 명령어 실행 |
2 | /etc/login.defs 파일과 /etc/default/useradd 파일을 읽어서 사용자 계정 생성 관련 기본값 확인 |
3 | useradd 명령어의 옵션과 인수 를 확인하고, 기본값을 대체할지 확인 |
4 | /etc/passwd 파일과 /etc/shadow 파일에 신규 사용자 계정에 해당하는 항목 생성 |
5 | /etc/group 파일에 새로운 그룹에 해당하는 항목을 추가하거나, 기존 그룸에 구성원 추가 |
6 | /home 디렉터리에 사용자 계정의 홈 디렉터리인 /home/<username> 을 생성 |
7 | /etc/skel/ 디렉터리에 있는 파일을 사용자 계정의 홈 디렉터리에 복사 |
사용자 관련 명령어
명령어 | 설명 |
---|---|
useradd | 사용자 계정 생성 |
passwd | 사용자 비밀번호 설정 |
usermod | 사용자 계정 수정 |
userdel | 사용자 계정 삭제 |
id | 사용자 정보 확인 |
chage | 사용자 비밀번호 만료 등 에이징 정보 관리 |
newgrp | 임시 주 그룹 변경 |
1. 사용자 계정 생성 useradd
명령어 설명
사용자 계정을 만드는 관리자 명령
기본 사용법
1
useradd [options] username
옵션
옵션 | full name | 설명 |
---|---|---|
-c | –comment | 계정에 대한 설명을 설정하는 옵션useradd -c "설명" <username> 과 같이 사용 |
-d | –home-dir | 사용자 계정의 홈 디렉터리 경로를 설정한다.useradd -d <path> <username> 과 같이 사용이 옵션을 사용하지 않으면 기본 홈 디렉터리 경로인 /home/<username> 로 지정된다. |
-D | –defaults | 계정을 생성할 때 사용되는 기본 설정을 보여준다. 홈 디렉터리, 주 그룹, 만료일, 기본 셸 등의 정보가 해당. |
-D [options] | –defaults | 계정을 생성할 때 사용되는 기본 설정을 변경한다. -b : 홈 디렉터리의 위치 변경 -e : 만료 날짜를 변경 -g : 주 그룹을 변경 -s : 기본 셸을 변경 |
-e | –expiredate | 계정의 만료일을 설정하는 옵션useradd -e YYYY-MM-DD <username> 과 같이 사용한다.옵션 미사용시 /etc/default/useradd 파일에 설정된 EXPIRE 값이 적용된다. 보통 기본값은 무기한(빈 문자열)이다. |
-g | –gid | 계정이 속할 주 그룹을 지정하는 옵션useradd -g <gid or groupname> <username> 과 같이 사용한다./etc/group 파일에 이미 존재하는(등록된) 그룹만 지정할 수 있다. 이 옵션을 사용하지 않으면 기본적으로 사용자 계정의 이름 및 uid와 같은 그룹 이름-gid 로 생성된다. |
-G | –groups | 계정이 속하는 부 그룹 1개 이상을 지정할 수 있다.useradd -G <group1>,<group2>,... <username> 과 같이 사용한다.그룹 여러 개를 지정할 때에는 위처럼 콤마를 이용한다. |
-s | –shell | 사용자의 기본 셸을 설정한다.useradd -s <path/to/shell> <username> 과 같이 사용한다. |
-u | –uid | 사용자의 uid를 수동으로 설정한다.useradd -u 9876 <username> 과 같이 사용한다.이 옵션을 사용하지 않으면, 기본적으로 다음으로 사용할 수 있는 UID가 자동으로 지정된다. |
예시
1
2
3
4
## comment
useradd -c "the first test user" tfu
cat /etc/passwd | grep tfu
>> tfu:x:1001:1001:the first test user:/home/tfu:/bin/bash
1
2
3
4
## home-dir
useradd -d /data/dirus diruser
ls -l /data
>> drwx------. 2 diruser diruser 62 Nov 26 00:25 dirus
1
2
3
4
5
6
7
8
9
## default
useradd -D
>> GROUP=100
>> HOME=/home
>> INACTIVE=-1
>> EXPIRE=
>> SHELL=/bin/bash
>> SKEL=/etc/skel
>> CREATE_MAIL_SPOOL=yes
1
2
3
4
5
6
7
8
9
## default [options]
useradd -D -s /bin/sh
useradd -D
>> GROUP=100
>> HOME=/home
>> INACTIVE=-1
>> EXPIRE=
>> SHELL=/bin/sh # 변경됨
>> SKEL=/etc/skel
1
2
3
4
5
## expiredate
useradd -e 2024-11-27 oneDayLeft
cat /etc/shadow | grep one*
>> oneDayLeft:!!:20052:0:99999:7::20054: # 20054
# 1970년 1월 1일로부터 20054일 뒤인 2024-11-27이 expire date로 설정됨
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
## group
# (1) 기존 사용자 그룹 확인
cat /etc/group | grep one*
>> oneDayLeft:x:1001: # oneDayLeft 그룹은 1001 gid
# (2) 신규 생성 사용자 그룹 지정 (gid)
useradd -g 1001 1001_user
cat /etc/passwd | grep 1001*
>> 1001_user:x:1002:1001::/home/1001_user:/bin/bash
# (3) 신규 생성 사용자 그룹 지정 (그룹이름)
useradd -g oneDayLeft odl_user
cat /etc/passwd | grep odl*
odl_user:x:1003:1001::/home/odl_user:/bin/bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
## groups
# 첫 번째 그룹 생성
useradd firstgroupuser
cat /etc/passwd | grep first*
>> firstgroupuser:x:1004:1004::/home/firstgroupuser:/bin/bash
# 두 번째 그룹 생성
useradd secondgroupuser
cat /etc/passwd | grep second*
>> secondgroupuser:x:1005:1005::/home/secondgroupuser:/bin/bash
# 멀티그룹 유저 생성
useradd -G 1004,1005 multigroupuser
cat /etc/passwd | grep multi*
>> multigroupuser:x:1006:1006::/home/multigroupuser:/bin/bash
cat /etc/group | grep *multi*
>> firstgroupuser:x:1004:multigroupuser
>> secondgroupuser:x:1005:multigroupuser
>> multigroupuser:x:1006:
1
2
3
4
## shell
useradd -s /bin/sh shuser
cat /etc/passwd | grep shuser
>> shuser:x:1007:1007::/home/shuser:/bin/sh
1
2
3
4
## user-group
useradd -u 9876 custom_uid
cat /etc/passwd | grep custom*
>> custom_uid:x:9876:9876::/home/custom_uid:/bin/bash
2. 사용자 비밀번호 설정 passwd
명령어 설명
-사용자 계정의 비밀번호를 설정하는 명령어이다.
-passwd
명령어로 사용자 계정의 비밀번호를 만들어야만 계정 사용이 가능하다.
기본 사용법
1
passwd username
위 명령어를 실행하면 대화식으로 사용자 계정의 비밀번호를 받는다.
(확인까지 총 2회)
3. 사용자 계정 수정 usermod
명령어 설명
사용자 계정의 정보를 수정하는 관리자 명령
기본 사용법
1
usermod [options] username
-대부분의 옵션이 useradd 명령과 유사하다.
옵션
옵션 | full name | 설명 |
---|---|---|
-d | –home-dir | 사용자 계정의 홈 디렉터리 경로를 수정한다.usermod -d <path> <username> 과 같이 사용 |
-m | –move-home | -d와 함께 사용되며, 기존 홈 디렉터리의 내용을 새 디렉터리로 복사함 |
-l | –login | 사용자 계정의 이름을 변경 |
-u | –uid | 사용자의 uid를 수동으로 설정한다.usermod -u 9876 <username> 과 같이 사용한다. |
-L | –lock | 사용자 계정을 잠근다. /etc/shadow 파일에 해싱된 비밀번호 앞에 !를 붙인다. usermod -L <username> 과 같이 사용한다. |
-U | –unlock | 사용자 계정을 잠금 해제한다. /etc/shadow 파일에 붙었던 !를 뗀다. usermod -U <username> 과 같이 사용한다. |
예시
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
## home dir
# 기존 정보 확인
cat /etc/passwd | grep tu_01
>> tu_01:x:1001:1002::/home/tu_01:/bin/bash
ls -l /home
>> drwx------. 2 tu_01 tu_01 62 Nov 26 00:54 tu_01
>> drwx------. 2 tu_02 tu_02 62 Nov 26 00:54 tu_02
# home dir 변경
usermod -d /data/ttt tu_01
cat /etc/passwd | grep tu_01
>> tu_01:x:1001:1002::/data/ttt:/bin/bash
ls -l /home
>> drwx------. 2 tu_01 tu_01 62 Nov 26 00:54 tu_01
>> drwx------. 2 tu_02 tu_02 62 Nov 26 00:54 tu_02
ls -l /data
>> 없음
# home dir 변경 및 디렉터리 복사
usermod -d /data/ttt -m tu_01
ls -l /home
>> drwx------. 2 tu_01 tu_01 62 Nov 26 00:54 tu_01
>> drwx------. 2 tu_02 tu_02 62 Nov 26 00:54 tu_02
ls -l /data
>> drwx------. 2 tu_01 tu_01 62 Nov 26 00:54 ttt
1
2
3
4
5
6
## login name
usermod -l ttt tu_01
cat /etc/passwd | grep ttt
>> ttt:x:1001:1002::/data/ttt:/bin/bash
ls -l /data
>> drwx------. 2 ttt tu_01 62 Nov 26 00:54 ttt
1
2
3
4
## user id
usermod -u 5555 ttt
cat /etc/passwd | grep ttt
>> ttt:x:5555:1002::/data/ttt:/bin/bash # uid 변경됨
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
## LOCK
# 사용자의 비밀번호 확인
cat /etc/shadow | grep tu_02
>> tu_02:abcdefg...:20052:0:99999:7:::
# LOCK
usermod -L tu_02
cat /etc/shadow | grep tu_02
>> tu_02:!abcdefg...:20052:0:99999:7::: # 비밀번호 앞에 느낌표가 붙음
# UNLOCK
usermod -U tu_02
cat /etc/shadow | grep tu_02
>> tu_02:abcdefg...:20052:0:99999:7::: # 비밀번호 앞에 느낌표가 사라짐
4. 사용자 계정 삭제 userdel
명령어 설명
-사용자 계정을 삭제하는 관리자 명령이다.
-/etc/passwd 파일에서 삭제하는 사용자 계정에 해당하는 라인을 삭제한다.
기본 사용법
1
userdel [options] username
옵션
옵션 | full name | 설명 |
---|---|---|
-f | –force | 로그인 중이거나 다른 사용자가 사용 중이어도 삭제한다. |
-r | –remove | 홈 디렉터리와 파일 및 메일 스풀을 삭제 같은 이름의 그룹도 삭제한다. |
예시
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
## remove
# ttt user : tu_01 그룹 소속, 홈디렉터리는 /data/ttt
cat /etc/passwd | grep ttt
>> ttt:x:5555:1002::/data/ttt:/bin/bash
cat /etc/group | grep ttt
>> 출력 없음
cat /etc/group | grep tu_01
>> tu_01:x:1002:
# userdel -r
userdel -r ttt
# 삭제 후 확인
cat /etc/passwd | grep ttt
>> 출력 없음
cat /etc/group | grep tu_01
>> tu_01:x:1002: # 사용자명과 그룹명이 달라 생존함
ls -l /data
>> 출력 없음 # 홈디렉터리는 삭제됨
# 남은 그룹 삭제
groupdel tu_01
cat /etc/group | grep tu_01
>> 출력 없음
사용자 계정 삭제시 고려사항
(1) 홈 디렉터리도 삭제할 것인가.
(2) 계정을 삭제하지 말고 잠금 할 것이가.
(3) 삭제될 계정이 소유하는 파일이 있는가.
-파일이 남은 경우, 삭제된 유저의 uid와 동일한 uid를 가지는 신규 사용자가 해당 파일에 대한 권한을 가지는 권한 오류 발생할 수 있음.
1
2
3
4
5
6
7
8
# 삭제될 계정이 소유하는 파일 확인
find / -user <username> -ls
# uid로 파일 찾기
find / -uid UID -ls
# 소유자가 없는 파일 찾기
find / -nouser -ls
5. 사용자 정보 확인 id
명령어 설명
사용자의 uid와 gid 등을 확인한다.
기본 사용법
1
id username
예시
1
2
3
4
5
id tu_01
>> uid=1001(tu_01) gid=1002(tu_01) groups=1002(tu_01)
id tu_02
>> uid=1002(tu_02) gid=1003(tu_02) groups=1003(tu_02)
6. 사용자의 비밀번호 만료 정보 변경 chage
명령어 설명
사용자의 비밀번호 만료에 관한 정보를 변경하는 관리자 명령
기본 사용법
1
chage [options] username
옵션
옵션 | full name | 설명 |
---|---|---|
-l | –list | 계정의 패스워드 에이징 정보 확인 |
-I | –inactive | 비밀번호 만료 후 비활성화 되기 전까지의 날짜 수 지정chage -I <days> <username 과 같이 사용 |
-m | –mindays | 비밀번호 변경 사이 최소 일수 지정chage -m <days> <username> 과 같이 사용 |
-M | –maxdays | 비밀번호 변경 사이 최대 일수 지정chage -M <days> <username> 과 같이 사용 |
-d | –lastday | 마지막으로 비밀번호를 변경한 날짜 지정chage -d <date> <username> 과 같이 사용 |
-E | –expiredate | 계정의 만료 날짜 지정chage -E <date> <username> 과 같이 사용E -1 은 만료일을 사용하지 않는 옵션 |
7. 일시적으로 주그룹을 변경하기 newgrp
명령어 설명
-일시적으로 자신의 주 그룹을 변경하는 명령어
-기본적으로 자신이 속해 있는 그룹(부그룹) 중에서 지정할 수 있음.
-다른 그룹의 비밀번호를 알고 있는 경우, 다른 그룹도 지정할 수 있음.
-단순히 newgrp
명령어만 실행하면 원래 주그룹으로 되돌아감.
기본 사용법
1
2
3
4
5
# 자신의 부그룹 혹은 비밀번호를 알고 있는 그룹 중 하나를 일시적으로 주그룹으로 변경
newgrp <group>
# 원래 주그룹으로 되돌아감
newgrp