Ubunutu 계정 생성 명령어는 useradd, useradd 두가지가 있다.
쉽게 알아볼 수 있게 두 개의 명령어를 입력하여 계정을 생성한 과정을 살펴보면
useradd는 별다른 텍스트 없이 바로 끝나고, adduser를 이용해 계정을 생성할 시
Adding ....이나 패스워드 설정과 관련된 내용을 확인할 수 있다.
두 개의 명령어를 간단하게 요약해서 비교해보면 다음과 같다.
$ useradd [option] [username] | '계정'만 생성하며 사용자와 관련된 옵션을 직접 설정해야 함 |
$ adduser [option] [username] | '계정'을 생성할 때 필요한 정보(패스워드, 닉네임, 직장 등)를 사용자가 입력하도록 요청하고 기본적인 설정(홈 디렉터리, 그룹 추가 등)을 쉽게 구성할 수 있게 해준다 |
계정 생성 후 etc/passwd파일에서 두 개의 계정을 확인해보면 둘다 똑같이 홈디렉터리가 존재하지만,
useradd는 /bin/sh를 adduser로 만든 계정은 /bin/bash로 두 계정의 쉘이 다른 것을 확인할 수 있다.
쉘이란?
사용자의 명령을 입력 받아 운영체제에 전달하는 인터페이스
sh쉘은 최초의 유닉스 쉘로 간단한 기능만을 제공하며 bash쉘과 비교했을 때 상대적으로 기능이 제한되어있다.
bash쉘은 sh쉘의 확장버전으로 Linux, Mac에서 기본 쉘로 주로 사용되고 mv, cp, rm, touch, ls 등
사용자가 흔하게 사용하는 명령어들이 추가되었다.
로그인할 때 사용되는 기본 쉘이 /bin/bash인 adduser1 계정은 ls, ll 명령어를 실행할 수 있지만,
기본 쉘이 /bin/sh인 useradd1 계정은 현재 위치한 디렉터리도 나오지 않으며 ll 명령어나 touch명령어 등
사용 권한이 제한되어 있거나, 존재하지 않는다는 특징이 있다. (이 밖에 ksh, csh, tcsh, zsh도 있다)
useradd와 adduser의 차이점
1. 사용자 상호작용
▶ useradd: 홈 디렉터리가 생성되지만, 대부분의 기능들을 직접 명령어 라인에서 설정해야하고, 기능이 제한됨
▶ adduser: 사용자에게 계정을 생성할 때 패스워드와 기타 정보를 입력하게 함
2. 그룹 관리
▶ useradd: 그룹도 함께 생성되지만, 추가적인 그룹을 생성하거나 사용자를 다른 구룹에 추가하는 기능은 제공하지 않음
▶ adduser: 사용자를 생성하면서 기본 그룹 외에도 사용자를 그룹에 추가하거나 새로운 그룹을 생성함
3. 기본 쉘
▶ useradd: 간단하게 사용자를 생성하기 위한 목적, 명령어 처리 기능이 제한된 /bin/sh사용
▶ adduser: 명령어 처리가 향상된 bash쉘이 기본 쉘로 사용됨
어린아이가 봐도 useradd보다 adduser가 훨씬 편리하고 좋은데 왜 여전히 useradd가 사용될까? 라는 생각이들어 찾아보았다.
useradd가 사용되는 경우
1. 특정 시스템: 추가적인 대화식 설정이 필요없는 경우에 간소화된 접근이 유용함)
2. CentOS와 같은 표준 유닉스 계열: 해당 OS에선 adduser와 같은 명령어로 사용된다.
3. 쉘 스크립트와 자동화된 환경: 배치처리느 자동 시스템 설정에선 직접 명령어를 커맨드 라인에서 제공하기 때문에 간편한 useradd를 사용한다고 한다..
adduser는 bash처럼 기존 사용 환경에 불편함을 생겨 만들어난게 아닐까..