📋 사용자 계정 목록 조회 1. /etc/passwd 파일 확인 가장 기본적인 방법으로 모든 사용자 계정 정보가 저장된 파일을 직접 확인합니다.
출력 형식:
username:x:UID:GID:comment:home_directory:shell
예시:
root:x:0:0:root:/root:/bin/bash dongwoo:x:1000:1000:Dongwoo Yang:/home/dongwoo:/bin/bash
2. 일반 사용자만 조회 UID가 1000 이상인 일반 사용자만 필터링하여 조회:
awk -F: '$3 >= 1000 {print $1}' /etc/passwd
또는:
getent passwd | awk -F: '$3 >= 1000 {print $1}'
3. 로그인 가능한 사용자만 조회 실제 쉘이 할당된 사용자만 확인:
grep -v '/nologin\|/false' /etc/passwd
또는:
cat /etc/passwd | grep -E '/bin/(bash|sh|zsh)$'
4. 사용자 목록만 간단히 조회 사용자 이름만 출력:
5. 현재 로그인한 사용자 확인
6. getent 명령 사용 getent passwd getent passwd username
🔑 사용자 비밀번호 변경 1. 자신의 비밀번호 변경
실행 과정:
Changing password for dongwoo. Current password: [현재 비밀번호 입력] New password: [새 비밀번호 입력] Retype new password: [새 비밀번호 재입력] passwd: password updated successfully
2. 다른 사용자의 비밀번호 변경 (root 권한 필요)
예시:
root 권한으로 변경할 때는 현재 비밀번호를 물어보지 않습니다.
3. 비밀번호 정책 확인
4. 비밀번호 만료 설정 sudo passwd -e username sudo chage -M 90 username sudo chage -m 1 username
5. 비밀번호 잠금/잠금 해제 sudo passwd -l username sudo passwd -u username sudo passwd -S username
출력 예시:
username PS 2026-02-12 0 99999 7 -1 (Password set, SHA512 crypt.) username LK 2026-02-12 0 99999 7 -1 (Password locked.)
6. 비밀번호 없이 계정 생성 sudo useradd -m username sudo passwd username
비밀번호 정책 관리 1. PAM을 통한 비밀번호 복잡도 설정 /etc/pam.d/common-password 또는 /etc/pam.d/system-auth 파일 수정:
sudo vi /etc/pam.d/common-password
설정 예시:
# 최소 길이 12자, 최소 1개의 대문자, 소문자, 숫자, 특수문자 포함 password requisite pam_pwquality.so retry=3 minlen=12 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1
2. /etc/login.defs 설정
주요 설정:
PASS_MAX_DAYS 90 # 비밀번호 최대 사용 기간 PASS_MIN_DAYS 1 # 비밀번호 최소 변경 주기 PASS_MIN_LEN 8 # 비밀번호 최소 길이 PASS_WARN_AGE 7 # 만료 경고 기간
사용자 그룹 관리 1. 그룹 목록 조회 모든 그룹 확인:
cat /etc/groupgetent group
출력 형식:
groupname:x:GID:user1,user2,user3
예시:
sudo:x:27:dongwoo,admin docker:x:999:dongwoo developers:x:1001:dongwoo,john,jane
특정 그룹 정보 확인:
2. 사용자가 속한 그룹 확인 현재 사용자의 그룹:
특정 사용자의 그룹:
groups usernameid username
출력 예시:
$ id dongwoo uid=1000(dongwoo) gid=1000(dongwoo) groups=1000(dongwoo),27(sudo),999(docker),1001(developers)
3. 사용자의 주 그룹(Primary Group) 변경 주 그룹 변경:
sudo usermod -g groupname username
예시:
sudo usermod -g developers dongwoo
주의: 주 그룹은 사용자가 파일을 생성할 때 기본적으로 적용되는 그룹입니다.
4. 사용자를 보조 그룹(Secondary Group)에 추가 보조 그룹에 추가 (기존 그룹 유지):
sudo usermod -aG groupname username
중요: -aG 옵션을 사용해야 기존 그룹이 유지됩니다. -G만 사용하면 기존 보조 그룹이 모두 제거됩니다!
예시:
sudo usermod -aG docker dongwoo sudo usermod -aG docker,sudo,developers dongwoo
5. 사용자를 그룹에서 제거 특정 그룹에서 사용자 제거:
sudo gpasswd -d username groupname
예시:
sudo gpasswd -d dongwoo docker
모든 보조 그룹에서 제거:
sudo usermod -G "" username
6. 새 그룹 생성 및 삭제 새 그룹 생성:
sudo groupadd groupname sudo groupadd -g 1500 developers
그룹 삭제:
그룹 이름 변경:
sudo groupmod -n newname oldname
7. 그룹 즉시 적용 그룹 변경 후 즉시 적용하려면:
방법 1: 새로운 쉘 시작
방법 2: 재로그인
방법 3: su 명령 사용
8. 실무 예제 웹 개발자 계정 설정:
sudo groupadd developers sudo usermod -aG www-data,developers dongwoo groups dongwooid dongwoo
Docker 사용 권한 부여:
sudo usermod -aG docker dongwoo newgrp docker docker ps
프로젝트별 그룹 관리:
sudo groupadd project-alpha sudo usermod -aG project-alpha dongwoo sudo usermod -aG project-alpha john sudo usermod -aG project-alpha jane sudo mkdir -p /var/projects/alpha sudo chgrp project-alpha /var/projects/alpha sudo chmod 770 /var/projects/alpha sudo chmod g+s /var/projects/alpha ls -ld /var/projects/alpha
출력 예시:
drwxrws--- 2 root project-alpha 4096 Feb 12 10:00 /var/projects/alpha
9. 그룹 권한 확인 파일/디렉토리의 그룹 소유권 확인:
ls -l filenamels -ld directoryname
특정 그룹이 소유한 파일 찾기:
find /path -group groupname
특정 사용자의 모든 파일 찾기:
find /path -user username
10. 주요 시스템 그룹 Ubuntu/Debian:
sudo: sudo 권한을 가진 사용자
adm: 시스템 로그 읽기 권한
www-data: 웹 서버 그룹
docker: Docker 사용 권한
dialout: 시리얼 포트 접근
plugdev: USB 장치 접근
lxd: LXD 컨테이너 관리
RHEL/CentOS:
wheel: sudo 권한을 가진 사용자
apache: 웹 서버 그룹
nginx: Nginx 웹 서버
docker: Docker 사용 권한
11. 그룹 관리 주의사항 1. -G와 -aG의 차이 sudo usermod -G docker dongwoo sudo usermod -aG docker dongwoo
2. 그룹 변경 후 재로그인 그룹 변경사항은 새로운 로그인 세션에만 적용됩니다. 현재 세션에서는 newgrp 명령을 사용하거나 재로그인이 필요합니다.
3. 주 그룹 변경 시 주의 주 그룹을 변경하면 사용자가 생성하는 새 파일의 그룹 소유권이 변경됩니다.
4. 시스템 그룹 삭제 금지 시스템이 사용하는 그룹(예: root, daemon, sys 등)은 절대 삭제하면 안 됩니다.
보안 팁 1. 강력한 비밀번호 생성 openssl rand -base64 16 pwgen 16 1
2. sudo 권한 확인 getent group sudo getent group wheel sudo -l -U username
3. 사용자 활동 감사
실무 예제 새 사용자 생성 및 초기 비밀번호 설정 sudo useradd -m -s /bin/bash newuser sudo passwd newuser sudo passwd -e newuser sudo usermod -aG sudo newuser sudo usermod -aG wheel newuser
휴면 계정 관리 sudo lastlog -b 30 sudo usermod -L -e 1 username sudo usermod -U -e '' username
대량 사용자 비밀번호 변경 while read user; do sudo passwd -e "$user " done < users.txt
주의사항
root 계정 관리 : root 계정의 직접 로그인을 비활성화하고 sudo를 통한 권한 상승을 권장합니다.
비밀번호 복잡도 : 조직의 보안 정책에 맞는 비밀번호 정책을 설정하세요.
정기 감사 : 주기적으로 사용자 계정 목록을 검토하고 불필요한 계정은 삭제하세요.
백업 : 사용자 계정 변경 전 /etc/passwd, /etc/shadow, /etc/group 파일을 백업하세요.
sudo cp /etc/passwd /etc/passwd.bak sudo cp /etc/shadow /etc/shadow.bak sudo cp /etc/group /etc/group.bak