우분투 · 리눅스 입문 — 10편

리눅스 사용자·그룹 관리와 sudo 권한

9편에서 권한의 "무엇"(rwx)을 봤다면, 이번엔 "누구" — 사용자와 그룹입니다. 그리고 그동안 무심코 쓰던 sudo의 정체도 여기서 밝혀져요.

2026년 5월 12일 · 약 8분 · 26편 입문 시리즈 10편

터미널에 id 명령 출력과 사용자·그룹 정보가 보이는 화면 — 리눅스 사용자·그룹 관리를 상징하는 일러스트

9편에서 권한 표기(rwx)를 읽고 chmod로 바꾸는 걸 배웠죠. 그런데 권한은 항상 "누구에게"가 따라옵니다 — 소유자에게, 그룹에게, 기타에게. 그 "누구"가 바로 이번 주제입니다: 사용자(user)와 그룹(group). 리눅스는 처음부터 "여러 사람이 한 컴퓨터를 같이 쓴다"는 전제로 만들어졌고, 혼자 쓰는 노트북에서도 그 구조는 그대로 살아 있어요.

이 글에서 다룰 것 — 멀티유저 모델과 root의 정체, /etc/passwd·/etc/group 한 줄 읽기, adduser·deluser·passwd로 사용자 관리하기, usermod -aG로 그룹에 넣기, 그리고 "sudo는 사실 sudo 그룹의 멤버십이다"라는, 그동안 무심코 쓰던 명령의 정체. 26편 입문 시리즈 10편. 사용자 추가 같은 건 sudo가 필요하지만, 다 안전하게 되돌릴 수 있는 것들입니다.

준비물 — 우분투 + 터미널. /etc/passwd 같은 건 읽기만(누구나 볼 수 있어요). 사용자 추가·삭제 실습은 가상 머신을 권장합니다 — 본 PC에서도 안전하지만, 가상 머신이면 마음이 더 편하죠.

왜 사용자가 여럿인가 — 멀티유저와 root

윈도우도 사용자 계정이 있지만, 리눅스는 그게 훨씬 근본적입니다. 모든 파일·프로세스에 "주인"이 있고(9편에서 본 그 소유자), 그 주인이 누구냐에 따라 할 수 있는 게 달라져요. 핵심 등장인물 둘:

  • 일반 사용자 — 우분투 설치할 때 만든 그 계정(예: jspark). 자기 홈 폴더(/home/jspark) 안에선 자유롭지만, 시스템 영역(/etc, /usr 등)은 함부로 못 건드림.
  • root (슈퍼유저) — 모든 권한을 가진 관리자 계정. 권한 검사를 통과하지 않습니다 — 뭐든 할 수 있어요(rm -rf / 포함… 그래서 위험). 우분투에선 보안상 root로 직접 로그인하는 게 기본적으로 막혀 있고, 대신 필요할 때만 sudo로 잠깐 root 권한을 빌립니다.

사용자 정보는 /etc/passwd라는 텍스트 파일에 한 줄씩 들어 있어요(누구나 읽을 수 있음):

$ cat /etc/passwd | grep jspark jspark:x:1000:1000:Jun Park:/home/jspark:/bin/bash 사용자명 : x : UID : GID : 설명 : 홈 폴더 : 로그인 셸 (x는 비번이 /etc/shadow에 따로 있다는 뜻. UID 1000~ = 일반 사용자, root는 UID 0)

UID(User ID)가 사람 식별 번호예요 — 이름은 보기 좋으라고 붙은 별명이고, 시스템은 번호로 구분합니다. root는 항상 UID 0이고, 우분투에서 처음 만든 사용자는 보통 1000번부터 시작합니다.

그룹이란 — 여러 사용자를 한 번에

사용자가 늘어나면 "이 다섯 명한테 이 폴더 권한을 줘야 해" 같은 일이 생깁니다. 한 명씩 권한 주면 번거롭죠. 그래서 그룹이 있습니다 — 사용자들을 묶어놓고, 권한을 그룹에 한 번 주면 멤버 전원이 받아요. 9편에서 본 ls -l의 "그룹 rwx" 자리가 바로 이걸 위한 거였어요.

$ id uid=1000(jspark) gid=1000(jspark) groups=1000(jspark),27(sudo),44(video),... ← 내가 누구고(uid), 기본 그룹은 뭐고(gid), 어떤 그룹들에 속해 있는지(groups) $ groups jspark sudo video plugdev ... ← 내가 속한 그룹 이름만 간단히 $ cat /etc/group | grep sudo sudo:x:27:jspark ← 그룹명 : x : GID : 멤버 목록. "jspark가 sudo 그룹에 들어 있다"는 뜻

여기서 눈여겨볼 게 — groups 출력에 sudo가 보이죠? 그게 "이 사용자는 sudo 명령을 쓸 수 있다"는 표시입니다. (자세한 건 이 글 뒤에서.) 그룹은 자동으로 생기는 것도 있어요 — 사용자를 만들면 보통 같은 이름의 그룹이 따라 생기고(그게 gid), video·plugdev 같은 건 "장치를 쓸 수 있는 권한"을 묶어둔 시스템 그룹입니다.

사용자 만들고 관리하기 — adduser · deluser · passwd

새 사용자를 추가하는 건 한 줄입니다. 우분투에선 adduser(대화형, 친절)를 권합니다 — useradd라는 더 저수준 명령도 있지만 옵션을 일일이 줘야 해서 입문엔 adduser가 편해요.

$ sudo adduser bob ← bob 계정 생성. 비밀번호와 이름 등을 물어봄. 홈 폴더(/home/bob)도 자동 생성 $ sudo passwd bob ← bob의 비밀번호 바꾸기 (본인이 자기 거 바꿀 땐 그냥 'passwd') $ sudo deluser bob ← bob 계정 삭제 (홈 폴더까지 지우려면: sudo deluser --remove-home bob)

실제로 혼자 쓰는 노트북에서 사용자를 추가할 일은 많지 않지만, "가족이 같이 쓰는 컴퓨터", "친구한테 잠깐 빌려주기", "서버에 동료 계정 만들기" 같은 상황에서 씁니다. 만든 직후엔 그 사용자가 sudo를 못 써요(일반 사용자니까) — 필요하면 다음 단계에서 권한을 줍니다.

sudo를 쓸 수 있는 사람 — 그것도 그룹이다

드디어 sudo의 정체. 그동안 "관리자 권한으로"라고만 알고 썼지만, 정확히는 — sudo 명령을 쓸 수 있는 건 sudo라는 그룹에 속한 사용자뿐입니다. 우분투 설치할 때 만든 첫 계정은 자동으로 이 그룹에 들어가요(그래서 우리가 sudo apt 같은 걸 쓸 수 있었던 거).

$ groups bob bob : bob ← bob은 아직 sudo 그룹에 없음 → sudo 못 씀 $ sudo usermod -aG sudo bob ← bob을 sudo 그룹에 추가. -aG = "기존 그룹 유지하면서(append) 그룹에 넣기" ⚠️ -a 빼고 'usermod -G sudo bob' 하면 다른 그룹에서 빠짐! 항상 -aG로 $ groups bob bob : bob sudo ← 이제 bob도 sudo 사용 가능 (bob이 다시 로그인하면 적용)

usermod -aG 그룹명 사용자 — 이 패턴이 핵심입니다. sudo뿐 아니라 docker(도커 쓸 권한, 시리즈 26편), www-data 같은 그룹에 넣을 때도 똑같이 써요. 반드시 -aG(소문자 a 포함)를 쓰세요 — -G만 쓰면 "이 그룹들로 교체"라서 기존 그룹들(sudo 포함!)에서 빠져버립니다. 이건 흔한 사고예요.

주의 — 절대 하지 마세요: 인터넷에서 "sudo passwd root 해서 root 계정 켜기" 같은 걸 봐도, 우분투에선 굳이 root 직접 로그인을 켤 이유가 없습니다 — sudo로 충분하고, root 로그인이 막혀 있는 게 보안상 정상이에요. 그리고 자기 자신을 실수로 sudo 그룹에서 빼면(위의 -aG 빼먹는 실수) sudo를 못 써서 다시 추가도 못 하는 곤란한 상황이 됩니다 — 가상 머신이면 스냅샷으로 복구하면 되고, 본 PC면 복구 모드로 들어가야 해서 번거로워요. 그래서 사용자·그룹 실습은 가상 머신 권장.

실전 + 정리 — 그룹으로 폴더 공유하기

그룹의 진짜 쓸모를 보여주는 예: "jsparkbob이 같이 쓰는 공유 폴더 만들기."

$ sudo groupadd team ← 'team'이라는 그룹 새로 만들기 $ sudo usermod -aG team jspark $ sudo usermod -aG team bob ← 두 사람을 team 그룹에 추가 $ sudo mkdir /srv/shared $ sudo chown :team /srv/shared $ sudo chmod 770 /srv/shared ← 폴더를 team 그룹 소유로, 그룹에 rwx(7), 기타는 0 → team 멤버만 사용

이제 jsparkbob/srv/shared에서 자유롭게 파일을 주고받고, 다른 사람은 못 들어옵니다. 9편(권한)과 10편(사용자·그룹)이 여기서 만나는 거예요 — "누구"(그룹)에게 "무엇을"(rwx) 준다.

오늘의 정리: 리눅스는 멀티유저 — root(UID 0, 전능, 직접 로그인은 막힘)와 일반 사용자(UID 1000~). 사용자 정보 = /etc/passwd, 그룹 = /etc/group, 내 정보 확인 = id·groups. 사용자 추가 = sudo adduser 이름, 비번 = passwd, 삭제 = sudo deluser. 그룹에 넣기 = sudo usermod -aG 그룹 사용자(반드시 -aG!). sudo를 쓸 수 있는 건 sudo 그룹 멤버뿐. 그룹 + chown :그룹 + chmod 770으로 폴더 공유.

시리즈 흐름

  1. 1~5편 입문 묶음 ✔   6편 파일 명령어 ✔   7편 텍스트 명령어 ✔   8편 nano ✔   9편 권한·chmod ✔
  2. 10편 — 사용자·그룹 관리 (이 글) ✔
  3. 11편 — 우분투 apt 사용법 (프로그램 설치·삭제·업데이트 — apt install/remove/update/upgrade 제대로)
  4. 12편 — 파이프·리다이렉션 / 13편 — vim / 14편 — 프로세스 관리 / 15편 — 디스크 관리 …

오늘 할 일: idgroups를 쳐서 "내가 어떤 그룹들에 있나"를 한 번 보세요(sudo가 있을 거예요). 가상 머신이 있으면 sudo adduser test1로 하나 만들어보고, groups test1로 확인하고, sudo deluser --remove-home test1로 지워보기까지. 만들고 지우는 게 별거 아니라는 걸 손으로 느끼면 충분합니다. 11편에서 만나요. (사용자 관리 명령 전체는 우분투 위키 AddUsersHowto에도 정리돼 있어요.)

우분투·리눅스 입문 시리즈

권한의 "누구"까지 알면, 이제 시스템을 다룰 준비가 됐습니다. 11편 "우분투 apt 사용법"으로 이어집니다.

다음 편은 JUNAI 블로그에서 이어 보세요.

© 2026 JUNAI · 우분투·리눅스 입문 시리즈 10편 · 본 글은 2026년 5월 12일 기준으로 작성되었습니다.

© 2026 주나이테크(주) @JUNAITECH