useradd와 adduser 차이

useradd와 adduser 명령어는 리눅스에서 사용자 계정을 생성하는 데 사용되지만, 몇 가지 중요한 차이점이 있습니다. useradd는 기본적인 사용자 계정만 생성하고, 홈 디렉토리 생성, 비밀번호 설정, 쉘 설정 등을 사용자가 직접 해야 합니다. 반면, adduser는 좀 더 사용자 친화적으로, 계정 생성 시 필요한 정보를 대화형으로 입력받고, 기본적인 설정들을 자동으로 처리해줍니다. 즉, adduser는 useradd를 기반으로 하여 사용자에게 더 편리한 인터페이스를 제공하는 래퍼(wrapper) 명령어라고 할 수 있습니다. useradd 명령어의 특징:

  • 저수준 명령어:
    시스템에서 사용자를 추가하는 기본적인 기능만을 제공합니다.
  • 옵션 사용:
    모든 설정을 옵션으로 지정해야 합니다. 예를 들어, 홈 디렉토리 생성, 초기 비밀번호 설정, 기본 쉘 설정 등을 직접 지정해야 합니다.
  • 자동 설정 없음:홈 디렉토리나 초기 설정 파일 등을 자동으로 생성하지 않습니다. 

adduser 명령어의 특징:

  • 사용자 친화적:
    계정 생성 시 필요한 정보를 대화형으로 입력받아 사용자가 쉽게 계정을 생성할 수 있도록 돕습니다.
  • 자동 설정:
    홈 디렉토리 생성, 비밀번호 설정, 기본 쉘 설정 등을 자동으로 처리해줍니다.
  • 래퍼 명령어:
    useradd를 기반으로 사용자에게 편리한 인터페이스를 제공합니다.
  • 대부분의 배포판에서 기본 제공:Ubuntu, Debian과 같은 많은 리눅스 배포판에서 기본적으로 제공됩니다. 

예시:useradd를 사용하여 계정을 생성하려면 다음과 같이 다양한 옵션을 사용해야 합니다:

코드

sudo useradd -m -d /home/testuser -s /bin/bash testuser

-m 옵션은 홈 디렉토리를 생성하고, -d 옵션은 홈 디렉토리 경로를 지정하며, -s 옵션은 기본 쉘을 지정합니다. adduser를 사용하여 계정을 생성하려면 간단하게 다음과 같이 입력하면 됩니다:

코드

sudo adduser testuser

이후에는 adduser가 사용자에게 필요한 정보를 대화형으로 질문하여 계정을 생성합니다. 

결론:
useradd는 기본적인 사용자 계정 생성 명령어이고, adduser는 useradd를 기반으로 사용자에게 더 편리한 인터페이스를 제공하는 래퍼 명령어입니다. 특별한 이유가 없다면 adduser를 사용하여 사용자 계정을 생성하는 것이 더 편리하고 권장됩니다. 


 

GI

 

useradd와 adduser는 둘 다 리눅스에서 사용자를 생성하는 명령어이지만, 몇 가지 중요한 차이점이 있습니다. useradd는 저수준(low-level)의 기본 명령어인 반면, adduser는 useradd를 기반으로 한 고수준(high-level)의 셸 스크립트입니다.


useradd

useradd는 사용자를 생성하는 데 필요한 최소한의 작업만 수행하는 기본 명령어입니다. 이 명령어는 다음과 같은 특징을 가집니다.

  • 기본 기능: 새로운 사용자를 생성하고, /etc/passwd, /etc/shadow, /etc/group 파일에 해당 정보를 추가합니다.
  • 비대화형: 별도의 질문 없이 명령어에 지정된 옵션에 따라 사용자를 생성합니다. 따라서 스크립트에서 자동화된 사용자 생성이 필요할 때 주로 사용됩니다.
  • 수동 설정 필요: 홈 디렉터리, 사용자 셸, 그룹 등 대부분의 속성을 사용자가 직접 옵션을 통해 지정해야 합니다. 예를 들어, -m 옵션을 사용하지 않으면 홈 디렉터리가 생성되지 않습니다.
  • 일반적인 사용법: sudo useradd [옵션] [사용자이름]

adduser

adduser는 useradd의 기능을 포괄하는 셸 스크립트로, 사용자가 더 편리하게 계정을 생성할 수 있도록 도와줍니다. 이 명령어는 다음과 같은 특징을 가집니다.

  • 대화형: 사용자를 생성하는 과정에서 홈 디렉터리, 전체 이름, 암호 등을 대화식으로 물어봅니다.
  • 자동 설정: 기본적으로 홈 디렉터리를 생성하고, 기본 셸을 할당하며, 사용자 이름과 같은 이름의 그룹을 자동으로 만듭니다.
  • 편리성: useradd에 비해 사용자가 설정해야 할 부분이 적어, 초보자가 사용하기에 더 편리합니다.
  • 일반적인 사용법: sudo adduser [사용자이름]

핵심 차이점 요약

특징 useradd adduser
명령어 종류 저수준 바이너리 고수준 셸 스크립트
작동 방식 비대화형 대화형
자동화 스크립트에서 사용하기 용이 수동 사용자 생성에 적합
자동 설정 수동으로 옵션 지정 필요 홈 디렉터리, 그룹 등을 자동 생성
주로 사용되는 시스템 RHEL, CentOS 등 Debian, Ubuntu 등

 


 

useradd 명령어를 사용하여 UID, GID, 셸을 지정해 계정을 추가하는 예시와 /etc/passwd 파일에서의 결과는 다음과 같습니다.


useradd 명령어 사용 예시

useradd는 기본적으로 홈 디렉터리를 생성하지 않으므로 -m 옵션을 함께 사용해 주어야 합니다.

Bash
 
sudo useradd -u 2000 -g 500 -s /bin/bash -m user2000

위 명령어의 각 옵션은 다음과 같습니다.

  • sudo: 관리자 권한으로 명령어를 실행합니다.
  • useradd: 사용자를 추가하는 명령어입니다.
  • -u 2000: **사용자 ID (UID)**를 2000으로 지정합니다.
  • -g 500: **기본 그룹 ID (GID)**를 500으로 지정합니다.
  • -s /bin/bash: 로그인 셸을 /bin/bash로 지정합니다.
  • -m: 사용자의 홈 디렉터리(home/user2000)를 생성합니다.
  • user2000: 추가할 사용자의 이름입니다.

/etc/passwd 파일의 결과

위 명령어를 실행한 후, cat /etc/passwd 명령어를 입력하면 파일의 마지막 부분에 새로 추가된 user2000 계정 정보가 다음과 같이 나타납니다.

Bash
 
user2000:x:2000:500::/home/user2000:/bin/bash

이 계정 정보는 :(콜론)을 기준으로 다음과 같은 항목들로 구성됩니다.

  1. user2000: 사용자 이름
  2. x: 암호화된 비밀번호 (실제 암호는 /etc/shadow 파일에 저장)
  3. 2000: UID (사용자 ID)
  4. 500: GID (기본 그룹 ID)
  5. (비어있음): GECOS (사용자 전체 이름, 전화번호 등) 필드
  6. /home/user2000: 홈 디렉터리 경로
  7. /bin/bash: 로그인 셸 경로

 


 

 

 

sudo (SuperUser Do) 🦸‍♂️

sudo는 리눅스에서 일반 사용자가 관리자(root) 권한으로 명령어를 실행할 수 있게 해주는 명령어입니다. 기본적으로 시스템 관리자(root)만 실행할 수 있는 명령어(예: 패키지 설치, 시스템 설정 변경)를, sudo를 사용하면 일반 사용자도 자신의 비밀번호를 입력하여 임시로 root 권한을 획득해 실행할 수 있습니다.

  • 사용법: sudo [실행할 명령어]
  • 주요 특징:
    • 임시 권한: sudo를 통해 실행된 명령어만 root 권한을 가지며, 사용자의 기본 셸(shell) 권한은 변하지 않습니다.
    • 로그 기록: sudo를 사용한 모든 기록은 /var/log/auth.log 등에 남으므로, 누가 어떤 관리자 명령어를 실행했는지 추적할 수 있습니다.
    • 세션 유지: 한 번 비밀번호를 입력하면 일정 시간(기본 15분) 동안은 다시 비밀번호를 입력하지 않아도 sudo 명령을 사용할 수 있습니다.

su (Switch User) 🔄

su는 다른 사용자로 전환하는 명령어입니다. 주로 su만 입력하여 root 사용자로 전환하는 데 사용됩니다.

  • 사용법: su [전환할 사용자명]
  • 주요 특징:
    • 영구 권한: su 명령으로 root로 전환하면, 셸 전체가 root 권한으로 바뀌고 exit 명령을 입력하기 전까지 root 권한이 유지됩니다.
    • root 비밀번호 필요: su를 통해 root로 전환하려면 root 계정의 비밀번호를 알아야 합니다. (이것이 sudo와의 가장 큰 차이점입니다.)
    • 보안 위험: root 계정의 비밀번호를 여러 사람이 공유하게 되므로 보안상 취약할 수 있습니다.

sudo vs. su 비교

특징 sudo su
권한 획득 명령어 1회만 root 권한으로 실행 셸 전체를 다른 사용자로 전환
필요 비밀번호 자신의 비밀번호 전환할 사용자의 비밀번호<br>(주로 root 비밀번호)
보안성 우수 (기록이 남고, 비밀번호 공유 불필요) 취약 (root 비밀번호 공유 가능성)
사용 편의성 복잡한 관리 작업에 부적합 여러 관리 명령어를 연속으로 실행할 때 편리
Sheets로 내보내기

결론: 어떤 명령어를 사용해야 할까?

현대 리눅스 시스템에서는 sudo를 사용하는 것이 권장됩니다.

  • 보안: sudo는 root 비밀번호를 공유하지 않아도 되며, 모든 활동을 로그로 남겨 누가 어떤 작업을 했는지 명확하게 알 수 있습니다.
  • 세분화된 권한 관리: sudoers 파일을 통해 특정 사용자에게 특정 명령어에 대한 root 권한만 부여하는 등 세밀한 권한 제어가 가능합니다.

su는 부득이하게 root 권한으로 여러 작업을 연속적으로 수행해야 할 때만 사용하고, 일반적인 상황에서는 sudo를 사용하는 것이 바람직합니다.

'기타' 카테고리의 다른 글

06. FG BG nohup &  (0) 2025.08.28
05. 파일 복사 / 이동  (0) 2025.08.28
04. 파일 권한 및 파일 관리  (2) 2025.08.28
03. 프로세스 (관리)  (0) 2025.08.28
02. shell과 환경변수  (2) 2025.08.28

+ Recent posts