_리눅스 실습 커리큘럼 13/40 · 권한과 사용자 (7주차)_
지금까지는 이미 있는 사용자와 그룹을 전제로 권한을 다뤘습니다. 이번 편에서는 useradd 로 계정을 직접 만들면서 주 그룹과 추가 그룹을 지정하는 법, 그리고 새 계정의 모양을 결정하는 두 설정 파일 /etc/skel 과 /etc/default/useradd 를 다룹니다. 마지막으로 skel 의 .bashrc 를 정비해 신규 계정의 셸 환경을 통일하는 방법까지 이어 갑니다.
주 그룹과 추가 그룹 구분하기
소문자 -g 는 주 그룹 하나(passwd 의 GID 필드)를, 대문자 -G 는 추가 그룹 목록(쉼표로 구분)을 지정합니다. 두 옵션 모두 그룹이 미리 있어야 하므로 필요하면 groupadd 로 먼저 만듭니다.
groupadd dev; groupadd ops
useradd -g dev -G ops alice
id alice # gid=...(dev) groups=...(dev),...(ops)
usermod -aG wheel alice # 기존 추가 그룹은 유지하고 wheel 만 덧붙임
usermod -G를-a없이 쓰면 추가 그룹 목록이 통째로 교체되어 기존 그룹이 빠집니다. 그룹을 "더하는" 작업이면 반드시-aG입니다.- 확인은
id 사용자,groups 사용자,getent group 그룹명으로 합니다.
/etc/skel — 새 홈의 원본 틀
useradd 가 홈 디렉터리를 만들 때 /etc/skel 의 내용을 숨김 파일과 하위 디렉터리까지 그대로 복사하고, 소유자를 새 사용자로 바꿔 줍니다. 파일뿐 아니라 빈 디렉터리도 복사 대상입니다.
ls -a /etc/skel # .bashrc, .bash_profile 등 기본 템플릿
mkdir /etc/skel/public_html
useradd -m tester && ls -la /home/tester
- skel 을 바꿔도 이미 만든 계정에는 영향이 없습니다. 적용 여부는 새 계정을 만들어 확인합니다.
- RHEL 계열은
/etc/login.defs의CREATE_HOME yes로 홈이 기본 생성되지만, 배포판에 따라-m이 없으면 홈도 skel 복사도 없습니다. 습관적으로-m을 붙이는 편이 안전합니다.
/etc/default/useradd 와 useradd -D
옵션 없이 useradd 를 실행했을 때 쓰이는 기본값은 /etc/default/useradd 에 있습니다. 파일을 직접 고칠 수도 있지만 useradd -D 로 바꾸는 것이 정석입니다.
useradd -D # HOME=/home, SHELL=/bin/bash, SKEL=/etc/skel ...
useradd -D -b /data/users # 홈의 기본 부모 디렉터리 변경
useradd -D -s /bin/zsh # 기본 셸 변경
HOME은 홈 자체가 아니라 부모 경로입니다. 실제 홈은HOME/사용자명이 됩니다. 부모 디렉터리가 없으면 이후 계정 생성이 실패하니 미리 만들어 둡니다.-D없이useradd -b나-s를 쓰면 그 계정 하나에만 적용되고 기본값은 그대로입니다.- 변경 여부는
useradd -D를 다시 실행하거나cat /etc/default/useradd로 확인합니다. 셸은 실제로 설치되어 있고/etc/shells에 등록돼 있어야 로그인에 쓸 수 있습니다.
.bashrc 템플릿으로 셸 환경 맞추기
skel 의 .bashrc 에 설정을 넣으면 앞으로 만들어지는 계정이 모두 같은 셸 환경으로 시작합니다. 자주 쓰는 변수는 다음과 같습니다.
HISTSIZE— 현재 세션 메모리에 유지하는 기록 줄 수HISTFILESIZE— 로그아웃 때~/.bash_history파일에 남기는 줄 수. 두 변수를 바꿔 쓰는 실수가 흔합니다.HISTTIMEFORMAT—history출력 앞에 붙는 시각 형식(strftime).%Y %m %d %H %M %S를 조합하며%F는%Y-%m-%d,%T는%H:%M:%S의 줄임입니다. 끝에 공백을 두어야 명령과 붙지 않습니다.umask— 파일은 666, 디렉터리는 777 에서 마스크를 뺀 값이 기본 권한입니다. 022 라면 파일 644, 디렉터리 755 가 됩니다. 원하는 권한에서 거꾸로 계산하세요.
# /etc/skel/.bashrc 에 추가하는 형태 (값은 설명용)
HISTSIZE=1000
HISTFILESIZE=2000
HISTTIMEFORMAT='%d/%m %H:%M '
umask 022
- 홈 경로를 지정할 때는
useradd -m -d 경로 계정처럼-d와-m을 함께 씁니다. - 확인은
grep -E 'HIST|umask' /home/계정/.bashrc와stat -c '%U %n'으로 내용과 소유자를 함께 봅니다. - 기존 계정에는 적용하지 않아야 한다면
/etc/bashrc같은 전역 파일에 넣으면 안 됩니다. 전역 파일은 모든 계정에 즉시 영향을 줍니다.
이번 편과 연결된 문제
- 사용자 생성 및 관리 —
-g와-G로 주·추가 그룹을 나누고,usermod -aG로 기존 그룹을 유지한 채 그룹을 더하는지 - 사용자 생성 기본 템플릿 - /etc/skel — skel 에 디렉터리를 두어 신규 계정 홈에 자동 제공되게 하는지
- 사용자 생성 기본 설정 - /etc/default/useradd —
useradd -D로 홈 부모 경로와 기본 셸을 바꾸고 변경 결과를 확인하는지 - skel 템플릿 신규 계정 표준화 — 기록 보관량·시각 형식·umask 를 skel
.bashrc에 넣고, 신규 계정에만 복제되고 기존 계정은 그대로인지
다음 편
다음 편은 계정 잠금과 비밀번호 정책 chage 입니다. 화·금요일에 이어집니다.
<!-- publish_key:linux-path-20w-p13-post -->

아직 댓글이 없습니다. 궁금한 점이나 풀이 경험을 남겨 보세요.