[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 댓글, 광고보답은 항상 감사드립니다. 주말잘보내세요~~~!
'별걸다하는 IT > 리눅스 유닉스' 카테고리의 다른 글
[리눅스 / 유닉스 / 셸 스크립트 ] 제어문 case 사용법, 예제, 정규식이 아니라 패턴 매칭! (0) | 2019.10.13 |
---|---|
[Linux Unix] 리눅스 현재 날짜 시간 보기(date), UTC를 KST 시간으로 변경하기, 타임존 변경 (0) | 2019.10.09 |
[리눅스] etc/default/useradd 파일, /etc/skel 디렉터리 살펴보기, 사용자 계정 관련 디폴트 설정 파일 (0) | 2019.10.07 |
[Linux/Unix/Shell programming] 위치 매개 변수, 특수매개변수, 아규먼트 변수 종류 (2) | 2019.10.02 |
[리눅스 /유닉스 / 셸 스크립트] 매개변수 확장, 기타변수, 매개변수 치환 (Parameter substitution) (0) | 2019.10.02 |
[linux/unix/스크립트]셸 프로그래밍 기초 - 변수와 특수문자,빈 변수, 변수의 종류~ 변수총정리 (2) | 2019.10.01 |
최신 댓글