본문 바로가기
IT Security/LINUX Basic

9. Linux - 로컬 계정 생성 시, 설정 관리하기(login.defs 파일)

by Rosmary 2019. 12. 1.
728x90
반응형

지난 포스팅에서, 리눅스 내에 존재하는 계정에 대한 정보와, 접속한 계정이 가지는 정보를 확인하는 방법을 알아보았다. 리눅스에서 새로운 계정을 생성하면서, 각 계정의 UID나 GID는 물론, 비밀번호의 최소/최대 사용일과 같은 민감한 정보들을 설정할 수 있는 파일에 대해서도 알아보았다. 

 

 

새로운 계정을 생성한 경우, UID와 GID 값은500번부터 부여가 되는데(CentOS7은 1000번부터), 관리상의 이유로, 새로 만들어지는 계정을 2000번의 UID/GID부터 부여하고자 한다면, 새 계정 생성 후, 매번 passwd 파일에 들어가 해당 계정의 UID/GID 값을 변경해주어야 하는 번거로움이 있다. 

 

비밀번호도 마찬가지인데, 리눅스에서 생성된 계정 비밀번호는 최소/최대 사용일이 기본값으로 0일 / 99999일로 설정되어 있기 때문에, 관리 차원에서 새로 생성된 계정의 비밀번호 관련 설정을 진행하기 위해 shadow 파일을 들락거려야한다는 번거로움이 있다. 

 

물론, useradd 명령어에서 옵션을 사용하여 해당 작업을 간편하게 진행할 수 있긴 하지만, 건드려야 하는 설정이 증가한다면, 

 

passwd와 shadow에서 생성된 새 계정의 정보는 설정한대로 나타나는 것을 볼 수 있다.

이런식으로, 옵션으로 떡칠되어 작성해야 하는 명령어의 길이가 증가하게 된다. 만약 생성해야 하는 계정의 수가 무수히 많다면... 위의 방식을 사용할 경우, 필연적으로 시간을 많이 잡아먹을 수 밖에 없다. 그렇다면, 리눅스에서 계정 생성 시, 각 설정에 대한 기본값을 변경할 수 있는 폴더가 존재하지 않을까?? 분명 새 계정 생성 시에, 리눅스는 그 파일을 참조하여 계정을 만들테니 말이다. 

 

이번 포스팅에서는, 새 계정 설정에 대한 기본값을 설정할 수 있는 파일인 login.defs에 대해 알아보려고 한다.

 

 

1. /etc/login.defs 파일

 

login.defs 파일은 이름에서도 그 기능을 충분히 유추할 수 있다. login(로그인과 관련된).defs(정의 - definitions) 라고 보면 되는데, 앞서 설명했듯이, 새 계정 생성 시 설정에 부여하는 기본값을 지정하는 폴더다. 

 

파일 소유주는 root이며, 소유주는 해당 파일을 읽고(r) 쓰는 것이(w)가능하다.

 

기본적으로 root 계정이 소유하는 파일이며, root를 제외한 나머지 계정은 이 파일을 수정하는 것이 불가능하다. 따라서 login.defs 파일을 수정하기 위해서는 root 계정으로 작업을 진행하거나, 현재 작업 계정을 sudoers 파일에 추가하여 root 권한을 주는 방법을 사용해야한다. sudoers 파일에 대해서는 아직 포스팅 한 것이 없으니, root 계정을 사용하여 vi 편집기로 이 파일을 열어보자.(모든 계정이 이 파일을 읽는 것은 가능하다)

 

 

***  파일을 열면, 필자처럼 색으로 구분된 출력물이 보일수도 있고, 그렇지 않을 수도 있다. 사용자가 수정할 수 있는 권한이 있냐 없냐에 따라 색이 나타날 수도 있고, 아닐 수도 있다.(필자는 수정 권한이 없는 계정으로 vi를 실행했기에 색이 나타나는 것이다. root로 vi 편집기를 다시 실행하면, 색 구분이 없어진다)

 

파일 내용 중, 맨 앞에 샵(#)이 없는 줄은 유심히 살펴보자. 아마 passwd 파일과 shadow 파일에서 볼 수 있는 필드들과 필드값이 나란히 작성되어 있는 것을 볼 수 있을 것이다.

 

샾(#)으로 작성된 부분은, 필드와 필드값에 대해 부연설명을 하는 주석이다. 따라서, 여러분들이 설정 내용 중 무엇을 변경해야할 지 감이 오지 않는다면, 주석을 읽는 것이 상당히 도움이 된다. 이 주석은, login.defs 내의 필드가 담당하는 기능과, 사용법에 대해 알려준다.

 

파일 내에 내용이 많아서 처음에는 약간 복잡하다는 느낌이 있을 수 있다. 하지만, 대부분이 주석처리되어 있으며, 실제 설정 가능한 값이 그렇게 많지 않기에 생각보다 다루기 단순한 파일이다. 하나씩 살펴보자.

 

 

(1) 메일  디렉토리 설정

 

리눅스에서 모든 계정은 각자 사용할 수 있는 메일 계정을 가지고 있다. 하나의 컴퓨터 내에서 특정 계정이 다른 계정에게 메일을 보내는 것은 물론, 네트워크 내의 다른 컴퓨터 안에 존재하는 특정 계정에게 메일을 보내는 것도 가능하다. 다른 계정으로부터 수신한 메일은 각 계정의 수신함에 보관이 되는데, 메일 디렉토리 설정은 이 보관폴더의 경로를 지정하는 작업이라고 보면 된다. 기본값으로 /var/spool/mail로 지정되어 있다. 

 

만약, 다른 경로를 지정하고자 한다면, 사전에 해당 폴더가 미리 만들어져 있어야 한다. 가령, 필자가 메일을 편하게 볼 수 있도록 메일 디렉토리 경로를 /home/mail로 지정했다면, home 디렉토리 밑에 mail 디렉토리가 존재하고 있어야 한다. 

 

 

메일과 관련된 또다른 설정값으로 MAIL_FILE이 있는데, 이 필드를 활성화시키고 싶다면, MAIL_FILE 앞의 샾(#)을 제거하면 된다. 기본값으로 .mail을 사용하기에 일반적으로 샾을 제거하지는 않는다.

 

 

(2)  shadow파일 필드값 설정

 

 

메일 관련 설정 아래로, /etc/shadow의 필드에서 볼 수 있었던 설정이 연달아 나타난다. 계정 비밀번호의 최소/최대 사용일, 최소 길이는 물론, 만기 몇 일 전에 사용자에게 공지를 할 지 설정하는 란이 보인다. /etc/shadow 내에서 보았던 모든 필드의 기본값과 동일하다. 이 값을 수정한 뒤, 새 계정을 만들면, 새 계정은 이전의 계정과 다른 기본값으로 필드를 채우게 된다.

 

 

user6 계정에 패스워드 설정 시, 10 자리 이하의 패스워드를 입력하면, 너무 짧은 패스워드라는 경고문구가 나타날 것이다. root 계정으로 패스워드를 부여하는 경우라면, 10 자리 이하로 설정하더라도 문제없이 적용되지만, 그 외의 계정이 10자리 이하의 패스워드로 변경하는 경우, 변경이 이루어지지 않는다. 

 

 

 

(3) UID/GID 초기값 설정

 

 

paswd 파일의 필드로 설정된 UID와 GID 역시, 이 파일에서 기본값 변경이 가능하다. CentOS7의 경우, 이들의 기본값이 모두 1000번부터 시작하기에, 새 계정을 만들면 UID와 GID 값이 1000번부터 순차적으로 부여되는 것이다. UID와 GID값의 MAX도 설정할 수 있다.

 

 

(4) 기타 나머지 설정

 

 

나머지 설정 역시 크게 어려운 내용은 없다. CREATE_HOME은 계정 생성 시, 홈 디렉토리에 각 계정마다 부여하는 폴더를 만들어 줄 것인지 안 만들어 줄 것인지를 설정하는 필드다. no로 설정된 경우, 홈 디렉토리에 계정명이 부여된 폴더가 만들어지지 않는다. 

 

UMASK는 나중에 파일 권한에 대해 설명하면서 따로 포스팅할 내용이다.  077로 부여되는 경우, 만들어지는 홈 디렉토리는 소유주인 계정 자신을 제외한 나머지 계정이 해당 파일을 읽거나 쓰거나 실행하는 것이 불가능해진다. 파일 권한에 대한 기본적인 이해가 필수이기 때문에, 이 부분은 추후 따로 포스팅을 진행하려 한다.

 

USERGROUPS_ENAB은 해당 계정이 가지는 group 내에 다른 계정이 존재하지 않는다면, 자동으로 해당 계정이 가지는 group을 삭제한다는 말이다. 이 부분은 추후에 포스팅할 group 관리와 어느정도 연관이 있다. 

 

마지막으로 ENCRYPT_METHOD는 계정 비밀번호 암호화 방식을 무엇으로 할 것이냐를 묻는 것이다. CentOS는 기본적으로 SHA512라는 암호화 방식을 사용한다. 

 


 login.defs 파일은 수정해야 할 필드 내용이 많지가 않아, 초보자들도 익숙해진다면 쉽게 사용할 수 있는 설정파일이다. 그러나 사용 시, 반드시 root 계정을 사용하거나, root 권한에 준하는 권한을 가지는 계정으로 sudo를 사용해야 하며, 그렇지 않은 경우, 해당 파일의 설정은 변동되지 않음을 기억해야 한다. 

 

 

FIN.

반응형

댓글