본문 바로가기
프로그래밍/LINUX

[LINUX 11일차] CentOS 싱글모드 / 패스워드 관리( chage, 사용자 설정 정보 변경) / 기본정책( /etc/login.defs )

by B T Y 2017. 3. 24.
반응형

CentOS 싱글모드 / 패스워드 관리( chage, 사용자 설정 정보 변경) / 기본정책( /etc/login.defs )에 대해서 정리한다.




※ 싱글모드( single mode )



- 해당 싱글모드 내용은 CentOS 7버전에 대한 내용이다.

( 버전이 다르다면 방법 또한 다르다 )


- CentOS 7버전부터는 복구모드( rescue mode ) 또는 비상모드( emergency mode )라고도 부른다.

- root 패스워드를 잃어버렸을때 유용하게 쓰인다.



1. selinux=disabled 일때 사용하는 패스워드 변경 방법

( selinux=enforcing이면 이 방법은 적용되지 않는다 )


1). CentOS 부팅을 하게되면 bootloader(GRUB2) 화면이 나오는데 

이때 e키를 눌러준다.




2). 화면이 나오면 방향키를 이용해 맨 밑으로 내리면 아래와 같은 화면이 나오고 

ro rw로 수정하고 rhgbquiet를 init=/bin/bash로 수정 해준 후에 

ctrl + x 키를 눌러준다.




3). 그러면 아래와 같이 명령 프롬프트가 뜨게 되고 깨짐을 방지하기 위해서

export LANG=C 를 입력해주고 passwd 명령어로 root의 비밀번호를 바꾼다.

( root의 비밀번호를 바꾸기 때문에 passwd만 입력 해주면 된다 )




4). 재부팅을 위해서 touch ./autorelabel 을 입력하고 

exec /sbin/init 을 입력 해주면 재부팅이 된다.


로그인이 되지 않는다면 오타가 있거나 selinux=enforcing 되있을 확률이 크다.




2. selinux=enforcing 일때 사용하는 패스워드 변경 방법


1). 위 방법과 동일하게 CentOS를 부팅하게 되면 나오는 bootloader(GRUB2) 화면에서 

e 키를 눌러서 화면을 바꾼다.


2). selinux=disabled 일때는 ro와 rhgb quiet의 내용을 수정 했지만 

여기서는 ro만 rw init=/sysroot/bin/sh로 수정 해주고 ctrl + x 를 누른다.




3). 패스워드 변경을 위해서 chroot /sysroot를 입력하고 

여기서는 root 패스워드를 변경하기 위해서 passwd root를 입력한다.

( 화면 깨짐을 방지하려면 여기서도 export LANG=C를 입력 해주면 된다 )



4). touch ./autorelabel을 입력하고 exit 입력 해준다.

그리고나서 reboot 명령어를 이용해서 재부팅 해준다.

( reboot 명령어가 되지 않는다면 직접 vmware를 restart 시켜준다 )



5). 재부팅이 된 후에 바뀐 root 패스워드로 로그인하면 정상적으로 로그인이 

되는걸 확인 할 수 있다.



* selinux 관련된 설정은 /etc/sysconfig/selinux를 보면 알 수 있다.



( vi 명령어를 통해서 /etc/sysconfig/selinux 안에 내용을 살펴봤다 )





※ 패스워드 관리



1. 패스워드 설정 정보 변경 : chage <option> <user_name>


-l <user_name>    패스워드 설정 정보 확인



( chage -l을 이용해서 linux01 사용자의 패스워드 설정 정보를 확인 했는데 

/etc/shadow에서 내용을 확인 할때보다 더 보기 좋게 나온걸 알 수 있다 )



-m <number> <user_name>    패스워드 변경 최소일을 변경

-M <number> <user_name>    패스워드 변경 최대일을 변경



( chage -M을 이용해서 linux01 사용자의 패스워드 변경 최대일을 변경 해봤다 )



-W <number> <user_name>    패스워드 변경 경고일을 변경



( chage -W 를 이용해서 linux01 사용자의 패스워드 변경 경고일을 변경하고 

chage -l linux01을 이용해서 변경 내용을 확인 해봤다 )



-I <number> <user_name>    비활성화 기간 변경( inactive )



( 비활성화 기간을 5일로 변경 했더니 패스워드 만료일부터 5일이 적용된걸 확인 할 수 있다 )



-E <number> <user_name>    계정만료 일자 변경 ( expiredate )



( chage -E를 이용해서 linux01 사용자의 계정만료 일자를 변경하고 그 내용을 확인 해봤고 

변경을 할때는 위에 그림처럼 1970년 1월 1일을 기준으로 해서 일수를 이용해도 되고 

2017-11-11 같이 날짜를 직접 입력 해줘도 된다 )



* 패스워드 비활성화 기간과 계정만료는 chage, useradd, usermod 명령어에서 변경 할 수 있다.

* /etc/default/useradd를 보면 비활성화 기간, 계정만료일자의 설정 기본값이 있다.



( vi /etc/default/useradd를 통해서 비활성화 기간, 계정만료일자가 사용하지 않는걸로 되있는걸 확인 할 수 있다 )




2. 사용자 설정 정보 변경


- useradd <option> <number> <user_name>

- usermod <option> <number> <user_name>


-f    비활성화 기간 설정(변경)

#>usermod -f 10 linux01


-e    계정만료일자 설정(변경)

#>usermod -e 17300 linux01

#>usermod -e 2017-11-11 linux01


* useradd와 usermod에서 똑같은 옵션을 사용한다.




3. 기본 정책


- /etc/login.defs




( vi /etc/login.defs를 입력하면 위와 같은 내용을 확인 할 수 있다 )



* /etc/login.defs의 내용은 주석(#)을 제외하고 메일, 패스워드, 사용자 UID, SYS_UID, GID, SYS_GID, 

사용자 홈 디렉터리 생성 여부, 사용자 홈 디렉터리 권한 관련 UMASK, 사용자 삭제시 그룹 삭제 여부에 

관한 기본 정책 내용이 들어있다.





* /etc/shadow의 내용을 보면 패스워드 앞에 $6$이라고 표시 되있는걸 볼 수 있는데 

이 부분을 보면 패스워드를 SHA-512 해쉬함수를 통해 암호화 했다는걸 알 수 있다.


* 해쉬함수가 고정된 출력값을 출력하기 때문에 발생하는 보안에 취약한 부분 때문에 

패스워드를 암호화 할때는 해당 패스워드에 랜덤값을 같이 집어넣어 해쉬함수를 돌린다.

( $6$ 뒤쪽에 보면 FKzd...$부분이 해쉬함수에 들어가는 랜덤값이다 )



* VMWare 네트워크 타입 - Host-only, Bridged, NAT

( 가상환경에서는 보통 이 3개의 타입을 제공한다 )

반응형

댓글