기술 가이드

Ubuntu에서 셸 사용자 추가 및 삭제

6 min read 시스템 관리 업데이트됨 19 Oct 2025
Ubuntu 셸 사용자 추가/삭제 가이드
Ubuntu 셸 사용자 추가/삭제 가이드

목적과 범위

이 문서는 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) 간단한 추가 (대부분 상황에서 권장)

  1. 루트이거나 sudo 가능한 계정으로 로그인합니다.
  2. 다음을 실행합니다:
sudo adduser newuser
  1. 비밀번호를 묻는 프롬프트에 강력한 비밀번호를 입력합니다. 추가 정보(Full Name 등)는 빈칸으로 넘겨도 됩니다.
  2. 필요하면 새 사용자를 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

  1. 요청 접수: 사용자명, 팀, 권한 목록 수집.
  2. adduser로 생성: sudo adduser username
  3. 권한 부여: 필요한 그룹에 추가(예: sudo, docker)
  4. SSH 키 등록: authorized_keys 등록
  5. 확인 기록: 계정 생성 로그를 중앙 기록 시스템에 남김
  6. 요청자에게 접속 정보 전달

롤백 및 인시던트 대응

  • 실수로 삭제했을 경우:
    1. 즉시 시스템 사용 중지(불필요한 쓰기 방지).
    2. /root/backup-username-home.tar.gz가 있다면 복원.
    3. 삭제된 uid의 파일을 찾아 복사.
    4. 계정 재생성 후 소유자 복원(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 항목을 정리하세요. 계정 잠금은 삭제보다 안전한 대안입니다.

중요: 실제 삭제는 되돌릴 수 없습니다. 삭제 작업 전 반드시 백업을 수행하세요.

공유하기: X/Twitter Facebook LinkedIn Telegram
저자
편집

유사한 자료

Debian 11에 Podman 설치 및 사용하기
컨테이너

Debian 11에 Podman 설치 및 사용하기

Apt-Pinning 간단 소개 — Debian 패키지 우선순위 설정
시스템 관리

Apt-Pinning 간단 소개 — Debian 패키지 우선순위 설정

OptiScaler로 FSR 4 주입: 설치·설정·문제해결 가이드
그래픽 가이드

OptiScaler로 FSR 4 주입: 설치·설정·문제해결 가이드

Debian Etch에 Dansguardian+Squid(NTLM) 구성
네트워크

Debian Etch에 Dansguardian+Squid(NTLM) 구성

안드로이드 SD카드 설치 오류(Error -18) 완전 해결
안드로이드 오류

안드로이드 SD카드 설치 오류(Error -18) 완전 해결

KNetAttach로 원격 네트워크 폴더 연결하기
네트워킹

KNetAttach로 원격 네트워크 폴더 연결하기