아주 좋은 질문입니다.
리눅스의 사용자 추가(adduser / passwd) 와 웹사이트 회원가입은 겉보기엔 비슷하지만,
동작 계층과 저장 방식이 전혀 다릅니다.
아래에서 내부 동작을 단계별로 비교해 설명드릴게요.
1️⃣ 리눅스 사용자 추가는 “운영체제 계정”adduser kim passwd kim 내부적으로 일어나는 일
리눅스는 OS 차원의 계정 시스템을 사용합니다.
파일역할
| /etc/passwd | 사용자 기본 정보 |
| /etc/shadow | 암호화된 비밀번호 |
| /etc/group | 그룹 정보 |
예시/etc/passwd kim:x:1001:1001:Kim:/home/kim:/bin/bash /etc/shadow kim:$6$randomsalt$hashedpassword:...
✔ 비밀번호는 단방향 해시(SHA-512 등)
✔ 로그인은 PAM → shadow 비교
✔ 시스템 자원 접근 권한과 직접 연결
👉 OS가 직접 관리
2️⃣ 웹사이트 회원가입은 “애플리케이션 계정”
웹에서 회원가입은 리눅스 사용자와 전혀 무관합니다.
아이디 / 비밀번호 입력 → 서버 프로그램(PHP, Java, Python 등)
3️⃣ 웹 회원가입 내부 동작 흐름 (실제 핵심)🔹 ① 사용자가 회원가입 폼 제출<form> id: kim password: 1234 </form>
🔹 ② 서버가 입력값을 받음$id = $_POST['id']; $pw = $_POST['password'];
🔹 ③ 비밀번호를 그대로 저장 ❌ (절대 금지)
대신 해시 처리를 합니다.
$hash = password_hash($pw, PASSWORD_BCRYPT);
🔹 ④ DB에 저장INSERT INTO users (id, password) VALUES ('kim', '$2y$10$abc...');
📌 DB 구조 예시
users -------------------- id | password kim | 해시값
4️⃣ 로그인할 때 내부 동작🔹 입력아이디: kim 비밀번호: 1234 🔹 서버 처리$row = DB에서 kim 조회 password_verify(입력비번, DB에 저장된 해시)
✔ 일치하면 로그인 성공
✔ 불일치하면 실패
👉 원래 비밀번호는 절대 복호화되지 않음
5️⃣ 리눅스 계정 vs 웹 계정 차이 정리
구분리눅스 사용자웹 회원
| 관리 주체 | 운영체제 | 웹 애플리케이션 |
| 저장 위치 | /etc/passwd, shadow | DB (MySQL 등) |
| 비밀번호 | shadow 해시 | 해시(Bcrypt, Argon2) |
| 권한 | 파일, 프로세스 | 서비스 내부 |
| 로그인 방식 | PAM | 세션 / 토큰 |
6️⃣ 웹 로그인 후 “로그인 유지”는 어떻게 되나?✔ 세션 방식
로그인 성공
서버가 세션ID 생성
쿠키에 저장
Set-Cookie: PHPSESSID=abcd1234
✔ 토큰(JWT) 방식로그인 성공 → JWT 발급 → 클라이언트 저장
7️⃣ 한 줄 요약
리눅스 adduser는 OS 계정을 만드는 것이고,
웹 회원가입은 DB에 사용자 레코드를 추가하는 것뿐이다.
비밀번호는 절대 원문 저장이 아니라 해시 비교로 인증한다.
원하시면
중에서 더 깊게 설명해 드릴게요.