자격증 정복/리눅스마스터

리눅스마스터 2급 필기 05 — 기본 명령어 ② 사용자·계정 관리 + 기타 필수 명령어 [1차 리눅스 일반]

올드 IT직장인 2026. 10. 5. 00:00

리눅스마스터 2급 필기 05 — 기본 명령어 ② 사용자·계정 관리 + 기타 필수 명령어 [1차 리눅스 일반]

출제기준 1차 대단원: 리눅스 일반 — 기본 명령어(사용자 계정 / 기타 명령어)
계정 관련 파일 필드 수(7개 vs 9개)와 옵션 대소문자 구분, 이번 편의 승부처입니다!


사용자 계정 생성 — useradd ⭐⭐⭐⭐

리눅스는 다중 사용자(Multi-user) 시스템이라 root가 계정을 추가하는 일이 잦습니다.

useradd는 /etc/passwd, /etc/shadow, /etc/group에 정보를 등록하고 홈 디렉터리와 초기 파일을 자동으로 만들어 줍니다.

옵션 의미 내용
-u UID 지정 특정 번호의 UID 부여
-g 기본 그룹 Primary Group 지정
-d 홈 디렉터리 기본값(/home/계정명) 외 경로 지정
-s 셸 지정 로그인 셸 지정
-c 설명 실명·부서 등 코멘트
-m 홈 디렉터리 생성 홈 디렉터리를 강제로 생성
-e 만료일 계정 유효 기간(YYYY-MM-DD)
-f 비활성 기간 패스워드 만료 후 계정이 잠기기까지 유예

 

예시: useradd -m -d /test -s /bin/bash -e 2026-12-31 test1
→ 홈을 /test로 만들고, 셸은 bash, 2026-12-31 이후엔 로그인 거부

 

⭐ "홈 디렉터리를 강제로 생성하는 옵션은?" → -m (Make directory)


useradd 기본값 파일 — /etc/default/useradd ⭐⭐⭐

useradd user01만 입력해도 bash 셸과 /home 아래 홈이 만들어지는 이유가 이 파일입니다.

확인·변경은 useradd -D 또는 vi로 합니다.

항목 설명
GROUP 기본 그룹 GID
HOME 홈이 만들어질 상위 디렉터리(/home)
INACTIVE 패스워드 만료 후 계정 잠금까지 유예(-1=무제한)
EXPIRE 계정 사용 만료 날짜
SHELL 기본 로그인 셸(/bin/bash)
SKEL 초기 환경 파일(.bashrc 등)을 복사해 오는 원본 디렉터리(/etc/skel)
CREATE_MAIL_SPOOL /var/spool/mail에 메일 파일 생성 여부

 

⭐ "초기 환경 파일을 복사해 오는 원본 디렉터리 항목은?" → SKEL(Skeleton, 뼈대)


시스템 전역 정책 — /etc/login.defs ⭐⭐⭐

useradd·userdel 실행 시 기본 적용되는 정책 파일입니다.

항목 설명
PASS_MAX_DAYS 비밀번호 최대 사용 기간(99999)
PASS_MIN_DAYS 최소 사용 기간(0)
PASS_MIN_LEN 최소 길이(5)
PASS_WARN_AGE 만료 전 경고 기간(7)
UID_MIN / UID_MAX 일반 사용자 UID 범위(1000 / 60000)
CREATE_HOME useradd 시 홈 자동 생성 여부
ENCRYPT_METHOD 암호화 알고리즘

login.defs vs default/useradd

구분 /etc/login.defs /etc/default/useradd
역할 시스템 전역 정책(패스워드 정책, ID 범위) useradd 명령의 기본값(셸·홈·그룹)
대표 항목 PASS_MAX_DAYS, UID_MIN/MAX SHELL, HOME, SKEL

 

💡 RHEL 계열에서 UID는 0=root, 1~999=시스템 계정, 1000 이상=일반 사용자로 기억하세요.

또한 최신 배포판에서 비밀번호 최소 길이는 PAM(pwquality)이 좌우해서 PASS_MIN_LEN은 사실상 무시되는 경우가 많습니다.


비밀번호 설정·상태 제어 — passwd ⭐⭐⭐⭐

  • 일반 사용자: 본인 비밀번호만 변경 가능, 현재 비밀번호 입력 필수
  • root: 모든 사용자 비밀번호를 현재 비밀번호 없이 강제 변경 가능
옵션 의미 내용
-l Lock 계정 잠금
-u Unlock 잠금 해제
-d Delete 비밀번호 삭제(비밀번호 없이 로그인 가능)
-e Expire 비밀번호 즉시 만료
-n / -x Min / Max 최소 / 최대 사용 기간
-w Warn 만료 전 경고 기간
-i Inactive 만료 후 잠금 유예
-S Status 상태 출력

 

passwd -S 상태 코드 ⭐⭐⭐

코드 의미
PS 정상(Password Set)
NP 비밀번호 미설정(No Password)
LK 잠김(Locked)

 

⭐ useradd만 하고 비밀번호를 안 정한 계정은 shadow 암호 필드가 !!, 상태는 LK입니다.


사용자 정보 DB — /etc/passwd (7필드) ⭐⭐⭐⭐

모든 사용자가 읽을 수 있고 수정은 root만 가능합니다. 콜론(:)으로 구분하며 총 7개 필드입니다.

root:x:0:0:root:/root:/bin/bash
 ①  ② ③ ④  ⑤    ⑥      ⑦
필드 예시 의미
① root 사용자명
② x 암호(실제 해시는 shadow에 저장, 여기엔 x만)
③ 0 UID
④ 0 GID(기본 그룹)
⑤ root 설명(GECOS)
⑥ /root 홈 디렉터리
⑦ /bin/bash 로그인 셸

 

⭐ "7번째 필드는?" → 로그인 셸


암호·만료 정보 — /etc/shadow (9필드) ⭐⭐⭐⭐

암호화된 비밀번호와 만료 정보를 저장하는 보안 파일로, root만 접근 가능합니다. 총 9개 필드입니다.

root:$6$U3aD/ZpcBbzy...:0:99999:7:::
필드 의미
① 사용자명(passwd와 1:1 매칭)
② 암호화된 비밀번호(해시)
③ 마지막 변경일(1970-01-01부터 경과 일수)
④ 최소 사용 기간
⑤ 최대 사용 기간
⑥ 경고 기간
⑦ 비활성(유예) 기간
⑧ 계정 만료일
⑨ 예약 필드(미사용)

 

💡 암호 필드의 $6$은 SHA-512($1$=MD5, $5$=SHA-256)입니다.

필드 값이 !!이면 비밀번호 미설정 잠금 상태입니다.

 

⚠️ 함정: shadow 설명 중 "총 7개 필드"(→9개), "평문 저장"(→해시), "모든 사용자가 읽음"(→root만)은 모두 틀린 보기입니다.

 

⭐ "일반 사용자가 내용을 볼 수 없는 파일은?" → /etc/shadow (passwd·group·fstab은 일반 사용자도 읽기 가능)


계정 정보 변경 — usermod ⭐⭐⭐

기존 계정을 파일 직접 편집 없이 안전하게 수정합니다.

옵션 내용
-u UID 변경
-g 기본 그룹 변경
-G 보조 그룹 변경
-d 홈 경로 변경(passwd의 경로 정보만 수정)
-m -d와 함께 사용, 기존 홈 파일을 새 경로로 이동
-s 셸 변경
-c 코멘트 변경
-l (소문자) 로그인 ID 변경
-L (대문자) 계정 잠금
-U 잠금 해제
-e 만료일 설정

 

⚠️ 함정: 소문자 -l은 ID 변경, 대문자 -L은 잠금입니다.


계정 삭제 — userdel ⭐⭐⭐

옵션 내용
(없음) 계정 정보만 삭제, 홈 디렉터리·데이터는 보존
-r 홈 디렉터리와 메일 스풀까지 함께 삭제
-f 로그인 중이거나 프로세스가 실행 중이어도 강제 삭제

 

⭐ "홈 디렉터리·메일 스풀까지 함께 삭제하는 옵션은?" → -r (-m은 userdel에 없는 옵션)


패스워드 만료 정책 — chage ⭐⭐⭐⭐

관리자 전용 명령으로 passwd -S보다 훨씬 상세한 정보를 보여 줍니다.

옵션 내용
-l 패스워드 정보 목록 출력
-d 마지막 변경일 수정
-E 계정 사용 만료 절대 날짜
-m 변경 후 최소 일수
-M 최대 일수
-W 만료 전 경고 기간
-I 만료 후 계정 잠금 유예 기간

 

⭐ "경고 기간 옵션?" → -W / "계정 만료 절대 날짜?" → -E

 

계정 옵션 대조표 (암기용)

목적 useradd usermod passwd chage
계정 잠금 — -L -l —
잠금 해제 — -U -u —
계정 만료일 -e -e — -E
유예 기간 -f — -i -I
최소/최대 사용 — — -n / -x -m / -M
경고 기간 — — -w -W
셸 -s -s — —
홈 경로 -d(-m 생성) -d(-m 이동) — —

 

passwd와 chage는 모두 shadow의 4~7번 필드를 조작하는 서로 다른 도구입니다.


사용자 전환 — su ⭐⭐⭐⭐

로그아웃 없이 다른 사용자로 전환합니다. 사용자명을 생략하면 root로 전환을 시도합니다.

옵션 설명
-, -l, --login 대상 사용자의 환경 변수를 이용해 로그인(동일 의미)
-c 명령 명령 하나만 수행하고 종료
-s 셸 지정한 셸로 전환

 

su vs su - ⭐⭐⭐⭐ (출제 빈도 높음)

구분 su su -
작업 경로 이전 사용자 위치 유지 대상 사용자 홈으로 이동
환경 변수 이전 사용자 환경 유지 대상 사용자 환경 로드
관리자 명령 전체 경로 필요(/usr/sbin/useradd) 바로 사용 가능(useradd)

 

⭐ "su와 su -의 가장 큰 차이는?" → 환경 변수 로드 여부

 

💡 일반 사용자가 root로 su할 때는 root 비밀번호가 필요하지만, root가 다른 사용자로 su할 때는 불필요합니다.


네트워크 진단 3종 — ifconfig, ping, netstat ⭐⭐⭐⭐

장애 진단 흐름은 ifconfig(내 NIC 확인) → ping(통신 확인) → netstat(경로·포트 확인) 순서입니다.

ifconfig

  • 인자 없이 ifconfig → 활성화(UP)된 모든 인터페이스 정보(IP, 넷마스크, 브로드캐스트, MAC 주소, 패킷 통계)
  • ifconfig ens33 → 해당 인터페이스만 출력
  • ifconfig 인터페이스 IP주소 → IP 설정·변경
  • ifconfig 인터페이스 down/up → 인터페이스 끄기/켜기
  • lo(루프백): 자기 자신과 통신하는 가상 인터페이스, 127.0.0.1

⚠️ 함정: "ifconfig로 MAC 주소를 확인할 수 없다" → 틀린 설명입니다. MAC도 확인 가능합니다.

 

💡 ifconfig로 설정한 IP는 재부팅하면 사라지는 임시 설정입니다.

또 net-tools 소속의 구식 도구라 최신 RHEL 계열은 ip addr(iproute2)로 대체되는 추세지만, 시험은 ifconfig 중심입니다.

 

ping

상대 호스트에 패킷을 보내 통신 가능 여부와 응답 속도를 확인합니다(ICMP Echo 사용). 출력에는 icmp_seq, ttl, time(ms)이 나오고 Ctrl+C로 중단하면 송수신 패킷 수와 손실률이 표시됩니다. 횟수 지정은 ping -c 4 8.8.8.8입니다.

 

⭐ "ping으로 얻을 수 있는 정보는?"

→ 상대 호스트와의 통신 성공 여부 및 응답 속도 (로그인 사용자·OS 버전·하드웨어 불량 판단은 아님)

 

netstat

옵션 내용
-a 모든 소켓(연결 + 대기) 출력
-t TCP 연결만
-u UDP 연결만
-r 라우팅 테이블

 

추가 옵션: -n(숫자로 표시), -l(LISTEN만), -p(PID/프로그램명), -i(인터페이스 통계), -s(프로토콜 통계)

State 의미
LISTEN 접속 대기 중
ESTABLISHED 현재 연결됨
TIME_WAIT 연결 종료 후 잠시 대기

 

⭐ "라우팅 테이블 확인 옵션?" → -r

 

💡 netstat도 net-tools 소속이며 최신 배포판에서는 ss가 대체합니다(ss -tulnp).


시스템 정보 & 도움말 — hostname, uptime, man ⭐⭐⭐

hostname

  • 인자 없이 hostname → 현재 호스트 이름 출력
  • hostname 새이름 → 호스트 이름 변경(임시, 재부팅 시 원복)
  • 영구 변경: /etc/hostname 편집 또는 hostnamectl set-hostname 이름

uptime

한 줄로 현재 시각 / 가동 시간 / 접속 사용자 수 / load average(1·5·15분)를 보여 줍니다.

22:26:23 up 14 min,  2 users,  load average: 0.00, 0.09, 0.15

 

⭐ uptime 핵심 = 가동 시간 + 현재 작업 부하. 잔여 메모리는 free, 디스크 사용량은 df입니다.

 

💡 load average가 CPU 코어 수보다 지속적으로 높으면 과부하 신호입니다(4코어에서 4.0이면 꽉 찬 상태).

 

man

인터넷 연결 없이 시스템 내장 매뉴얼을 보여 줍니다.

화면은 NAME, SYNOPSIS, DESCRIPTION 순으로 구성되고 q로 종료합니다.

섹션 내용
1 일반 명령
5 설정 파일 형식
8 시스템 관리 명령

man 5 passwd는 /etc/passwd 파일 형식, man passwd는 passwd 명령 설명입니다.

관련 도구로 --help, info, whatis, man -k(apropos)가 있습니다.

 

⚠️ whereis는 실행 파일·소스·매뉴얼의 위치를 찾는 명령이지 사용법 설명이 아닙니다.


날짜·시간 — date, clock ⭐⭐⭐

명령 대상
date 운영체제(시스템) 날짜·시간 출력·설정
clock(hwclock) 메인보드 하드웨어(RTC) 시간 확인·설정
  • date +%Y-%m-%d: 형식 지정 출력 / date -s "2026-10-01 12:00:00": 시간 설정 / date -u: UTC
  • clock 옵션: -r 하드웨어 시계 읽기, -w 시스템→하드웨어, -s 하드웨어→시스템, -u UTC 기준, -l 로컬 시간 기준

💡 서버에서 시간이 틀리면 cron 작업 오작동, 인증서·토큰 검사 실패, 로그 추적 곤란 같은 장애가 납니다.


기출 문제 Q&A

Q. useradd 시 초기 환경 파일을 복사해 오는 원본 디렉터리를 나타내는 항목은?

A. SKEL입니다. /etc/skel의 .bashrc 등이 새 홈으로 복사됩니다.

 

Q. passwd -S로 확인했을 때 계정이 잠긴 상태를 나타내는 것은?

A. LK입니다. NP는 미설정, PS는 정상입니다.

 

Q. /etc/shadow에 대한 설명으로 알맞은 것은?

A. root만 접근할 수 있다입니다. 9개 필드이며 비밀번호는 해시로 저장됩니다.

 

Q. /etc/passwd의 7번째 필드는?

A. 로그인 셸입니다.

 

Q. 사용자 삭제 시 홈 디렉터리와 메일 스풀까지 함께 삭제하는 옵션은?

A. userdel -r입니다.

 

Q. 패스워드 만료 경고 기간을 설정하는 chage 옵션과, 계정 만료일 절대 날짜 옵션은?

A. 경고는 -W, 만료일은 -E입니다.

 

Q. su와 su -의 가장 큰 차이는?

A. 환경 변수 로드 여부입니다. su -는 대상 사용자의 환경 변수를 로드하고 홈으로 이동합니다.

 

Q. 네트워크 장애 시 인터페이스 상태 진단·설정에 가장 먼저 쓰는 명령은? 또 라우팅 테이블을 보는 netstat 옵션은?

A. ifconfig, 그리고 netstat -r입니다.

 

Q. 부팅 후 경과 시간·접속자 수·평균 작업 부하를 확인하는 명령은?

A. uptime입니다.

 

Q. 인터넷 연결 없이 명령어의 상세 사용법을 확인하는 명령은?

A. man입니다.


💡 실무에서는?

계정 관리에서 정말 중요한 건 퇴사자 처리와 비밀번호 정책이에요.

저는 퇴사자 계정은 userdel로 바로 지우기보다 usermod -L이나 chage -E 0으로 먼저 잠그고,

데이터 인수인계가 끝난 뒤에 삭제합니다.

userdel -r은 홈 디렉터리까지 날려서 되돌릴 수 없거든요.

보안 점검에서는 chage -l로 만료 정책을, passwd -S나 shadow의 !!로 비밀번호 없는 계정을 찾아냅니다.

 

또 장애가 나면 ifconfig(ip a) → ping → netstat -tulnp(ss -tulnp) 순서로 보는 게 거의 습관이에요.열려 있는 불필요한 포트를 찾는 것도 보안 점검의 기본이죠.


핵심 정리

✅ useradd: -m(홈 생성) -d(홈 경로) -s(셸) -e(만료일) -u(UID) -g(기본그룹)
✅ /etc/default/useradd(SKEL=초기환경 원본) vs /etc/login.defs(전역 정책, UID_MIN 1000)
✅ passwd -S: PS(정상) NP(미설정) LK(잠김) / -l 잠금, -u 해제
✅ /etc/passwd 7필드(7번째=셸, 읽기 가능) / /etc/shadow 9필드(root만)
✅ usermod: -l(ID변경) -L(잠금) -U(해제) -d/-m(홈 변경/이동) -G(보조그룹)
✅ userdel -r(홈·메일 삭제) -f(강제)
✅ chage: -l(목록) -E(계정만료) -m/-M(최소/최대) -W(경고) -I(유예)
✅ su(환경 유지) vs su -(환경 변수 로드+홈 이동)
✅ ifconfig(NIC, MAC 확인 가능) / ping(통신 여부·속도) / netstat -a -t -u -r
✅ hostname(이름) / uptime(가동시간+load average) / man(오프라인 매뉴얼)
✅ date(시스템 시간) vs clock(하드웨어 시간)

 

다음 편에서는 1차 예상문제로 지금까지 배운 1차 범위를 총정리합니다!

 

궁금한 점은 댓글로 남겨주세요!

반응형
개인정보처리방침  |  블로그 소개