목적과 범위
이 문서는 Ubuntu에서 셸 사용자 계정을 생성하고 삭제하는 실무 절차를 다룹니다. 대상은 시스템 관리자, 데브옵스, 헬프데스크 기술자입니다. 기본 명령어 사용법과 보안 권장사항, 검증 체크리스트, 롤백 절차 및 자주 발생하는 오류와 해결책을 포함합니다.
정의: 셸 사용자 — 시스템에 로그인해 셸(터미널)을 통해 명령을 실행할 수 있는 계정.
핵심 개념 한 줄 정의
- adduser: Ubuntu에서 상위 수준의 사용자 생성 스크립트. 사용자 친화적.
- useradd: 유닉스 전통의 저수준 사용자 생성 도구. 세부 옵션 필요.
- deluser / userdel: 사용자 삭제 명령.
- sudo: 비특권 계정에 임시 관리자 권한을 부여하는 메커니즘.
기본 명령 요약
- 사용자 추가(권장): sudo adduser username
- 사용자 추가(SSH 키 설정 포함): sudo adduser username && sudo mkdir -p /home/username/.ssh && sudo sh -c ‘cat > /home/username/.ssh/authorized_keys’ && sudo chown -R username:username /home/username && sudo chmod 700 /home/username/.ssh && sudo chmod 600 /home/username/.ssh/authorized_keys
- 사용자에 sudo 권한 부여: sudo usermod -aG sudo username
- 사용자 삭제(홈 남김): sudo deluser username
- 사용자 삭제(홈 포함): sudo deluser –remove-home username
- 대안(저수준 삭제): sudo userdel -r username
- 계정 잠금: sudo usermod -L username 또는 sudo passwd -l username
- 계정 만료 설정: sudo chage -E YYYY-MM-DD username
새 사용자 추가 단계별 가이드
1) 사전 준비
- 필요한 정보 수집: 사용자 이름, 실명(옵션), SSH 공개키(권장), 필요한 그룹(예: sudo, docker)과 셸(예: /bin/bash).
- 정책 확인: 비밀번호 복잡성, 홈 디렉터리 위치, 계정 템플릿(/etc/skel) 적용 여부.
2) 간단한 추가 (대부분 상황에서 권장)
- 루트이거나 sudo 가능한 계정으로 로그인합니다.
- 다음을 실행합니다:
sudo adduser newuser
- 비밀번호를 묻는 프롬프트에 강력한 비밀번호를 입력합니다. 추가 정보(Full Name 등)는 빈칸으로 넘겨도 됩니다.
- 필요하면 새 사용자를 sudo 그룹에 추가합니다:
sudo usermod -aG sudo newuser
설명: adduser는 useradd보다 상호작용적이며 홈 디렉터리와 초기 설정을 자동으로 처리합니다.
3) SSH 전용(비밀번호 없음) 사용자 생성
SSH 키만 허용하는 계정은 원격 로그인 보안에 유리합니다.
sudo adduser --disabled-password --gecos "" newuser
sudo mkdir -p /home/newuser/.ssh
sudo sh -c 'cat > /home/newuser/.ssh/authorized_keys' <<'KEY'
ssh-rsa AAAA... user@example
KEY
sudo chown -R newuser:newuser /home/newuser
sudo chmod 700 /home/newuser/.ssh
sudo chmod 600 /home/newuser/.ssh/authorized_keys
포인트: –disabled-password는 로컬 비밀번호 로그인을 비활성화합니다. SSH 키를 넣어야 원격 접속이 가능합니다.
4) 계정 템플릿과 셸 지정
- 기본 셸을 /bin/bash 대신 /bin/zsh 등으로 바꾸려면:
sudo usermod -s /bin/zsh newuser
- /etc/skel을 이용해 기본 파일을 사용자 홈으로 복사합니다(보통 adduser가 자동 처리).
5) 테스트 및 검증
- 새 사용자로 전환:
su - newuser
또는 SSH로 접속해 로그인 테스트를 수행합니다. 파일 권한, 홈 디렉터리 소유권, 필요한 그룹 멤버십을 확인하세요.
사용자 삭제 단계별 가이드
삭제는 영구적이므로 신중해야 합니다. 아래는 안전한 삭제 절차입니다.
1) 사전 점검 및 백업
- 사용자 소유 파일 검색(시스템 전체):
sudo find / -uid $(id -u username) -print
- 홈 디렉터리, 메일 스풀, 애플리케이션 데이터 백업 권장:
sudo tar -czf /root/backup-username-home.tar.gz /home/username
- 사용자의 현재 프로세스 확인 및 종료:
sudo pkill -u username
2) 삭제 명령
- 홈을 남기고 계정만 삭제:
sudo deluser username
- 홈을 포함해 삭제:
sudo deluser --remove-home username
대안(저수준 도구):
sudo userdel -r username
주의: userdel 대신 deluser 쓰는 것이 Ubuntu 관습입니다. deluser가 더 친절하게 동작합니다.
3) sudoers와 권한 정리
- visudo로 sudoers 파일을 편집해 삭제한 사용자의 행을 제거합니다:
sudo visudo
파일에서 다음과 같은 행을 삭제하거나 주석 처리하세요:
newuser ALL=(ALL:ALL) ALL
- /etc/sudoers.d/ 디렉터리도 확인하세요. 해당 이름으로 파일이 있을 수 있습니다.
4) 소유권 없는 파일 처리
삭제 후 uid가 남아있는 파일(예: 백업, 로그)을 찾아 소유자를 변경하거나 기록용으로 보관하세요.
sudo find / -nouser -print
sudo chown root:root /path/to/file
5) 잠금 또는 일시 비활성화(완전 삭제가 아닐 때)
- 계정을 비활성화하려면 잠금 사용:
sudo usermod -L username
sudo passwd -l username
- 만료일 설정:
sudo chage -E 2025-12-31 username
보안 권장사항 및 모범 사례
- 최소 권한 원칙을 따르세요. 사용자에게 꼭 필요한 권한만 부여합니다.
- sudo 대신 그룹 기반 권한(예: docker 그룹) 사용을 검토하세요.
- SSH 키 인증을 기본으로 사용하고 비밀번호 로그인을 제한하세요(파일 /etc/ssh/sshd_config에서 PasswordAuthentication no).
- 주기적으로 /etc/sudoers.d/와 /etc/passwd를 감시하여 미등록 권한을 탐지하세요.
- 사용자를 삭제하기 전에 반드시 데이터 백업을 수행하세요.
검사 및 수락 기준
- 새 사용자로 로그인하여 셸 진입이 성공한다.
- 홈 디렉터리의 소유자가 올바르다(chown username:username).
- sudo 권한이 필요한 경우 sudo -l로 확인한다.
- 삭제 시 사용자의 프로세스가 모두 종료되었다.
- 삭제 후 sudoers 파일 및 /etc/sudoers.d/에 해당 항목이 남지 않았다.
역할별 체크리스트
시스템 관리자
- 사용자 정보(이름, 팀, 권한)를 기록
- 홈과 중요 데이터를 백업
- sudoers 정리 및 /etc/sudoers.d 확인
- 시스템 전체에서 소유 파일 검색
데브옵스
- SSH 키 배포 자동화 스크립트 적용
- CI/CD 접근 권한 조정
- 관련 그룹 멤버십 검토
헬프데스크
- 계정 잠금/재활성화 방법 숙지
- 비밀번호 초기화 절차 문서화
- 사용자 요청 기록 유지
테스트 케이스 및 수락 기준 예시
- TC1: adduser로 사용자 생성 후 su - username으로 전환하면 홈으로 이동하고 쉘이 정상 동작해야 함.
- TC2: –disabled-password로 생성한 계정에는 비밀번호 로그인 불가, SSH 키로만 접속 가능해야 함.
- TC3: deluser –remove-home 실행 후 /home/username이 삭제되어야 함.
- TC4: 삭제 후 sudo -l로 더 이상 sudo 권한이 없어야 함.
문제 해결(자주 발생하는 상황)
- 로그인 실패: /var/log/auth.log에서 오류 확인.
- 홈 디렉터리 권한 문제: chown -R username:username /home/username 수행.
- 사용자 이름 충돌: 사용자 이름이 이미 존재하면 adduser가 실패. /etc/passwd를 확인.
- 삭제 후 잔존 파일: find / -nouser -print로 확인, 적절히 처리.
대체 접근법 및 비교
- adduser vs useradd: adduser는 Debian/Ubuntu 친화적이고 자동 설정이 많음. useradd는 더 저수준이며 스크립트화에 유리.
- deluser vs userdel: deluser는 Debian 툴로 편리. userdel은 표준 유닉스 도구.
- 계정 비활성화 vs 삭제: 비활성화는 데이터 보존이 필요할 때 안전. 삭제는 완전 제거가 필요할 때 사용.
소규모 운영 환경용 간단 SOP
- 요청 접수: 사용자명, 팀, 권한 목록 수집.
- adduser로 생성: sudo adduser username
- 권한 부여: 필요한 그룹에 추가(예: sudo, docker)
- SSH 키 등록: authorized_keys 등록
- 확인 기록: 계정 생성 로그를 중앙 기록 시스템에 남김
- 요청자에게 접속 정보 전달
롤백 및 인시던트 대응
- 실수로 삭제했을 경우:
- 즉시 시스템 사용 중지(불필요한 쓰기 방지).
- /root/backup-username-home.tar.gz가 있다면 복원.
- 삭제된 uid의 파일을 찾아 복사.
- 계정 재생성 후 소유자 복원(chown).
의사결정 흐름도
flowchart TD
A[요청: 사용자 추가/삭제?] -->|추가| B[SSH 키 있음?]
B -->|예| C[adduser --disabled-password]
B -->|아니오| D[adduser '비밀번호 설정']
D --> E[필요 시 sudo 그룹 추가]
A -->|삭제| F[데이터 백업 필요?]
F -->|예| G[백업 수행]
F -->|아니오| H[deluser --remove-home 실행]
G --> H
E --> I[테스트와 기록]
H --> I
간단 용어집
- 홈 디렉터리: 사용자의 개인 파일이 저장되는 /home/username 디렉터리.
- UID: 시스템에서 사용자 계정을 식별하는 정수 식별자.
- 스풀(mail spool): 시스템 메일이 저장되는 위치(예: /var/mail).
요약
- adduser는 Ubuntu에서 사용자 생성 시 권장됩니다. SSH 키 사용을 권장하며 비밀번호 로그인을 제한하세요. 사용자 삭제 전에는 반드시 백업과 소유 파일 검사를 수행하고, sudoers 항목을 정리하세요. 계정 잠금은 삭제보다 안전한 대안입니다.
중요: 실제 삭제는 되돌릴 수 없습니다. 삭제 작업 전 반드시 백업을 수행하세요.
저자
편집