Passwd 파일에서 사용자 계정만 확인하기
~] # cat /etc/passwd | awk -F: '{if($3>=1000 && $3<=60000)print $0}'
doly:x:1000:1000:doly:/home/doly:/bin/bash
wyjung:x:1001:1001:정우영:/home/wyjung:/bin/bash

cat 명령어를 사용하여 /etc/passwd 파일을 표준 출력(stdout)으로 출력하고 파이프(|)를 통해 awk(라인 단위 패턴 스캐닝 및 처리 언어) 명령의 표준 입력(stdin)으로 보낸다. -F 옵션을 사용하여 구분자를 “:”으로 지정한다. “:”으로 구분했을 때 3번째 항목($3)이 1000보다 크고 60000보다 적을 경우 라인의 모든내용($0)을 출력하라는 것이다. 
CentOS7 부터는 기본적으로 UID를 1000에서 60000까지 사용하도록 /etc/login.defs에 설정되어 있다



사용자 추가시 홈 디렉토리에 생성되는 파일
사용자 추가시 생성되는 홈디렉토리에는 다음과 같은 파일들이 생성되어 있을 것이다. 다음은 wyjung 사용자의 홈디렉토리를 확인해 본 것이다.


~] # ls -Al /home/wyjung/
합계 12
-rw-r--r--. 1 wyjung wyjung  18  6월 10 13:31 .bash_logout
-rw-r--r--. 1 wyjung wyjung 193  6월 10 13:31 .bash_profile
-rw-r--r--. 1 wyjung wyjung 231  6월 10 13:31 .bashrc
...
ls 명령어에 -Al옵션을 사용하여 wyjung 사용자의 홈디렉토리(/home/wyjung/)의 파일 및 디렉토리를 확인하였다. 다음 파일들이 있다.
.bash_logout : 로그아웃 할 때 실행되는 파일이다.
.bash_profile : 로그인시 실행되는 파일이다. 
.bashrc : .bash_profile에 의해 실행되며 주로 alias나 함수등을 설정한다.

위 3개의 파일은 사용자를 추가할 때마다 생성된다. 시스템에 따라 위 3개의 파일보다 더 많은 파일, 디렉토리가 생성될 수 도 있다. 이는 사용자 생성시 기본적으로 복사되는 파일 및 디렉토리이며, /etc/skel/ 디렉토리에 파일 및 디렉토리가 사용된다. 

~] # ls -Al /etc/skel/
합계 12
-rw-r--r--. 1 root root  18  6월 10 13:31 .bash_logout
-rw-r--r--. 1 root root 193  6월 10 13:31 .bash_profile
-rw-r--r--. 1 root root 231  6월 10 13:31 .bashrc
...

위 3개 또는 그 이상의 파일 및 디렉토리를 열어보면 사용자 홈디렉토리에 존재하는 파일과 내용일 동일한 것을 확인할 수 있다.
위 3개의 파일을 수정하면 사용자 생성시 수정된 파일을 복사해 사용하게 될것이다.


계정 정보 확인
~] # chage -l wyjung
마지막으로 암호를 바꾼 날                                       : 7월 16, 2014
암호 만료                                       :안함
암호가 비활성화 기간                                    :안함
계정 만료                                               :안함
...
chage 명령어에 -l 옵션을 사용하여 계정 만료일 등을 알 수 있다.

- 계정이 기간 만기되도록 함(E)
~] # usermod wyjung -e 2014-09-10
위와 같이 설정하면 wyjung 계정은 2014년 9월 10일에 만료되도록 하는 것이다.
- 계정을 잠금 / 해제
~] # passwd -l wyjung
wyjung 사용자의 비밀 번호 잠금
passwd: 성공
~] # passwd -u wyjung
wyjung 사용자의 비밀 번호 잠금 해제 중
passwd: 성공

위와 같이 passwd 명령어를 사용하여 -l 옵션으로 wyjung 사용자를 로그인 못하도록 잠금거나 -u 옵션을 사용하여 해제 할 수 있다.


[비밀번호 보안 정책]
많은 보안 권고사항을 보면 비밀번호는 적어도 3개월에 한번찍 변경하게 하고 있다. 여러 보안 점검에서 사용자 비밀번호를 3개월 마다 변경하게 강제하고 있고 모든 사용자에게 설정해야 한다. 앞에서 설명한 것은 사용자들 마다 비밀번호 강제 변경주기를 설정하였지만 다음과 같이 설정하여 기본적으로 적용할 수 있다.

/etc/login.defs 파일을 열어 다음과 같이 수정한다.

PASS_MAX_DAYS   90
PASS_MIN_DAYS   0
PASS_MIN_LEN    8
PASS_WARN_AGE   7

위 설정에 대한 의미는 다음과 같다.
PASS_MAX_DAYS : 암호를 변경하지 않고 사용할 수 있는 유효기간   기본 값은 99999일이며, 권장은 3개월(약 90일)이다. 
PASS_MIN_DAYS   : 암호를 변경할 수 있는 최소 기간이며   암호는 자주 변경해도 무관하니 제한이 없는 기본값 0으로 둔다.
PASS_MIN_LEN   : 암호 최소 길이이다.   암호 최소 길이는 기본 5자 이상이며, 권장은 8자 이상이다.
PASS_WARN_AGE   : 암호 유효기간이 끝나기 전에 경고 메시지를 보여줄  날수를 설정한다. 기본 7일이며 기본값을 유지한다.

그 밖에 /etc/login.defs 에는 메일관련(메일큐 디렉토리, 메일박스 디렉토리, 메일파일)설정과 사용자 UID범위, 시스템 사용자 UID범위, 그룹 GID범위, 시스템 그룹 GID범위, 사용자 삭제시 실행할 사용자 프로그램 지정, 사용자 생성시 사용자 홈디렉토리 생성 유무 및 UMASK등을 설정할 수 있다. 사용자 삭제시 사용자 그룹의 멤버가 없다면 그룹까지 삭제할지 유무도 여기서 설정한다. /etc/login.defs 파일을 열어보면 위 기능에 대해 상세히 설명되어 있다.

그룹(G) 탭을 확인해 보자.
시스템에 등록된 전체 그룹리스트가 나타나고 원하는 그룹을 선택하여 소속시킬 수 있다. 기본 그룹을 변경할 수 도 있다. 
위 설정을 명령어를 이용한다면 다음과 같이할 수 있다.

사용자가 속한 그룹 확인
다음 명령어로 특정 사용자가 속한 그룹을 확인할 수 있다.

~] # groups wyjung
wyjung : wyjung superuser

groups 명령어로 사용자가 속한 그룹을 확인하였다.

사용자가 속한 그룹 추가
다음 명령어로 사용자가 속한 그룹을 추가할 수 있다.

~] # usermod -a -G doly wyjung
~] # groups wyjung
wyjung : wyjung doly superuser

usermod의 -G 옵션을 사용하여 소속 그룹을 설정하였다. 만약 -G 옵션만 준다면 소속된 그룹이 “doly"로 변경될 것이다. -a (추가) 옵션을 주어 기존 그룹은 유지하면서 "doly"그룹에 추가하도록 한 것이다.


사용자가 속한 그룹 제거
사용자가 속한 그룹에서 특정 그룹만 제거하는 것은 아무리 찾아보아도 옵션을 제공하지 않았다. 다음과 같은 방법으로 제거할 수 있다.


~] # groups wyjung
wyjung : wyjung doly superuser wheel
~] # usermod -G superuser,wheel wyjung
~] # groups wyjung
wyjung : wyjung superuser wheel

위 예는 groups 명령어를 이용하여 소속된 그룹을 확인하였고 usermod의 -G옵션을 이용하여 사용자의 소속그룹을 재설정한다. groups명령으로 확인한 소속그룹중 제거하고자 하는 그룹만을 빼고 “,”로 구분하여 모두 입력한다. 이러한 방법으로 소속 그룹을 제거할 수 밖에 없다. 

사용자의 기본(primary) 그룹 변경
사용자의 기본그룹은 다음과 같이 변경할 수 있다.

~] # groups wyjung
wyjung : wyjung superuser
 ~] # usermod -g doly wyjung
 ~] # groups wyjung
wyjung : doly superuser

groups명령어 입력시 처음에 보여주는 것이 기본 그룹이다. 기본그룹을 바꾸기 위해 usermod의 -g 옵션을 사용하여 "doly"로 변경하였다. 변경된 기본그룹을 groups 명령어로 확인하고 있다.

 

+ Recent posts