Linux 8 . skel과 default/useradd 그리고 login.defs

2024. 2. 1. 16:06Linux/CentOS7

/etc/skel

사용자를 생성할 경우 기본적으로

사용자의 홈 디렉토리에

복사되는 파일과 디렉토리

/etc/skel 과 /home/a

두 디렉토리는 같은 형태를 띄고있다

(history 디렉토리는 a사용자가 사용한 명령어의 기록)

 

 

만약

skel 디렉토리 안에

새로운 파일이 추가되면

어떻게 될까?

skel 안에

work 디렉토리와

ojt 파일을 생성한 뒤에

유저 aa를 만들었다,

그러자 aa의 홈 디렉토리에도 

똑같은 파일,디렉토리가 생성됐다.

 

 

 

/etc/default/useradd

기본그룹, 기본로그인쉘, 유예기간,

패스워드 만료일, /etc/skel 위치 지정,

메일사서함 생성여부

즉, 사용자의 기본이 되는 파일이다.

GROUP=100 < 기본그룹

(그룹 미설정시 지정)

 

HOME=/home <기본 홈 디렉토리


INACTIVE=-1 < 기본 유예기간

(활성화 하려면 암호최대사용기간이 설정되야함)


EXPIRE= <기본 만료기간


SHELL=/bin/bash <기본 쉘


SKEL=/etc/skel <스켈 위치


CREATE_MAIL_SPOOL=yes <메일 디렉토리 생성 여부

 

즉 지금까지 만든 계정은 모두 

 etc/default/useradd 에 설정된 파일을

기반으로 생성 된 것이다.

 

 

 

각 옵션 변경해보기

계정 생성시

그룹 생성을 하지 않자

a의 그룹이 100으로 할당됐다.

/etc/group에서 100번을 확인해보면

users 그룹이 100번인 것을 볼 수 있다.

 

vi 편집기로 useradd의 그룹값을 10으로 바꿨다.

바꾼 뒤 계정생성시 기본 그룹도 

똑같이 바뀌는 것을 볼  수 있다.

 

HOME 경로를 바꾸면 생성시 

홈디렉토리가 바뀐다

SHELL을 바꾸자 생성시

sh로 생성이 되는 것을 볼 수 있다!

SKEL 경로를 변경후 

그 경로에 임의의 파일을 만들어준 뒤

계정을 생성하니

똑같이 생성되었다.

CREATE _MAIL도 no 로 바꿔준 뒤에

생성 후 mail 디렉토리를 살펴보면

f의 디렉토리만 생성되지 않은 것을

볼 수 있다.

 

INACTIVE를 5로 변경 후에 

암호만료 정보를 확인해도 별다른 변화가 없다.

이유는

암호유예기간은

암호의 만료일이 지정되야 하기 때문이다

암호의 만료일은 최대 사용일이 지정되야한다.

 

이렇게 도미노처럼 설정을 해줘야 INACTIVE가 5일인 것을 볼 수 있을 것이다.

최대 사용일을 지정해주자

비활성화 기간(유예기간) 까지 5일로 잘 설정된 것을 볼 수 있다.

EXPIRE를 24/12/31 로 설정해서

계정 생성시에도 반영이 됐지만

역시 암호의 최대 사용일이 지정되지 않아

아직은 불완전한 형태인 것을 볼 수 있다.

최대 사용일 30일을 주자

모두 설정됐다.

 

이제 우리가 login.defs만 설정해 준다면

계정 생성일 일괄적으로 자동화 시킬 수 있을 것이다!

 

/etc/login.defs

메일 사서함 위치, 최대 사용일, 최소사용일,경고 메세지  출력일, 패스워드길이,

UID, GID의 최소값과 범위, 홈디렉토리 생성여부, 기본그룹여부 지정, 패스워드 암호화 방식

 

하나씩 값을 변경하며 확인해보자

MAIL_DIR 경로를 변경하자

/mail에 b 계정의 메일 디렉토리가

생성된 것을 볼 수 있다

 

 

 login.defs 와 useradd 파일을 수정 해준뒤

계정을 생성해보면

a 계정의 암호 만료 정보가

사전설정으로 생성 된 것을 볼 수 있다!

 

33번,42번 행을 확인해보면

UID,GID 값이 왜 1000번부터 생성되는지 알 수 있다.

UID,GID 최소값을 10000번으로 바꿔주자

SYS_UID,GID도 1999번으로 바꿔주자

a 계정이 이미 1000번으로 만들어져 있는데도

1001번이 아닌 10000번으로 생성된 것을 볼 수 있다.

 

 

useradd -r c 명령어로 시스템 계정 c도 만들어보자

시스템c 계정은 홈디렉토리가 존재한다고 표시 되는데

실제 디렉토리는 존재하지 않고

존재하지 않으니 로그인도 불가능하다.

 

시스템 계정은 

시스템 운영시 필요한 계정이며, 로그인은 불가능하다

 

 

 

 

60번째 행의 CREATE_HOME 을 no로 바꾸면

 

passwd에서는 분명 홈 디렉토리가 존재한다고 나오지만

실제 디렉토리엔 존재하지 않는다.

 

68번재 행의 USERGROUP_ENAB 을 no로 변경해보자

이것은 좀전에 우리가 사용했던 useradd -N a 에서

-N 옵션에 해당하는 기능이다.

즉 유저 그룹을 생성하지 않는 것이다.

 

또한 71번째 행의 SHA512는 우리가 전 시간에 확인했던

passwd 에서 암호칼럼이 굉장히 긴 문자로 암호화 됐었던 것이 기억날 것이다.

그 암호화가 sha512로 생성된 것이다!

 

확인해보면 f계정은 

그룹이 생성 되지 않고

/etc/default/useradd/에 설정된

그룹으로 편입된 것을 확인할 수 있다. (-N 옵션과 똑같다)

 

 

이렇게 만든 계정들을 지울때는 반드시 에러 문구가 출력될 것이다.

왜냐하면 우린 mail, home등의 디렉토리를 생성하지 않았기 때문에

자동삭제 기능이 그 디렉토리를 못찾아서 그렇다.

 

 

 

이처럼 etc 하위의 파일들을 수정하여

계정관리를 용이하게 할 수 있다.

지금까지

보안의 첫번째인 계정 관리에 대해서 알아보았다.

 

'Linux > CentOS7' 카테고리의 다른 글

Linux 10 . LVM  (0) 2024.02.05
Linux 9 . Storage 관리  (0) 2024.02.02
Linux 7 . shodow 분석  (0) 2024.01.31
Linux 6 . 사용자와 그룹관리  (0) 2024.01.31
Linux 5 . 메타데이터 분석 및 변경  (0) 2024.01.31