Linux ubuntu를 설치하면 bash 쉘이 기본설정으로 되어 있습니다. 그러나 사실 이미 다른 shell을 사용할 수 있다는 사실을 알고 계신가요?

Linux에서 새로운 사용자를 생성할 때, 사용자가 사용할 기본 쉘을 지정할 수 있습니다. 이때 사용하는 옵션이 useradd 명령어의 -s 옵션입니다. 이미 생성된 사용자라면, usermod -s 명령어로 변경할 수도 있습니다.

이 글에서는 useradd-s 옵션으로 사용할 수 있는 주요 쉘들과 각각의 특징, 그리고 현재 시스템에서 사용할 수 있는 쉘의 목록을 확인하는 방법을 정리합니다.

다양한 쉘을 선택할 수 있는 useradd -s 옵션을 고민하는 개발자


1. 주요 쉘 종류와 특징

쉘 경로 쉘 이름 특징
/bin/bash Bash 가장 널리 사용되는 표준 쉘. 명령어 편집, 자동완성 기능, 스크립트 작성 등 다양한 기능 제공.
/bin/sh Bourne Shell 가볍고 최소한의 기능 제공. 스크립트 및 제한된 환경에서 주로 사용됨.
/bin/zsh Z Shell (Zsh) Bash의 확장판. 뛰어난 자동완성 기능과 커스터마이징 기능 제공. 최근 인기 급상승 중.
/bin/ksh Korn Shell 상업적 환경에서 널리 사용된 쉘. 속도와 효율성 강조.
/usr/bin/fish Fish Shell 직관적인 사용법과 강력한 자동완성 기능으로 초보자에게 추천되는 쉘.
/usr/sbin/nologin 또는 /bin/false 로그인 불가 쉘 직접적인 로그인 차단 용도로 사용. 시스템 계정이나 서비스용 계정 생성 시 자주 사용됨.

2. 현재 시스템에서 사용 가능한 쉘 확인하기

현재 시스템에서 사용 가능한 쉘 목록은 /etc/shells 파일에 저장되어 있습니다. 다음 명령어로 확인 가능합니다.

cat /etc/shells

출력 예시:

/bin/sh
/bin/bash
/usr/bin/bash
/bin/rbash
/usr/bin/rbash
/usr/bin/sh
/bin/dash
/usr/bin/dash

이 파일에 나열된 쉘만 useradd 명령어의 -s 옵션으로 사용할 수 있습니다.


3. nologin 쉘 경로 정확히 확인하기

시스템에서 로그인 차단용 쉘(nologin)의 정확한 위치를 확인하려면 다음 명령어를 사용합니다.

which nologin

출력 예시:

/usr/sbin/nologin

시스템마다 다를 수 있으므로 반드시 확인하는 것이 좋습니다.


4. 사용 사례 예시

Bash 쉘을 사용하는 사용자 추가

sudo useradd -m -s /bin/bash username

Zsh 쉘을 사용하는 사용자 추가

sudo useradd -m -s /bin/zsh username

로그인 불가능한 시스템 사용자 추가

sudo useradd -r -s /usr/sbin/nologin username

기존 사용자의 쉘 변경 예시:

sudo usermod -s /usr/sbin/nologin username

변경된 결과를 확인하는 명령어:

cat /etc/passwd | grep username

정상 출력 예시:

username:x:1004:1004::/home/django:/usr/sbin/nologin

이제 useradd-s 옵션과 사용 가능한 쉘을 명확히 이해하고, 올바른 쉘 설정으로 계정을 안전하게 관리하세요!