사용자 관리
-
학습 개요
리눅스 시스템에서 관리자 계정과 일반 사용자 계정의 차이를 이해하고 사용자 계정 또는 그룹 계정의 생성과 관리에 사용되는 명령과 파일에 관해 알아보자.
패스워드 에이징의 의미를 학습하고 비밀번호 관리에 사용되는 명령과 파일을 살펴보자. -
학습 목표
- 사용자 계정의 관리에 사용되는 파일을 나열하고 용도를 알아보자
- 사용자 계정을 생성, 삭제, 변경 가능.
- 그룹 계정을 생성, 삭제, 변경 가능.
사용자 계정
사용자 관리
- 사용자 계정이 있어야 시스템을 사용할 수 있음
- 리눅스는 다중 사용자를 지원하는 운영체제
- '사용자명' 또는 '로그인 아이디'
- 사용자 계정은 UID를 가짐
- 관리자 입장에서 사용자 계정 별로 접근 권한을 통제할 수 있음
- 사용자 계정에 따라 부여된 권한이 다름
- 일반 계정은 자신의 홈 디렉토리를 제외하면 제한된 권한을 가짐
- 일반 계정 외에 root 계정 (UID=0) 시스템 계정도 있음
su
- 사용자를 전환시키는 명령
su [-[l]] [username]
su -l jeaha
또는su - jeaha
는 지정된 사용자의 로그인 셸을 시작함- root 사용자가 아니라면 지정된 사용자의 암호를 알아야 실행시킬 수 있음
su -l
과 같이 사용자가 생략되면 root 사용자로 로그인 함- 단순히
su
를 실행하면 로그인 셸이 아니고, 작업 디렉토리도 바뀌지 않음
➜ UNIX git:(master) ✗ su -l
Password:
su: Sorry
➜ UNIX git:(master) ✗
- 1 개의 셸 명령을 root 계정으로 실행하는 명령
su -c 'command'
- root 암호를 알아야 함
- 여러 단어로 되어 있다면 명령 부분을 따옴표로 묶어야 함
[ec2-user@ip-aws ~]$ su -c 'ls -l /root/*'
Password:
su: Authentication failure
sudo
root 또는 다른 사용자가 되어 명령을 실행하기 위한 명령
- 특정 사용자나 그룹별로 세세한 권한을 부여할 수 있음
- 본인의 암호만 필요하며, root 계정의 암호를 요구하지 않음
/etc/sudoers
파일에 누가/어디서/어떤 명령을 수행할 수 있는지 설정되어 있어야 함
sudo [-u username] command
- 현재 셸에서 수행되므로 명령어 부분에 따옴표가 필요 없음
- -u 옵션을 사용하면 root 사용자가 아닌 특정 사용자로 수행함
sudo -l
은 자신에게 sudo를 통해 허용된 명령을 확인할 수 있음
/etc/sudoers
- root 사용자가 visudo를 사용하여 편집함
- 문법 오류를 검사하고 안전하게 편집할 수 있음
- 기본 문법은
user MACHINE=COMMANDS
형태
useradd
사용자 계정을 만드는 관리자 명령
useradd [options] username
useradd -d "jeaha, oh" jeaha
jeaha라는 계정을 만든다- -c 계정의 comment
passwd [username]
명령으로 비밀번호 설정 가능
useradd -D [options]
- 계정을 생성할 때 사용되는 홈 디렉토리, 기본 그룹, 만료일, 기본 셸에 관한 기본 설정 가능
- 다른 옵션을 사용하여 기본 설정을 변경 가능
옵션 | 설명 |
---|---|
-d home_dir | 새로운 계정의 홈 디렉토리를 지정. 기본은 /home/username |
-D [options] | -D만 사용하면 사용자 계정 생성시 사용되는 현재의 환경 설정 값을 보여줌. options로 -b, -e, -g, -s 등을 사용하면 홈 디렉토리의 위치, 만료 날짜, 주 그룹, 기본 셸 등에 관해 변경 가능. |
-e expire_date | 계정의 만료일 -e 2020-12-31 . 기본값은 /etc/default/useradd 파일에 EXPIRE 변수의 값 |
-g group | 계정이 속할 주 그룹을 지정. 그룹은 /etc/group 파일에 이미 존재해야 함. 기본적으로 사용자 계정 및 UID와 같은 값을 가지는 그룹 계정과 GID가 만들어짐 |
-G group_list | 계정이 속한 부 그룹을 지정. 여러 개를 지정하면 콤마로 구분하여 설정 |
-s shell | 사용자 기본 셸을 지정. -s /bin/bash |
-u user_id | 사용자의 UID를 수동으로 설정 |
사용자 계정의 생성 절차
- /etc/login.defs 파일과 /etc/default/useradd 파일을 읽어서 사용자 계전 생성과 관련된 기본값을 확인
- useradd 명령어에서 주어진 옵션을 검사하여 기본값을 대체할 것인지 확인
- /etc/passwd 파일과 /etc/shadow 파일에 새로운 사용자 계정에 해당하는 항목을 생성
- /etc/group 파일에 새로운 그룹에 해당하는 항목을 추가
- /home/ 디렉토리에서 사용자 계정의 홈 디렉토리 (/home/username)을 생성
- /etc/skel/ 디렉토리에 있는 파일을 사용자 계정의 홈 디렉토리에 복사
/etc/passwd
- 사용자 계정에 관한 정보를 가진 텍스트 파일
- 라인 별로 사용자 계정의 정보가 저장됨
- 계정의 생성이나 수정을 위해 직접 수정하는 것은 좋지 않음
- 각 라인은 콜론 : 으로 구분되는 7개 필드를 가짐
사용자계정:암호:UID:GID:설명:홈디렉토리:기본셸
jeaha:x:500:500:Jeaha Oh:/home/jeaha:/bin/bash
/etc/skel
사용자 홈 디렉토리에 복사되는 .bash_profile, .bashrc, .bash_login등의 파일을 가짐
/etc/shadow
사용자 계정의 암호 정보와 '패스워드 에이징' 정보를 가짐
각 라인은 아래와 같은 정보를 가짐
202034-364390:!!:18539:0:99999:7:::
사용자계정:암호화된비밀번호:최종비밀번호변경일:minpa:maxpa:pwp:pip:aed::
- minpa(minimum password age) : 비밀번호 변경 후 바꿀 수 없는 기간
- maxpa(maximum password age) : 비밀번호 변경 후 다시 변경하지 않고 사용할 수 있는 최대 기간
- pwp(password warning period) : 비밀번호 만료 전 경고할 날짜 일수
- pip(password inactivity period) : 비밀번호 만료 후 로그인 가능한 날짜 수
- aed(account expiration date) : 사용자 계정의 만료일. 빈 값은 계정이 만료되지 않는다.
- 예약 필드
chage
- 사용자의 비밀번호 만료에 관한 정보를 변경하는 관리자 명령
chage [option] username
chage -l username
으로 자신의 패스워드 에이징 정보를 확인함
- 옵션
-l days
는 비밀번호 만료 후 비활성화 되기 전까지의 날짜 수 (-1은 사용하지 않음)-m days
와-M days
는 각각 비밀번호의 최소(0은 즉시 수정 가능)/최대 사용 날짜 수(최대 : 99999)-d date
는 비밀번호의 마지막 변경 날짜 수정-E date
는 사용자 계정의 만료일을 지정 (-1은 사용하지 않음)
[ec2-user@ip-aws ~]$ chage -l ec2-user
Last password change : Oct 04, 2020
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
사용자 계정 만들기
사용자 계정의 기본 설정
- 사용자 계정을 생성할 때 필요한 기본값을 정의한 파일이 있음
/etc/login.defs
- 각 라인은 키워드와 값으로 구성됨
- UID_MIN과 UID_MAX는 UID를 자동 할당할 때 유효 범위를 지정
- USERGROUPS_ENAB은 사용자 계정과 같은 이름의 그룹을 자동으로 만들 지를 지정
- 각 라인은 키워드와 값으로 구성됨
[ec2-user@ip-aws ~]$ cat /etc/login.defs
MAIL_DIR /var/spool/mail
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7
UID_MIN 1000
UID_MAX 60000
SYS_UID_MIN 201
SYS_UID_MAX 999
GID_MIN 1000
GID_MAX 60000
SYS_GID_MIN 201
SYS_GID_MAX 999
CREATE_HOME yes
UMASK 077
USERGROUPS_ENAB yes
ENCRYPT_METHOD SHA512
useradd
/etc/default/useradd
파일- GROUP은 사용자 계정의 주 그룹(자동 생성을 안 할때)을 지정
- 홈 디렉토리의 생성 위치와 셸의 종류를 지정
- INACTIVE가 0이면 비밀번호 만료 후 즉시 계정을 비활성화, -1이면 기능을 사용하지 않는 것.
- EXPIRE 값이 없으면 계정의 만료일이 없는것
[ec2-user@ip-aws ~]$ cat /etc/default/useradd
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
사용자 계정 수정
usermod
- 사용자 계정의 정보를 수정하는 관리자 명령
usermod [options] username
- 많은 옵션이 useradd 명령과 유사
usermod -g root jeaha
는 주어진 사용자의 주 그룹을 root로 변경함id username
주어진 사용자의 uid와 gid를 출력
- 옵션
옵션 | 설명 |
---|---|
-d home_dir | 사용자 계정의 홈 디렉토리 변경 |
-m | -d와 함께 사용해야 하며 기존 홈 디렉토리의 내용을 새 디렉토리로 복사함 |
-l login_name | 사용자 계정의 이름 변경 |
-u user_id | 사용자 계정의 UID를 변경 |
-L | 사용자 계정을 잠금. 실제 /etc/shadow 파일에서 비밀번호 앞에 !를 붙임 |
-U | 사용자 계정의 잠금 해제 |
userdel
- 사용자 계정을 삭제하는 관리자 명령
- /etc/passwd 파일에서 해당 라인 삭제
user del [options] username
- 옵션
- -r 홈디렉토리와 파일을 함께 삭제, 메일 스풀도 삭제.
- -f 로그인 중이거나 다른 사용자가 사용 중이어도 삭제, 같은 이름의 그룹도 삭제.
사용자 계정 삭제 시 고려사항
- 홈 디렉토리도 삭제할 것인가
- 계정을 삭제하지 않고 잠금 할 것인가
- 삭제될 계정이 소유하는 파일이 더 있는가
- 삭제 전에
find / -user username -ls
로 확인해야 함 - 삭제 후라면
find / -uid UID -ls
,find / -nouser -ls
로 확인
- 삭제 전에
그룹 계정과 관리
그룹 계정
사용자 계정들을 모아서 하나의 집합을 이루는 개념
- 그룹의 구성원은 특정 파일(또는 디렉토리)에 대해 그룹에 부여된 권한을 가짐
- 일반 사용자는 bin, mail, sys 등의 '시스템 정의 그룹'에는 포함될 수 없음
- 사용자 계정을 만들 때 주 그룹(기본 그룹)이 지정됨
- 기본적으로 사용자 계정과 같은 이름으로 그룹 계정이 만들어짐
- 사용자 계정은 0개 이상의 부 그룹에 속할 수 있음
groupadd
- 그룹을 만드는 관리자 명령
- 그룹도 계정 이름과 GID를 가짐
groupadd [options] group
- 옵션
-g gid
는 수동으로 GID를 지정-r
시스템 그룹 계정 생성-o
-g
를 함께 사용시 기존 그룹의 GID를 사용하는 것
/etc/group
- 그룹 계정의 정보를 가진 텍스트 파일
- 라인마다 그룹 계정의 정보가 저장됨
- 각 라인은 : 으로 구분되는 4개 핑드를 가짐
그룹계정:암호:GID:구성원_리스트
devs:x:1000:jeaha,jeje
- 암호화된 비밀번호는 /etc/gshadow에 저장됨
- 사용자 계정을 부 그룹에 추가하는 방법
usermod -G group -a username
- 사용자가 자신의 그룹을 확인하는 방법
id username
groups username
[ec2-user@ip-aws ~]$ id ec2-user
uid=1000(ec2-user) gid=1000(ec2-user) groups=1000(ec2-user),4(adm),10(wheel),190(systemd-journal)
[ec2-user@ip-aws ~]$ groups ec2-user
ec2-user : ec2-user adm wheel systemd-journal
사용자 계정과 그룹 및 파일의 접근권한
- 사용자가 파일이나 디렉토리를 생성하면 그것의 소유 그룹은 사용자의 주 그룹으로 지정됨
- 사용자는 0개 이상의 부 그룹에 속할 수 있음
- 사용자 스스로 다른 그룹의 구성원이 되게 할 수 없음
- 관리자라면
gpasswd -a user group
으로 구성원 추가 가능
- 관리자라면
- newgrp group을 실행하면 일시적으로 자신의 주 그룹 변경 가능
- 자신이 속해 있는 그룹 중에서 지정해야 함
- 그룹 계정의 비밀번호를 알고 있다면 다른 그룹으로도 지정 가능
- 단순히
newgrp
를 실행하면 원래 주 그룹으로 돌아감
gpasswd
- 그룹의 관리를 위한 명령
- 그룹의 관리자가 사용
- gpasswd [options] group
- 옵션을 사용하지 않으면 그룹의 비밀번호를 설정
- 옵션을 사용하면 그룹의 구성원 변경
- 옵션
-a user
는 구성원 추가,-A users
는 그룹의 관리자를 지정-d user
는 구성원 삭제,-M users
는 구성원 설정-r
비밀번호 삭제
groupmod
- 기존 그룹의 정보를 수정하기 위한 명령
- 그룹의 관리자가 사용함
- group [options] group
-g gid
를 사용하여 GID를,-n name
은 그룹 이름을 변경함
groupdel
- 그룹을 삭제하는 관리자 명령
- 그룹 계정 관련 파일에서 해당 라인을 삭제함
- 사용자 계정의 주 그룹으로 되어있는 경우 삭제 불가능
- groupdel group
사용자 관리를 위한 GUI
사용자 관리 도구
GUI를 지원 하지만 CLI방식에 비해 제한이 있다.
- 시스템 > 관리 > 사용자 및 그룹
- root 계정의 비밀번호 입력
사용자 추가
나그룹 추가
로 계정을 추가할 수 있음- 선택된 계정에서
등록정보
버튼으로 정보를 수정할 수 있음
'OS > Linux' 카테고리의 다른 글
[Linux] 파일 시스템 관리 (0) | 2020.10.25 |
---|---|
[Linux] vi 사용 텍스트 편집 (0) | 2020.10.25 |
[Linux] 시작과 종료 (0) | 2020.10.24 |
[Linux] 파일과 디렉토리 (0) | 2020.10.24 |
[Linux] Shell 사용하기 (0) | 2020.10.16 |