본문 바로가기

별걸다하는 IT/리눅스 유닉스

[리눅스] etc/default/useradd 파일, /etc/skel 디렉터리 살펴보기, 사용자 계정 관련 디폴트 설정 파일

[Linux / Unix 완전 정복 링크 모음 목차]

안녕하세요~!

저번 시간에 사용자 계정을 추가하는 useradd명령어와~

계정을 추가하였을 때 사용자 정보가 기록되는 passwd 파일에 대해서 살펴보았어요 

저번 포스팅에 이어서 진행하도록 할게요 ㅎㅎ

 

▼ useradd 명령어와 passwd 파일 포스팅 

 

[리눅스 / 유닉스]사용자 관리(사용자 추가 useradd, passwd파일, 시스템계정 )

리눅스 완전 정복 : 리눅스 목차 오늘도 제 블로그를 클릭해주시고 방문해주신 방문자님들 반갑습니다. 오늘은 관리자 역할 중 빼놓을 수 없는 사용자관리에 대해서 알아보는 시간을 가질거예요~! 사용자 계정 추..

jhnyang.tistory.com

etc/default/useradd 파일 필요성 이야기 서론 

useradd 명령어가 사용자 생성 명령어였죠?? useradd 파일은 사용자를 생성할 때 여러 설정 항목들을 디폴트로 가질 수 있도록 설정해주는 파일입니다!

 

[SAMPLE EXAMPLE]

하나의 예시를 볼까요???

이전 포스팅 'useradd 사용 예시' 부분에 '# useradd -m yang' 이라는 커맨드를 소개했었는데,

이 명령을 한 번 실습해볼게요. useradd는 사용자 계정을 추가해주는 명령어이고 m 옵션은 사용자를 생성할 때 홈 디렉터리를 생성해주는 옵션입니다.

 

# useradd -m yang : yang이라는 계정을 생성하는데 홈 디렉터리도 같이 생성해주자~

 

그런데 해당 명령어를 실행해보면, 홈 디렉터리도 잘 생성이 되었고, passwd파일에 홈 디렉터리도 잘 잡힌게 나오는데,....

$
$
$

생성된 계정으로 로그인을 하면 앞에 프롬프트가 달러표시($)밖에 보이지 않아요, 앗.... 내가 지금 어디 디렉터리에 있는지도 모르겠고,,, 계정명도 안보여서 어떤 계정으로 로그인했던건지 헷갈리네..

이렇게 말고..

ubuntu@server: /source/log >
yang@server: /home/yang >
root@server: ~#

root@server 또는 ubuntu@server 이 형식처럼 경로까지 다 표시되게 하고 싶은데 왜 '$'밖에 보이지 않을까요? 계정 생성이 이상하게 된걸까요? 

 

아니요~. 계정을 생성할 때 셸을 지정해주지 않았기 때문입니다. 사실 저 root@server: 이런 프롬프트 모양은 배시 셸에 설정되어 있는 프롬프트모양이거든요! 전체설정에서 해당 셸에 대한 프롬프트 설정을 저렇게 잡아놔서 그래요 (물론 커스터마이징 가능..)

'useradd -m sky -s /bin/bash' 이와 같이 셸을 계정을 만들때 지정을 해주면,

해당 계정으로 변경해도 이쁜 프롬프트 모양(?)에 자동으로 홈 디렉터리로 로그인되었음을 확인할 수 있습니다.

 

그러면 계정을 생성할 때마다 매번, 홈 디렉터리 옵션도 넣어야하고, 셸도 지정해줘야하고.. 유저마다 사용하는 셸이 제각각이지는 않을텐데 일일이 bash로 변경해줘야하나..

아 만약에 이번 신입이 50명이 들어왔다...으.... 너무 비효율적이지 않을까요?

 

만약 기본 설정이 있다면, 그 설정만 바꿀 수 있다면, 내가 매번 똑같은 설정을 계정마다 번거롭게 작업해주지 않아도 되겠죠 . 당근 그런 파일이 있어요! 고것이 useradd 파일이다.

/etc/default/useradd 파일이란?!

default! 디폴트 ! 기본! 즉 'useradd 사용자명'으로 계정을 생성하였을 시 기본적으로 적용되는 설정이 들어가 있는 파일입니다.

물론 얘도 사용자 관리 파일이기 때문에 root 관리자만이 수정할 수 있도록 접근권한이 설정되어 있습니다.

이렇게 직접 파일을 열어서 보고 수정할 수도 있지만

# useradd -D

 

useradd 명령어를 이용해서 useradd 파일을 확인하거나 간접적으로 설정까지 다 가능합니다

/etc/default/useradd 필드 구성

그럼 각각의 항목들이 무엇을 의미하는지 볼까요?

 

항목

설명

GROUP=100

디폴트는, 사용자 아이디와 동일한 그룹을 생성한 뒤에 그 그룹에 사용자 혼자 속하는 게 디폴트예요.

그런데 만약 -n flag가 지정되어 있을 경우에는 사용자 그룹을 GID가 100인 users 그룹에 포함시킵니다. 

여기 이 GROUP항목은 그 때 사용자 생성시, 기본적으로 속하게 되는 그룹을 지정하는 부분입니다.

HOME=/home

홈 디렉터리의 위치로 사용자를 생성하면 '/home/사용자명'이 됩니다.

INACTIVE=-1

패스워드의 사용 기한이 지난 뒤 실제로 계정의 로그인을 막는 유예기간을 설정하는 겁니다. -1은 상징적인 의미로 설정되지 않았음을 뜻함!

0은 유예기간 없음, 3: 패스워드 유효기간이 지난 후 3일 내에는 로그인 가능.

EXPIRE=

계정 유효기간을 지정하는 부분, '2019-12-31'과 같은 날짜 형식으로 지정합니다.

SHELL=/bin/sh

사용자 생성 시에 할당되는 셸을 의미합니다.

SKEL=/etc/skel

사용자 생성 시에 제공되는 파일 및 디렉터리가 들어 있는 디렉터리를 의미합니다.

CREATE_MAIL_SPOOL=yes

사용자 생성 시에 메일 파일을 생성할 것인지를 지정하는 항목!

yes로 설정하면 'var/spool/mail/사용자명'으로 메일 관련 파일이 생성됩니다.

나머지는 이해하기 어렵지 않을거예요.

여기에 설정을 지정해주면 명령어를 번거롭게 막 여러 옵션 달면서 칠 필요없겠죠!

예를 들어 SHELL을 /bin/bash로 변경해주면 useradd할 때 -s 옵션을 일일이 써줄 필요가 없을거예요!

 

근데 저기 /etc/skel 이 있네요?! 이 디렉터리는 뭐를 위한 걸까요?

 

/etc/skel 디렉터리이란?

/etc/skel 디렉터리에서 skel은 skeleton 이라는 단어에서 왔습니다! 뼈대라는 뜻이죠 ㅎㅎ

홈 디렉터리를 만드는데 필요한 기본이 되는 파일, 즉 뼈대가 되는 파일이기 때문에 이렇게 붙여졌습니다. ㅎㅎ

/etc/skel 디렉터리에 가면 아무것도 없는 것처럼 보이지만, 숨김 파일로 되어있을 뿐이예요.

# ls -al /etc/skel

숨김파일을 보여주는 a옵션을 달아서 확인해봅시다.

이런 파일들을 보관하고 있는 /etc/skel 디렉터리는 관리자가 새로운 유저를 추가할 때마다 시스템이 이 디렉터리를 참고해서 디폴트가 되는 홈 디렉터리를 생성할 수 있게 됩니다. 그렇기 때문에 모든 유저들은 동일한 설정과 환경에서 시스템을 시작할 수 있게 되는거죠

 

skel 디렉터리의 .bashrc 파일을 열어봤어요 ㅎㅎ

프롬프트 색깔부터..형식,, alias 등등 다양한 설정들이 잡혀있네요 ㅎㅎ 한번 보고 이해해보는 것도 좋을 것 같아요.

 

/etc/skel은 왠만하면 이것저것 추가해서 설정을 늘리기보다는 작게 유지하고

시스템 범용 설정을 적용시키고 싶을 경우에는 /etc/profile과 같은 전역설정파일을 변경하는게 더 좋은 방법이라고 하네요 ㅎㅎ

 

기본 설정 변경 후 사용자 추가해보기

직접적으로 파일을 열어서 수정해줘도 되지만,

간편하게 변경할 수 있게 useradd는 useradd파일 수정 명령어를 지원합니다.

 

상황을, 새로운 개발자가 들어오면 홈 디렉터리는 /home이 아닌 /developer 밑으로,

셸은 sh가 아니라 bash셸을 기본으로 잡도록 설정을 변경해볼까요?

# useradd -D -b /developer -s /bin/bash

useradd -D는 useradd파일의 내용을 간략하게 보여주므로 이 명령어를 이용해서 설정이 제대로 변경되었는지 확인합시다.

자 user1이라는 계정을 추가해볼게요. 그 전에 우리가 home대신 바꾼 developer 디렉터리를 만들어주지 않았잖아요 -p옵션을 이용해서 user1 홈 디렉터리 경로까지 생성후 계정을 추가해봅시다.

보면 grep 명령어로 /etc/paswd에서 user1이 있는 라인만 뽑아 간략하게 확인해보았어요.

홈디렉터리 경로가 제대로 변경되고 기본 셸이 sh가 아니라 /bash로 적용된 것을 확인해볼 수 있네요!!

이렇게 하면 매번 -s 또는 -d 나 -m의 명령어 없이, 빠르고 간편하게 설정할 수 있겠어요! ㅎㅎ

 

useradd -D 옵션

useradd는 저번시간에 배운 사용자 계정 추가에 필요한 옵션들 외에,

useradd파일에 접근하여 수정할 수 있게 하는 기능도 제공한다 했죠!

주요 옵션을 살펴볼까요?

옵션

의미

-D

사용자 추가 시에 기본적으로 반영되는 정보 파일인 /etc/default/useradd 내용을 출력합니다. 설정을 변경하려면 이 옵션과 함께 아래의 옵션을 추가적으로 더 넣어줘야 해요

-g

기본 그룹을 지정합니다. 여기에서 지정하는 값은 /etc/group 내에 있어야 합니다.

리눅스 표준인 LSB를 따라가는 리눅스 배포판인 경우에는 기본 그룹 지정이 가능하나, 래드햇 계열 리눅스에서는 설정하면 /etc/default/useradd 파일에 변경된 값은 반영이 되나 실제 사용자 추가 시에는 적용되지 않고 있습니다.

-b

사용자 홈 디렉터리의 상위 디렉터리를 지정합니다.

-f

INACTIVE행과 관련된 옵션으로 패스워드 유효기간이 만료된 후에 언제 이 계정을 사용할 수 없도록 할 것인지를 하루 단위로 설정합니다.

-e

사용자의 계정 만료일을 지정하는 옵션!

-s

사용자의 기본 셸을 지정할 때 사용하는 옵션입니다.

examples~

#useradd -D -b /home2 -s /bin/csh

사용자 홈 디렉터리가 생성되는 디렉터리를 /home2로 바꾸고 기본 셸은 /bin/csh로 지정합니다.

변화된 내용은 /etc/default/useradd 파일에 기록됩니다.

 

#useradd -D -e 2015-12-31

계정 만기일을 2015년 12월 31로 지정하여 /etc/default/useradd 파일에 기록합니다.

 

cf. 많은 계정을 한 번에 만드는 newusers라는 명령어도 있습니당.

 

기출문제

[리눅스마스터 1급 1차 1701회]

다음 중 사용자 ID 생성 및 관리와 관련된 내용으로 틀린 것은?

1. /etc/passwd: 시스템 자원을 이용할 수 있는 로그인 사용자 목록이 저장된 파일이다.

2. /etc/default/useradd: useradd 명령 실행 시, 참조하는 기본 정보 파일이다.

3. /etc/shadow: passwd의 비밀번호 부분을 암호화하여 관리하는 파일이다.

4. /etc/default/skel: 계정 생성 시 해당 디렉터리의 파일을 사용자에게 기본 제공한다.

답: 4번

 

[리눅스마스터 1급 1차 2002회]

다음 설명과 관련 있는 파일명으로 알맞은 것은?

사용자를 추가할 때에 2020년 12월 31일까지만 로그인이 가능하도록 지정하려고 한다.

① /etc/skel

② /etc/passwd

③ /etc/login.defs

④ /etc/default/useradd

답: 4번

 

오늘은 여기까지~

사용자 계정 설정을 할 때 따라가는 useradd 파일과

홈 디렉터리 설정을 할 때 따라가는 skel 디렉터리에 대해서 배워보았어요~!

공감 or 댓글, 광고보답은 항상 감사드립니다. 주말잘보내세요~~~!