개요
Linux는 다중 사용자 환경을 지원하는 운영체제이며, 사용자 관리(user management)는 시스템 보안과 자원 관리의 핵심이다. 이 글에서는 UID/GID 기반 식별 체계, 계정·그룹 생명주기 관리, 권한 상승(su·sudo), PAM 인증, 보안·감사까지 실무에 필요한 Linux 사용자 관리를 한곳에 정리한다.
대상 독자: 서버/데스크톱 리눅스 관리자, DevOps·SRE, 리눅스 입문 후 계정·권한을 다지고 싶은 개발자.
사용자 정보가 저장되는 위치
Linux에서 사용자·그룹 정보는 다음 파일에 저장된다.
| 파일 | 역할 |
|---|---|
/etc/passwd | 사용자 계정 정보(로그인명, UID, GID, 홈, 셸 등). 비밀번호 필드는 x로 표기되며 실제 해시는 /etc/shadow에 있음 |
/etc/shadow | 암호화된 비밀번호, 마지막 변경일, 만료·경고·비활성 기간 등(root만 읽기 가능) |
/etc/group | 그룹명, GID, 보조 그룹 멤버 목록 |
/etc/gshadow | 그룹 비밀번호·관리자 등 보안 정보(선택) |
/etc/passwd의 한 행 형식은 username:x:UID:GID:comment:home_directory:shell이다. 배포판에 따라 일반 사용자 UID는 1000번대부터, 시스템 계정은 1–999(또는 201–999) 범위를 사용한다.
사용자 생명주기: 생성·비밀번호·수정·삭제·조회
계정 생성 (useradd)
새 사용자 계정을 만들 때는 useradd를 사용한다. -m으로 홈 디렉터리 생성, -s로 셸, -g로 기본 그룹, -G로 보조 그룹을 지정할 수 있다.
| |
Debian/Ubuntu는 adduser를 쓰는 경우가 많고, useradd -m 또는 /etc/login.defs의 CREATE_HOME으로 홈 생성을 제어한다. 기본값은 /etc/default/useradd, /etc/login.defs에서 읽는다.
비밀번호 설정·정책 (passwd, chage)
| |
비밀번호 정책은 /etc/login.defs와 PAM(/etc/pam.d/passwd, pam_pwquality 등)으로 강화할 수 있다.
계정 수정 (usermod)
| |
그룹 변경은 로그아웃 후 재로그인해야 적용된다. -aG를 빼고 -G만 쓰면 기존 보조 그룹이 덮어씌워지므로 주의한다.
계정 삭제 (userdel)
| |
삭제 전에는 해당 사용자가 로그아웃되어 있고 실행 중인 프로세스가 없어야 한다.
사용자 정보 조회
| |
그룹 관리
각 사용자는 기본 그룹(primary group) 하나에 반드시 속하고, **보조 그룹(secondary group)**은 여러 개 가질 수 있다(일반적으로 15개까지).
| |
/etc/group 형식: groupname:x:GID:member1,member2,...
권한 관리: chmod, chown, setgid, ACL
파일·디렉터리 권한은 소유자(u)·그룹(g)·기타(o) 3계층으로, 읽기(r=4)·쓰기(w=2)·실행(x=1) 조합으로 부여한다.
| |
**setgid(2000)**를 디렉터리에 걸면, 그 안에 새로 만들어진 파일·디렉터리가 부모의 그룹을 상속해 협업 디렉터리에 유용하다. ACL로 사용자·그룹별 세밀한 권한을 주려면 setfacl·getfacl을 사용한다.
권한 상승: su와 sudo
su (substitute user)
다른 사용자(주로 root)로 전환할 때 쓴다. -(또는 -l)를 주면 대상 사용자의 로그인 환경(.profile 등)이 로드된다.
| |
- 없이 su root만 쓰면 현재 사용자 환경(PATH 등)이 유지되어 보안상 불리할 수 있으므로, root 전환 시에는 su - 사용을 권장한다. 로그는 /var/log/secure(RHEL 계열) 또는 /var/log/auth.log(Debian 계열)에 남는다.
sudo (superuser do)
특정 명령만 root(또는 지정 사용자) 권한으로 실행하도록 위임하는 방식이다. /etc/sudoers를 visudo로 편집해 설정한다.
| |
wheel 그룹에 관리자를 넣고 그룹 단위로 sudo를 주는 구성이 일반적이다. Defaults rootpw 등으로 root 비밀번호 대신 본인 비밀번호를 쓰게 할 수 있다.
사용자 관리 흐름 요약 (Mermaid)
다음 다이어그램은 계정 생성부터 권한 사용까지의 흐름을 요약한다.
flowchart LR
subgraph createGroup["계정 생성"]
userAdd["useradd"]
passwdCmd["passwd"]
userAdd --> passwdCmd
end
subgraph modifyGroup["계정 수정"]
usermodCmd["usermod"]
chageCmd["chage"]
usermodCmd --> chageCmd
end
subgraph accessGroup["접근 및 권한"]
loginStep["로그인"]
suSudo["su / sudo"]
loginStep --> suSudo
end
createGroup --> modifyGroup
modifyGroup --> accessGroup
보안 고려사항
- root 직접 로그인 차단
SSH의 경우PermitRootLogin no(sshd_config), 콘솔 로그인도 제한하고, sudo로만 권한 상승하도록 한다. - 강한 비밀번호 정책
/etc/login.defs, PAM(pam_pwquality 등)으로 최소 길이·복잡성·만료 주기를 설정한다. - 최소 권한 원칙
필요한 명령만 sudo로 허용하고, 가능하면 일반 사용자로 동작하게 한다. - 계정·세션 관리
불필요한 계정은 제거하고,TMOUT등으로 비활성 시 자동 로그아웃을 둘 수 있다. - PAM 활용
로그인·sudo·passwd 등 인증 경로를/etc/pam.d/에서 모듈(required, requisite, sufficient 등)로 조합해 2FA·비밀번호 강도 검사 등을 적용한다.
감사 및 모니터링
- 인증 로그
/var/log/secure(RHEL) 또는/var/log/auth.log(Debian)에서 로그인·su·sudo 이력을 확인한다. - 로그인 기록
last,lastb로 성공/실패 로그인을 점검한다. - auditd
커널 수준에서passwd수정,useradd실행 등 중요 이벤트를 규칙으로 남기고ausearch로 검색할 수 있다.
결론
Linux 사용자 관리는 /etc/passwd, /etc/shadow, /etc/group과 useradd·usermod·userdel·passwd·chage·su·sudo 같은 기본 도구, 그리고 PAM·auditd를 함께 이해하면 실무에서 계정·권한·보안을 체계적으로 다룰 수 있다. 최소 권한 원칙과 정기적인 계정·로그 검토를 습관화하는 것이 좋다.
참고 문헌
- Red Hat Enterprise Linux 9 - 사용자 계정 관리 시작하기 — RHEL 9 사용자·그룹 관리 공식 문서.
- Rocky Linux - 사용자 관리 — 그룹·사용자 명령, passwd/shadow/group 파일, chown·gpasswd·su 등 상세 가이드.
- Amazon EC2 - Linux 인스턴스에서 시스템 사용자 관리 — EC2 Linux에서 사용자 추가·제거 및 SSH 키 설정.
![[Linux] Crontab 사용법 — 예약 작업 편집·스케줄·로그·백업](/post/2023-09-21-crontab/tmp_wordcloud_hu_778a513e8f326e68.webp)
![[RPM] Spec 파일에서 주석과 매크로 동시 사용 시 주의사항](/post/2021-11-24-rpm-spec-comments/wordcloud_hu_6d09ac09623081c7.webp)