리눅스 사용자·그룹 관리와 sudo 권한
9편에서 권한의 "무엇"(rwx)을 봤다면, 이번엔 "누구" — 사용자와 그룹입니다. 그리고 그동안 무심코 쓰던 sudo의 정체도 여기서 밝혀져요.
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라는 텍스트 파일에 한 줄씩 들어 있어요(누구나 읽을 수 있음):
UID(User ID)가 사람 식별 번호예요 — 이름은 보기 좋으라고 붙은 별명이고, 시스템은 번호로 구분합니다. root는 항상 UID 0이고, 우분투에서 처음 만든 사용자는 보통 1000번부터 시작합니다.
그룹이란 — 여러 사용자를 한 번에
사용자가 늘어나면 "이 다섯 명한테 이 폴더 권한을 줘야 해" 같은 일이 생깁니다. 한 명씩 권한 주면 번거롭죠. 그래서 그룹이 있습니다 — 사용자들을 묶어놓고, 권한을 그룹에 한 번 주면 멤버 전원이 받아요. 9편에서 본 ls -l의 "그룹 rwx" 자리가 바로 이걸 위한 거였어요.
여기서 눈여겨볼 게 — groups 출력에 sudo가 보이죠? 그게 "이 사용자는 sudo 명령을 쓸 수 있다"는 표시입니다. (자세한 건 이 글 뒤에서.) 그룹은 자동으로 생기는 것도 있어요 — 사용자를 만들면 보통 같은 이름의 그룹이 따라 생기고(그게 gid), video·plugdev 같은 건 "장치를 쓸 수 있는 권한"을 묶어둔 시스템 그룹입니다.
사용자 만들고 관리하기 — adduser · deluser · passwd
새 사용자를 추가하는 건 한 줄입니다. 우분투에선 adduser(대화형, 친절)를 권합니다 — useradd라는 더 저수준 명령도 있지만 옵션을 일일이 줘야 해서 입문엔 adduser가 편해요.
실제로 혼자 쓰는 노트북에서 사용자를 추가할 일은 많지 않지만, "가족이 같이 쓰는 컴퓨터", "친구한테 잠깐 빌려주기", "서버에 동료 계정 만들기" 같은 상황에서 씁니다. 만든 직후엔 그 사용자가 sudo를 못 써요(일반 사용자니까) — 필요하면 다음 단계에서 권한을 줍니다.
sudo를 쓸 수 있는 사람 — 그것도 그룹이다
드디어 sudo의 정체. 그동안 "관리자 권한으로"라고만 알고 썼지만, 정확히는 — sudo 명령을 쓸 수 있는 건 sudo라는 그룹에 속한 사용자뿐입니다. 우분투 설치할 때 만든 첫 계정은 자동으로 이 그룹에 들어가요(그래서 우리가 sudo apt 같은 걸 쓸 수 있었던 거).
usermod -aG 그룹명 사용자 — 이 패턴이 핵심입니다. sudo뿐 아니라 docker(도커 쓸 권한, 시리즈 26편), www-data 같은 그룹에 넣을 때도 똑같이 써요. 반드시 -aG(소문자 a 포함)를 쓰세요 — -G만 쓰면 "이 그룹들로 교체"라서 기존 그룹들(sudo 포함!)에서 빠져버립니다. 이건 흔한 사고예요.
sudo passwd root 해서 root 계정 켜기" 같은 걸 봐도, 우분투에선 굳이 root 직접 로그인을 켤 이유가 없습니다 — sudo로 충분하고, root 로그인이 막혀 있는 게 보안상 정상이에요. 그리고 자기 자신을 실수로 sudo 그룹에서 빼면(위의 -aG 빼먹는 실수) sudo를 못 써서 다시 추가도 못 하는 곤란한 상황이 됩니다 — 가상 머신이면 스냅샷으로 복구하면 되고, 본 PC면 복구 모드로 들어가야 해서 번거로워요. 그래서 사용자·그룹 실습은 가상 머신 권장.실전 + 정리 — 그룹으로 폴더 공유하기
그룹의 진짜 쓸모를 보여주는 예: "jspark와 bob이 같이 쓰는 공유 폴더 만들기."
이제 jspark와 bob은 /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~5편 입문 묶음 ✔ 6편 파일 명령어 ✔ 7편 텍스트 명령어 ✔ 8편 nano ✔ 9편 권한·chmod ✔
- 10편 — 사용자·그룹 관리 (이 글) ✔
- 11편 — 우분투 apt 사용법 (프로그램 설치·삭제·업데이트 —
apt install/remove/update/upgrade제대로) - 12편 — 파이프·리다이렉션 / 13편 — vim / 14편 — 프로세스 관리 / 15편 — 디스크 관리 …
오늘 할 일: id와 groups를 쳐서 "내가 어떤 그룹들에 있나"를 한 번 보세요(sudo가 있을 거예요). 가상 머신이 있으면 sudo adduser test1로 하나 만들어보고, groups test1로 확인하고, sudo deluser --remove-home test1로 지워보기까지. 만들고 지우는 게 별거 아니라는 걸 손으로 느끼면 충분합니다. 11편에서 만나요. (사용자 관리 명령 전체는 우분투 위키 AddUsersHowto에도 정리돼 있어요.)
우분투·리눅스 입문 시리즈
권한의 "누구"까지 알면, 이제 시스템을 다룰 준비가 됐습니다. 11편 "우분투 apt 사용법"으로 이어집니다.
다음 편은 JUNAI 블로그에서 이어 보세요.