본문 바로가기

리눅스 마스터

[리눅스 마스터] 리눅스 사용자(User) 관리 - 1

최적합 리눅스 마스터 1급(성안당 출판)을 참고하였고, CentOs 환경에서 실습하였다.

 

useradd [옵션] [사용자 계정]

옵션 설명
-u 사용자 계정 UID
-g 사용자 계정 GID
-G 사용자 계정의 2차 그룹 GID
-d 사용자 홈 디렉토리 지정
-e 사용자 계정 만료일 지정
-f 사용자 계정 유효일자 지정
-s 로그인 시 사용할 기본 셸(Shell) 지정
-M 사용자 홈 디렉토리를 생성하지 않음
-c 주석

useradd, adduser 명령을 사용하면 사용자 계정을 새로 만들 수 있다.

새로 만들어진 계정은 /etc/passwd 파일에 저장된다. 

 

현재 리눅스에는 있는 계정의 목록들을 'cat /etc/passwd' 명령으로 확인해 보았다.

root부터 chrony까지가 현재 이 리눅스에 있는 계정들이다. 

 

이제 useradd 명령으로 test라는 이름의 사용자를 추가해보겠다.

useradd 명령을 사용하고 다시 /etc/passwd를 확인해보니 맨 아래에 test 계정이 추가된 모습을 볼 수 있다.

 

여기서, /etc/passwd 파일에서 확인할 수 있는 부분이다.

test  :  x  :  1000  :  1000  :  :  /home/test  :  /bin/bash

1) test 2) x 3) 1000 4) 1000   5) /home/test 6) /bin/bash
사용자 계정 패스워드 UID GID 주석 정보 홈 디렉토리 사용하는 Shell

2) x 패스워드는 /etc/shadow 파일에 해쉬로 저장되어 있다.

4) useradd -c 옵션으로 계정 생성 시 설명을 추가할 수 있다.

5) useradd -d 옵션으로 계정 생성 시 설정할 수 있다.

6) useradd -s 옵션으로 계정 생성 시 설정할 수 있다.

 

/etc/shadow 파일을 확인해보면

test  :  !!  :  18135  :  0  :  99999  :  7  :    :    :

내용 의미
1) test 사용자 계정
2) !! 패스워드
3) 18135 1970년 1월 1일 부터 패스워드가 수정된 날짜의 일수
4) 0 패스워드 변경 전 최소 사용기간
5) 99999 패스워드 변경 전 최대 사용기간
6) 7 패스워드 사용 만기일 전에 경고 메시지를 알려주는 일 수
7)  로그인 접속 차단 일 수
8)  예약 필드

2-1) 계정에 패스워드가 존재하는 경우에는 패스워드에 Salt값으로 해쉬 암호화된 해쉬 값이 있다.

2-2) 계정이 잠겨있는 계정이라면 '*'로 되어있다.

2-3) 계정 패스워드가 설정되어 있지 않으면 !!로 되어있다.

3) 계정을 생성하고 패스워드를 바꾸지 않았기 때문에 1970년 1월 1일부터 지금까지의 일 수이다.

4) 패스워드를 변경하고 사용되어야 하는 일 수. 0일이니 언제나 변경 가능하다는 뜻이다. 

5) 패스워드를 변경하고 사용할 수 있는 기간. 99999일이라서 거의 무제한 사용 가능하다.

6) 패스워드를 바꿔야 할 때를 며칠 전부터 알려줄지이다. 7일이니 변경해야 하기 일주일 전부터 알려준다.

 

useradd 명령을 옵션 없이 test 사용자 계정을 만들었다. 그 뒤에 /etc/passwd를 통하여 계정의 정보를 확인하였을 때 UID, GID, 홈 디렉터리, 사용하는 Shell이 같이 설정된 것을 볼 수 있다.

이는 /etc/default/useradd 파일에 default 값이 저장되어 있다.

useradd default file에는

내용 의미
GROUP GID 지정
HOME 홈 디렉토리 지정
INACTIVE

패스워드 사용기간 만료 시 계정 사용 여부

0 : 기능 사용    -1 : 기능 사용하지 않음

EXPIRE 패스워드 만료일자
SHELL 기본 Shell 지정
SKEL 새로운 홈 디렉토리가 만들어 졌을 때 복사되는 초기 환경파일들이 저장되어 있는 디렉토리
CREATE_MAIL_SPOOL 새로운 사용자에게 메일 저장 파일 여부 지정

 

 

/etc/login.defs는 사용자 계정의 설정과 관련된 기본 값을 정의한 파일이다.

본문이 길어서 전체 캡처는 하지 못하였다.

옵션 설명
MAIL_DIR 메일 저장 디렉토리, /var/spool/mail
PASS_MAX_DAYS, PASS_MAX_DAYS 패스워드 변경 최소, 최대 일자
PASS_MIN_LEN 패스워드 최소 길이
PASS_WARN_AGE 패스워드 최대 일자 전에 경고 알려주는 일자
UID_MIN, UID_MAX UID 최소, 최대 숫자
SYS_UID_MIN, SYS_UID_MAX 시스템 계정 UID 최소, 최대 숫자
GID_MIN, GID_MAX GID 최소, 최대 숫자
SYS_GID_MIN, SYS_GID_MAX 시스템 계정 GID 최소, 최대 숫자
CREATE_HOME 홈 디렉토리 생성 여부, YES
UMASK UMASK 값 설정
USERGROUPS_ENAB 사용자 계정 삭제 시 그룹 삭제 여부
ENCRYPT_METHOD 암호화 기법

이 설정을 바꿀 수 있는 명령어가 있다.

 

chage [옵션] [사용자 계정]

옵션 설명
-d 마지막으로 패스워드를 변경한 일자
-E 사용자 계정 종료 일자
-I

지금 날짜로 패스워드 유효기간 종료 이후에 계정 비활성화 일 수

-m 패스워드를 변경할 수 있는 최소 일 수
-M 마지막 변경 이후의 패스워드 유효일 수
-W

패스워드 만료기간 몇 일 전에 안내 메시지를 보내는 경고날짜

-I user 현재 사용자 패스워드 만기정보를 출력

chage 명령을 통해서 test 계정의 만기정보를 출력해 보았다.

 

Last password change: 마지막으로 패스워드가 바뀐 날짜는 패스워드를 바꾼적이 없기 때문에 계정을 생성한 날짜가 된다.