root 계정은 시스템에서 어떤 일도 할 수 있는 계정이기 때문에 작업 중 사고가 발생할 가능성이 많습니다.

가급적 root 계정은 시스템 설정 변경, 패키지 설치 등 꼭 필요할 때만 사용해야 합니다.

따라서 평소에는 일반 계정으로 작업을 하고, su 명령어를 통해 root 계정으로 전환하는 방식으로 사용하는 것이 좋습니다.


이 글에서는 유저를 추가 할 때 참조 하는 3가지 파일( /etc/default/useradd, /etc/login.defs, /etc/skel )을 중심으로 알아볼 것입니다.



1. /etc/default/useradd
/etc/default/useradd 파일은 useradd 명령어로 계정 생성시 가장 먼저 참조하는 파일입니다.
이 파일의 내용은 유저를 생성할 때 설정의 기본 값들을 출력하는 useradd -D 명령어와 같습니다.


GROUP

기본 그룹의 GID ( 100은 users 입니다. )


HOME

홈 디렉터리 경로입니다.


INACTIVE

비밀번호 유효기간 종료 이후 어떻게 처리할 것인지에 대한 설정입니다.

-1            : 유효기간 없음

0             : 비밀번호 유효기간이 만료되면 패스워드를 잠군다.

1이상    : 비밀번호 유효기간 만료 후 정수 값 동안 비밀번호가 유효


EXPIRE

계정 종료 일자


SHELL

간단하게 쉘이란 명령어를 기계어로 해석하는 해석기를 말합니다.

/bin/sh         : 본 쉘 ( 최초 개발된 쉘)

/bin/bash      : 리눅스 기본 쉘

/sbin/nologin : 서비스 계정을 위한 로그인 하지 않는 사용자를 위한 쉘

/bin/dash      : 리눅스 우분트 계열의 기본 쉘

/bin/tcsh       : 확장 쉘을 의미하며, C쉘의 확장 버전

/bin/csh        : C쉘을 의미하며, C언어로 만들어진 쉘

/bin/ksh        : Unix 기본 쉘


SKEL

유저 생성시 추가되는 홈 디렉터리에 복사할 파일들이 있는 디렉터리의 경로

( 이 경로에 대해서는 조금 뒤에 언급을 다시 할 것입니다. )


CREATE_MAIL_SPOOL

메일함 생성 여부





2. /etc/login.defs

/etc/login.defs 파일은 useradd 명령 시 두 번째로 참조하는 파일입니다.

vi 편집기로 직접 파일을 열어 보시면 각 설정에 대한 내용을 확인 할 수 있습니다.


MAIL_DIR        : 메일 디렉터리 위치


PASS_MAX_DAYS    : 비밀번호 만료일

PASS_MIN_DAYS    : 비밀번호 변경 후 다시 변경할 수 있는 최소 일 수

PASS_MIN_LEN        : 비밀번호 최소 길이

PASS_WARN_AGE    : 값으로 설정된 일 수가 남았을 때, 비밀번호 만료 경고 메시지를 보냄


UID_MIN    : 유저 생성 시 유저에게 할당 할 수 있는 UID 최소 번호

UID_MAX    : 유저 생성 시 유저에게 할당 할 수 있는 UID 최대 번호


CREATE_HOME    : 홈 디렉터리 생성 여부


USERGROUPS_ENAB     : userdel 명령 시 그룹도 삭제, 즉 userdel 명령어로 유저가 없는 그룹을 삭제할 것인지 여부


ENCRYPT_METHOD     : 암호화 방법





3. /etc/skel

처음에 살펴 본 /etc/default/useadd 파일에서 SKEL의 값은 /etc/skel이였습니다.

따라서 useradd 명령을 하면 /etc/skel 디렉터리에 있는 파일들이 새롭게 생성되는 유저의 홈 디렉터리로 복사됩니다.


예를들어 새로운 유저가 알아야 할 정보들( readme.txt 파일 )을 /etc/skel 디렉터리 아래에 저장하면 유저 생성시 유저 홈 디렉터리에 readme.txt 파일이 자동으로 추가 됩니다.





4. 사용자와 관련된 명령어
1) 사용자 계정 정보
# vi /etc/passwd

쉘 목록에서 /sbin/nologin은 무엇일까요?

/sbin/nologin은 shell이 없는 계정은 접속은 가능하지만 쉘 권한이 없으므로 명령을 할 수 없는 계정을 의미합니다.


예를 들어, 모든 권한을 갖는 root 계정으로 MySQL을 실행하는 것은 보안상 좋지 않습니다.

그래서 MySQL 서비스만 실행 할 수 있는 mysql계정을 생성해서 사용합니다.

mysql 계정은 MySQL 서비스를 수행하는 권한만 있을 뿐 로그인이 필요하지 않습니다.

아직 이 부분은 직접 사용해보지 않았으므로 이해가 안될 수 있는데, MySQL을 설치할 때 자세히 언급 하도록 하겠습니다.


nologin 계정을 만드려면 useradd 명령을 할 때 –M 옵션을 주면 됩니다.

-M 옵션은 홈 디렉터리 없이 계정을 생성하는 옵션을 의미합니다.

# useradd -M mysql




2) 비밀번호 수정

# passwd



3) 유저 삭제

유저를 삭제할 때 유저만 삭제하고 홈 디렉터리는 남기는 것이 좋습니다.

홈 디렉터리에 그 유저가 사용했던 라이브러리, 작업했던 것들 등이 있을 수 있으므로 그 유저에게 백업하라고 알린 뒤에서야 홈 디렉터리를 삭제하는 것이 좋습니다.

# userdel user

홈 디렉터리까지 삭제하려면 -r 옵션을 추가하면 됩니다.

# userdel -r user



4) 그룹에 대한 정보

# cat/etc/group



5) 사용자가 속한 그룹 조회

# groups 사용자명



6) 사용자 암호를 주기적으로 변경

# chage -m 10 user1

# chage -E 2019/02/25 user1

# chage -m 10 user1

user1 사용자가 비밀번호를 변경하면 최소 10일은 사용해야 변경 할 수 있음

# chage -E 2019/02/25 user1

user1 사용자가 설정한 비밀번호는 2019.02.25일까지 사용 가능






이상으로 사용자를 추가할 때 참조하는 3개의 파일과 사용자와 관련된 여러 명령어들을 알아보았습니다.