학습 가이드
#20주 실습 커리큘럼

신규 입사자·서비스 계정 세팅과 SSH 키

_리눅스 실습 커리큘럼 16/40 · 권한과 사용자 (8주차)_

2단계 마무리 편이며, 이번에는 계정을 만드는 쪽을 다룹니다. 신규 입사자 계정의 UID·홈·셸·패스워드, 로그인하지 않는 서비스 계정과 작업 디렉터리, SSH 공개키 배치 권한을 순서대로 정리합니다. 마지막으로 만든 결과를 getent·id 로 읽어 리포트로 남기는 방법도 봅니다. /etc/passwd·/etc/group 필드 구조와 계정 감사의 기초는 Day 3. passwd/group 기반 운영 계정 감사 기초 에서 먼저 확인하세요.

사람 계정은 쓸 수 있게, 서비스 계정은 들어오지 못하게

두 계정은 목적이 다르므로 useradd 옵션도 다릅니다. 사람 계정에는 홈 디렉터리와 대화형 셸, 필요하면 정해진 UID 를 줍니다. 서비스 계정에는 로그인 셸 대신 nologin 을 줍니다.

useradd -m -u 3001 -s /bin/bash -c "Kim Minsu" minsu   # 사람: 홈 생성, UID 지정
passwd minsu                                           # 대화형으로 패스워드 설정
echo 'minsu:TempPass!23' | chpasswd                    # 스크립트에서 설정할 때
  • -u 로 UID 를 지정할 때는 이미 쓰이는 번호인지 getent passwd 3001 로 먼저 확인합니다.
  • 계정만 만들고 패스워드를 설정하지 않으면 /etc/shadow 의 해당 필드가 ! 로 남아 잠긴 상태입니다. 생성과 패스워드 설정은 별개의 단계입니다.

그룹을 먼저, 계정은 그 다음

서비스 계정의 기본 그룹을 지정하려면 그룹이 먼저 있어야 합니다. -g 는 기본(primary) 그룹이고, -G 는 보조 그룹입니다. 둘을 헷갈리면 요구 조건과 다른 결과가 나옵니다.

groupadd batch
useradd -g batch -s /sbin/nologin batchsvc
mkdir -p /srv/batchwork
chown batchsvc:batch /srv/batchwork
  • 배포판에 따라 셸 경로가 /sbin/nologin 이거나 /usr/sbin/nologin 입니다. which nologin 으로 확인하세요.
  • 작업 디렉터리는 root 가 만들기 때문에 chown 을 빼먹으면 서비스가 쓰기를 하지 못합니다.

SSH 키는 내용보다 권한이 먼저다

sshd 는 StrictModes 때문에 .ssh 나 authorized_keys 의 권한이 느슨하거나 소유자가 다르면 키가 맞아도 인증을 거부합니다. 기준은 .ssh 700, authorized_keys 600, 소유자는 해당 사용자입니다.

install -d -m 700 -o alice -g alice /home/alice/.ssh
cat alice.pub >> /home/alice/.ssh/authorized_keys
chmod 600 /home/alice/.ssh/authorized_keys
chown alice:alice /home/alice/.ssh/authorized_keys
  • 공개키는 손으로 옮겨 적지 말고 cat 으로 붙입니다. 줄바꿈이 하나 끼어도 키가 깨집니다.
  • root 로 작업한 뒤 ls -la 로 두 경로의 소유자를 꼭 다시 봅니다.

만든 뒤에는 읽어서 확인한다

만든 계정은 직접 조회해서 검증합니다. getent 는 NSS 를 거쳐 조회하므로 LDAP 등 다른 인증 소스에 있는 계정까지 보여 줍니다.

getent passwd minsu | cut -d: -f3          # UID 숫자만
getent group batch | cut -d: -f3           # GID 숫자만
id -Gn minsu                               # 소속 그룹 이름, 공백 구분
getent passwd | awk -F: '$7=="/sbin/nologin"' | wc -l
  • 리포트 파일에는 명령 출력만 > 로 저장합니다. 설명 문구나 공백이 섞이면 채점에서 불일치합니다.
  • nologin 계정 수를 셀 때는 정확한 경로를 비교합니다. /usr/sbin/nologin 계정은 이 조건에 포함되지 않습니다.

이 편과 함께 풀어 볼 과제

  • 신규 입사자를 위한 계정 생성 및 설정 — UID 를 지정해 계정을 만들고 패스워드까지 설정해 로그인 가능한 상태로 만드는지
  • 서비스 계정과 작업 디렉터리 준비하기 — 그룹 선생성, 기본 그룹 지정, nologin 셸, 디렉터리 소유권을 모두 맞추는지
  • SSH authorized_keys 준비하기 — 제공된 공개키를 그대로 옮기고 700/600 권한과 소유자를 맞추는지
  • id·getent·who 로 계정 정보 조회 리포트 만들기 — UID·GID·그룹 목록·nologin 계정 수를 숫자와 이름만 깔끔하게 기록하는지

다음 편

다음 편은 ps로 프로세스 보기와 우선순위 nice·renice 입니다. 화·금요일에 이어집니다.

<!-- publish_key:linux-path-20w-p16-post -->

댓글 0

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