/etc/passwd — 사용자 기본 정보(7개 필드, 콜론으로 구분)
형식: 로그인ID : x : UID : GID : 설명 : 홈디렉터리 : 로그인셸
예시: alice:x:1001:1001:Alice Kim:/home/alice:/bin/bash
필드별 의미
① 로그인ID : 사용자 계정 이름, 최대 32자(실제 8자 권장)
② x : 비밀번호 자리, 실제 암호는 /etc/shadow에 보관
③ UID : 사용자 식별 번호, 0~999는 시스템 예약 / 1000~는 일반 사용자 / 0번=root
④ GID : 기본 그룹 번호, 상세 정보는 /etc/group에 있음
⑤ 설명 : 추가 정보(메모), 이름・연락처 등
⑥ 홈디렉터리 : 개인 폴더 경로, 보통 /home/사용자명
⑦ 로그인셸 : 사용하는 셸 프로그램, /bin/bash, /sbin/nologin 등
/etc/shadow — 비밀번호 보안 정보(9개 필드)
형식: 로그인ID : 암호화된PW : 최종변경일 : MIN : MAX : WARNING : INACTIVE : EXPIRE : Flag
암호 필드 형식: salt$hash값 (앞 숫자 = 해시방식: 1=MD5, 5=SHA-256, 6=SHA-512)
필드별 의미
• MIN : 비밀번호 변경 후 최소 유지 일수, 0 = 즉시 변경 가능
• MAX : 비밀번호 최대 유효 일수, 99999 = 만료 없음
• WARNING : 만료 며칠 전 경고할지, 7 = 7일 전부터 경고 메시지 표시
• INACTIVE : 만료 후 비활성화까지 유예기간, 10 = 10일 후 자동 비활성화
• EXPIRE : 계정 만료 날짜, 예: 2025-12-31
/etc/group — 그룹 정보(4개 필드)
형식: 그룹이름 : x : GID : 그룹멤버(쉼표 구분)
예시: developers:x:1500:alice,bob,carol
• /etc/passwd의 GID → 기본 그룹(Primary Group)
• /etc/group의 멤버 목록 → 2차 그룹(Secondary/Supplementary Group)
/etc/gshadow — 그룹 암호(리눅스 전용, 유닉스에는 없음)
형식: 그룹이름 : 그룹암호 : 관리자 : 그룹멤버
/etc/login.defs — 신규 계정 생성 기본값
• UID_MIN/UID_MAX : 1000~60000, 일반 사용자 UID 범위
• GID_MIN/GID_MAX : 1000~60000, 일반 그룹 GID 범위
• PASS_MAX_DAYS : 99999, 비밀번호 최대 유효기간(일수)
• PASS_MIN_DAYS : 0, 비밀번호 최소 유지 일수
• PASS_WARN_AGE : 7, 만료 전 경고 일수
• ENCRYPT_METHOD : SHA512, 암호화 방식
2. 사용자 관리 명령어
adduser vs useradd — 사용자 생성
• 방식 : adduser는 인터랙티브(대화형) / useradd는 비인터랙티브(옵션 직접 지정)
• 홈디렉터리 : adduser는 자동 생성 / useradd는 -m 옵션 줘야 생성됨
• 비밀번호 : adduser는 생성 중 바로 설정 / useradd는 passwd 명령으로 따로 설정
• 추천 상황 : adduser는 수동으로 계정 만들 때 / useradd는 스크립트・자동화
adduser 사용 예시
adduser alice # 기본 생성(대화형)
adduser –uid 2001 alice # UID 직접 지정
adduser –home /home/alice –uid 2001 –gid 2100 alice
useradd 사용 예시
useradd -m -s /bin/bash alice # -m: 홈 생성, -s: 셸 지정
passwd alice # 비밀번호 별도 설정 필수!
passwd — 비밀번호 설정 & 패스워드 에이징
passwd alice # alice 비밀번호 설정/변경
passwd -x 60 -n 3 -w 7 alice
-x 60: MAX(최대 60일) -n 3: MIN(최소 3일) -w 7: WARNING(7일전 경고)
chage — 패스워드 에이징 전담 명령어
• -l : 현재 설정 목록 확인, 예) chage -l alice
• -m : 최소 변경 일수(MIN), 예) chage -m 3 alice
• -M : 최대 유효 일수(MAX), 예) chage -M 60 alice
• -W : 경고 일수(WARNING), 예) chage -W 7 alice
• -I : 유예기간(INACTIVE), 예) chage -I 10 alice
• -E : 계정 만료일(EXPIRE), 예) chage -E 2025-12-31 alice
한 번에 모든 옵션 적용 가능
chage -m 3 -M 60 -W 7 -I 10 -E 2025-12-31 alice
usermod — 기존 사용자 속성 변경
usermod -l newname oldname # 사용자 이름 변경(홈디렉터리는 자동 변경 안됨!)
usermod -d /home/newhome -m alice # 홈디렉터리 변경 + 파일 이동(-m)
usermod -g devgroup alice # 기본 그룹(primary) 변경
usermod -aG docker,git alice # 보조 그룹 추가(-a 없으면 기존 그룹 삭제됨!)
usermod -s /sbin/nologin ftpuser # 로그인 차단(셸을 nologin으로)
usermod -u 1111 alice # UID 변경
usermod -e 2025-12-31 alice # 계정 만료일 설정
주의: -aG 옵션! -a 없이 -G만 쓰면 기존 보조 그룹이 모두 삭제됨. 반드시 -a 함께 사용!
userdel / deluser — 사용자 삭제
• userdel alice : 계정만 삭제(홈디렉터리 남음)
• userdel -r alice : 홈디렉터리 + 메일 디렉터리까지 함께 삭제
• userdel -f alice : 로그인 중이어도 강제 삭제
• deluser –remove-home alice : 계정 + 홈디렉터리 삭제
• deluser –remove-all-files –group alice : 모든 파일 + 그룹도 삭제
3. 그룹 관리 명령어
참고: 사용자는 기본 그룹(Primary) 1개 + 여러 개의 보조 그룹(Secondary)에 소속 가능
groups # 현재 사용자가 속한 그룹 목록 출력
addgroup developers # 인터랙티브, GID 자동 할당
groupadd -g 1500 developers # GID 직접 지정하여 그룹 생성
groupmod -n devteam developers # 그룹 이름 변경(developers → devteam)
groupmod -g 1501 devteam # 그룹 GID 변경
groupdel testers # 그룹 삭제(기본 그룹인 사용자 없어야 함)
gpasswd — 그룹 암호 및 멤버 관리
gpasswd -a alice devs # alice를 devs 그룹에 추가
gpasswd -d alice devs # alice를 devs 그룹에서 제거
gpasswd -A bob devs # bob을 devs 그룹 관리자로 지정(/etc/gshadow 3번째 필드에 기록)
4. su / sudo — 권한 전환
권장: 일상 작업에는 sudo 명령을 사용하는 것이 가장 안전
명령어별 비교
• sudo 명령 : 권한은 명령 실행 시만 root, 홈 디렉터리는 사용자 홈, PATH는 사용자용, 안전성 최고
• sudo -i : root, /root, root용, 완전한 root 환경
• sudo su : root, /root, 혼합될 수 있음, 간편하지만 혼합
• sudo -s : root, /home/user, 사용자용, 상대적으로 낮음
• su - : root, /root, root용, root 비밀번호 필요
su - root # 전환(root 비밀번호 필요)
sudo su # 현재 사용자 비밀번호로 root 전환
/etc/sudoers — sudo 권한 설정 파일
주의: 반드시 “sudo visudo” 명령으로 편집! 잘못 수정하면 sudo가 완전히 불능 상태가 됨
모든 명령 허용
alice ALL=(ALL:ALL) ALL
특정 명령만 허용
bob ALL=(ALL) /sbin/reboot, /usr/bin/apt update
비밀번호 없이 sudo 가능(보안상 주의!)
alice ALL=(ALL) NOPASSWD: ALL
그룹 단위 설정(% 기호 = 그룹)
%sudo ALL=(ALL:ALL) ALL
alice에게 sudo 권한 부여
usermod -aG sudo alice
5. 사용자 정보 확인 명령어
id alice
→ uid=1001(alice) gid=1001(alice) groups=1001(alice),27(sudo),999(docker)
→ UID, GID, 소속 그룹 한눈에 확인
getent passwd alice
→ alice:x:1001:1001:Alice Kim:/home/alice:/bin/bash
→ 홈디렉터리, 셸 등 상세 확인
chage -l alice # 패스워드 에이징 설정 전체 확인
who # 현재 로그인한 사용자(터미널, 접속 시간)
w # 로그인 사용자 + 현재 하고 있는 작업, CPU 사용
last # 로그인 기록(/var/log/wtmp 파일 기반)
whoami vs who am i — 헷갈리는 두 명령어!
• whoami : EUID(유효 사용자) 출력, su로 전환했다면 전환된 사용자 출력(현재 실행 권한)
• who am i : UID(실제 사용자) 출력, 원래 로그인한 사용자 출력(su로 전환해도 변하지 않음)
• id : UID + GID + 그룹 전체, 가장 상세한 정보 출력
참고: tty = 물리적/로컬 터미널(콘솔 직접 접속) / pts = 가상/원격 터미널(SSH, GUI 터미널 앱)
6. 파일 소유권 변경 — chown / chgrp
chown alice file.txt # 소유자만 alice로 변경
chown alice:devs file.txt # 소유자를 alice, 그룹을 devs로 동시 변경
chown -R alice:devs /home/project/ # 디렉터리 하위 전체 재귀 변경
chgrp devs file.txt # 그룹만 devs로 변경(소유자 유지)
chgrp -R devs /home/project/ # 하위 디렉터리 포함 전체 그룹 변경
7. 환경 설정 파일
로그인 셸 vs 비로그인 셸
• 로그인 셸 : 시작 방식은 SSH, TTY, Ctrl+Alt+F3 / 실행 파일은 /etc/profile → ~/.bash_profile → ~/.profile / 주요 목적은 PATH 등 전체 환경 설정
• 비로그인 셸 : 시작 방식은 GUI 터미널 열기, bash 실행 / 실행 파일은 ~/.bashrc만 실행 / 주요 목적은 alias 등 작업 편의 설정
사용자 환경설정 파일(홈 디렉터리의 숨김 파일)
• ~/.profile : 로그인 셸, PATH 추가・환경변수 설정
• ~/.bashrc : 비로그인 셸(터미널 열 때마다), alias・프롬프트 커스텀・환경변수
• ~/.bash_profile : 로그인 셸(RHEL/CentOS 계열), ~/.bashrc를 호출하도록 설정
• ~/.bash_history : 항상, 명령어 기록 저장(기본 1000줄)
• ~/.bash_logout : 로그인 셸 종료 시, 정리 작업・로그 기록
시스템 환경설정 파일(/etc/ 아래, 모든 사용자에게 적용)
• /etc/profile : 모든 사용자 로그인 셸 공통 설정, /etc/profile.d/*.sh도 실행
• /etc/bash.bashrc : 모든 사용자 비로그인 셸 공통 설정
• /etc/environment : 모든 세션의 기본 환경변수 설정
• /etc/profile.d/*.sh : 패키지별 환경 설정 스크립트 모음
~/.bashrc 작성 및 적용 예시
alias 설정(자주 쓰는 명령어 단축)
alias ll=“ls -alF”
alias c=“clear”
alias ..=“cd ..”
환경 변수 설정
export EDITOR=vim
export PATH=”PATH”
프롬프트 커스터마이징
PS1=”\u@\h:\w$ “
\u = 사용자명 \h = 호스트명 \w = 현재 경로 $ = $(일반)/#(root)
수정 후 즉시 적용하는 방법
source ~/.bashrc 또는 . ~/.bashrc
8. 정규표현식(Regular Expression, regex)
• 텍스트에서 패턴을 찾거나 대체하기 위한 도구
• 리눅스의 grep, awk, sed, find, vi 등에서 사용
기호별 의미
• . : 임의의 한 문자, 예) a.c → abc, acc, a7c
• • : 앞 문자 0회 이상 반복, 예) ab* → a, ab, abb, abbb
• • : 앞 문자 1회 이상 반복, 예) ab+ → ab, abb(a 혼자는 안됨)
• ? : 앞 문자 0 or 1회, 예) ab? → a, ab
• [] : 문자 집합 중 하나, 예) [abc] → a, b, 또는 c
• [^] : NOT 문자 집합, 예) [^0-9] → 숫자가 아닌 문자
• {n} : 정확히 n번 반복, 예) [0-9]{4} → 숫자 4자리
• ^ : 문자열 시작, 예) ^root → root로 시작하는 줄
• $ : 문자열 끝, 예) bash$ → bash로 끝나는 줄
bash로 끝나는 로그인 셸을 가진 사용자만 출력
awk -F: ‘/’ /etc/passwd
UID가 정확히 4자리인 사용자만 필터링
awk -F: ‘/’ /etc/passwd
사용자 이름이 a 또는 b로 시작하는 사용자
awk -F: ‘$1 ~ /^[ab]/ { print $1 }’ /etc/passwd
9. 시험 핵심 정리 ⭐
파일 관련 단골 출제
• /etc/passwd : 7개 필드, UID 1000번부터 일반 사용자, 실제 암호는 /etc/shadow에
• /etc/shadow : 암호화된 비밀번호 + 패스워드 에이징 정보(MIN/MAX/WARNING/INACTIVE/EXPIRE)
• /etc/group : 그룹 정보, 여기 멤버 목록이 보조 그룹(2차 그룹)
• /etc/gshadow : 그룹 암호 파일, 유닉스에는 없고 리눅스에만 있음
• shadow 암호 형식 : Salt$Hash값(6=SHA-512가 가장 안전)
사용자 명령어 핵심 비교
• adduser = 인터랙티브(대화형), 홈디렉터리 자동 생성
• useradd = 비인터랙티브, 옵션 지정 필요, -m 옵션으로 홈 생성
• userdel -r = 홈디렉터리까지 함께 삭제
• usermod -aG = 보조 그룹 추가(-a 반드시 필요! 없으면 기존 그룹 삭제)
• passwd -x/-n/-w = MAX/MIN/WARNING 설정
• chage -M/-m/-W/-I/-E = 패스워드 에이징 전담 명령(chage -l로 조회)
권한 전환 관련
• sudo 명령 = 현재 사용자 비밀번호, 명령 실행 시만 권한 부여, 가장 안전
• su - = root 비밀번호 필요, 완전한 root 환경으로 전환
• visudo = sudoers 편집 전용 명령(직접 vi로 열면 위험!)
• whoami = EUID 출력(현재 실행 권한의 사용자)
• who am i = UID 출력(원래 로그인한 사용자, su 전환 후에도 변하지 않음)
환경설정 파일
• 로그인 셸 → ~/.profile, ~/.bash_profile 실행
• 비로그인 셸(터미널 열 때) → ~/.bashrc만 실행
• 변경 후 즉시 적용 → source ~/.bashrc 또는 . ~/.bashrc
• 시스템 전체 설정 → /etc/profile(로그인), /etc/bash.bashrc(비로그인)
정규표현식 자주 나오는 패턴
• ^bash = bash로 시작하는 줄 / bash$ = bash로 끝나는 줄
• [0-9]{4} = 숫자 정확히 4자리 / [a-z]+ = 소문자 1개 이상
• [^abc] = a, b, c가 아닌 모든 문자
• awk -F: = 콜론(:)을 구분자로 /etc/passwd 파싱할 때 자주 사용
'운영체제' 카테고리의 다른 글
| [전공 실습 정리] 운영체제 실습 - 패키지 관리·미러 설정·압축과 묶기 (0) | 2026.07.28 |
|---|---|
| [전공 중간고사 정리] 운영체제 – 리눅스 권한 관리 (0) | 2026.07.28 |
| [전공 중간고사 정리] 운영체제 – 리눅스 명령어(파일과 디렉터리) (0) | 2026.07.28 |
| [전공 중간고사 정리] 운영체제 – 가상머신(Virtual Machine) (0) | 2026.07.28 |
| [전공 중간고사 정리] 운영체제 – 운영체제의 이해와 기초 개념 (0) | 2026.07.28 |