웹사이트 검색

Linux에서 기본 사용자 셸을 변경하는 방법


셸 또는 명령줄 인터페이스는 Linux 운영 체제의 중요한 구성 요소로, 사용자에게 시스템과 상호 작용할 수 있는 강력한 방법을 제공합니다.

Linux 시스템의 각 사용자는 시스템과 상호 작용할 때 사용하는 명령 해석기를 결정하는 기본 셸과 연결됩니다.

개인 취향이나 다른 셸에서 제공하는 특정 기능의 필요성 등 다양한 이유로 사용자의 기본 셸을 변경해야 할 수 있습니다.

이 기사에서는 Linux에서 사용자의 기본 셸을 변경하는 프로세스를 살펴보겠습니다. 쉘은 명령을 받아들이고 해석하는 프로그램입니다. bash, sh, ksh, zsh, fish와 같은 여러 오픈 소스 셸이 있습니다. 및 Linux에서 사용할 수 있는 기타 덜 알려진 셸이 많이 있습니다.

리눅스 배시 쉘

Bash(/bin/bash)는 모든 Linux 배포판은 아니더라도 대부분에서 널리 사용되는 셸이며 일반적으로 사용자 계정의 기본 셸입니다.

Linux에서 사용자 셸을 변경하는 데에는 다음을 포함하여 여러 가지 이유가 있습니다.

  • nologin 쉘을 사용하여 Linux에서 일반 사용자 로그인을 차단하거나 비활성화합니다.
  • 사용자 명령이 실행을 위해 쉘로 전송되기 전에 쉘 래퍼 스크립트나 프로그램을 사용하여 사용자 명령을 기록합니다. 여기서는 쉘 래퍼를 사용자의 로그인 쉘로 지정합니다.
  • 사용자의 요구 사항(특정 셸을 사용하려는 경우), 특히 관리 권한이 있는 사용자의 요구 사항을 충족합니다.

useradd 또는 adduser 유틸리티를 사용하여 사용자 계정을 생성할 때 --shell 플래그를 사용하여 해당 구성 파일에 지정된 이름이 아닌 사용자의 로그인 셸 이름을 지정할 수 있습니다.

로그인 셸은 텍스트 기반 인터페이스나 원격 Linux 시스템의 SSH를 통해 액세스할 수 있습니다. 그러나 그래픽 사용자 인터페이스(GUI)를 통해 로그인하면 xterm, konsole 등과 같은 터미널 에뮬레이터에서 셸에 액세스할 수 있습니다.

Linux 시스템에서 사용 가능한 셸 나열

Linux에서 /etc/shells 파일은 일반적으로 시스템에 설치된 유효한 로그인 셸 목록을 저장하는 데 사용됩니다. 이 파일은 사용자가 chsh와 같은 명령을 사용하여 기본 쉘로 설정할 수 있는 쉘을 식별하는 데 도움이 됩니다.

Linux 시스템에서 사용 가능한 셸 목록을 보려면 다음 명령을 사용할 수 있습니다.

cat /etc/shells

샘플 출력:

/etc/shells: valid login shells
/bin/sh
/bin/bash
/usr/bin/bash
/bin/rbash
/usr/bin/rbash
/bin/dash
/usr/bin/dash
/usr/bin/tmux
/usr/bin/screen

더 진행하기 전에 다음 사항에 유의하세요.

  • 사용자는 자신의 쉘을 무엇이든 변경할 수 있습니다. 그러나 /etc/shells 파일에 나열되어 있어야 합니다.
  • 루트만 /etc/shells 파일에 나열되지 않은 쉘을 실행할 수 있습니다.
  • 계정에 제한된 로그인 셸이 있는 경우 루트만 해당 사용자의 셸을 변경할 수 있습니다.

Linux에서 현재 셸 찾기

기본 사용자의 셸을 변경하기 전에 로그인한 사용자의 현재 셸을 표시하는 다음 echo 명령을 실행하여 현재 셸을 확인하는 것이 중요합니다.

echo $SHELL

/bin/bash

출력에는 사용자가 현재 Bash(/bin/bash) 셸을 사용하고 있음이 표시됩니다.

Linux에서 기본 셸 변경

이제 기본 Linux 사용자 셸을 변경하는 세 가지 방법을 살펴보겠습니다.

1. usermod 유틸리티

usermod 명령은 /etc/passwd 파일과 -s 또는 --shell 옵션에 저장된 사용자 계정 세부 정보를 수정하는 데 사용됩니다. 사용자의 로그인 쉘을 변경하는 데 사용됩니다.

이 예에서는 먼저 tecmint 사용자의 계정 정보를 확인하여 기본 로그인 셸을 확인한 다음 로그인 셸을 /bin/sh에서 /bin/bash로 변경합니다. 다음과 같습니다.

grep tecmint /etc/passwd
sudo usermod --shell /bin/bash tecmint
grep tecmint /etc/passwd

이제 "tecmint" 사용자의 기본 셸이 bash로 변경됩니다.

2. chsh 유틸리티

chsh 명령은 표시된 대로 -s 또는 –shell 옵션을 사용하여 사용자의 기본 로그인 셸을 대화식으로 변경하는 데 사용됩니다.

grep tecmint /etc/passwd
sudo chsh --shell /bin/sh tecmint
grep tecmint /etc/passwd

"/bin/sh"를 설정하려는 셸의 실제 경로로 바꾸세요. 예를 들어, 쉘을 sh로 설정하려면 "/bin/sh"를 사용합니다.

기본 셸에 대한 변경 사항은 일반적으로 다음 로그인 시 적용된다는 점을 기억하는 것이 중요합니다.

위의 두 가지 방법은 모두 /etc/passwd 파일에 지정된 셸을 수정하며 아래 세 번째 방법과 같이 수동으로 편집할 수 있습니다.

3. /etc/passwd 파일에서 사용자 쉘 변경

이 방법에서는 즐겨 사용하는 명령줄 텍스트 편집기를 사용하여 /etc/passwd 파일을 열고 특정 사용자의 셸을 변경하기만 하면 됩니다.

sudo vi /etc/passwd
OR
sudo nano /etc/passwd

기본 쉘을 변경하려는 사용자에 해당하는 행을 찾으십시오. 예를 들어, 라인이 다음과 같다면:

tecmint:x:1000:1000:John Doe:/home/tecmint:/bin/bash

마지막 필드인 /bin/bash는 기본 셸(이 경우 Bash)을 나타냅니다.

쉘 필드의 값을 원하는 쉘로 변경하려면 표시된 대로 쉘 경로(/bin/zsh)를 지정하기만 하면 됩니다.

tecmint:x:1000:1000:John Doe:/home/tecmint:/bin/zsh

편집이 완료되면 파일을 저장하고 닫습니다.

다른 쉘을 설치하는 방법은 무엇입니까?

다른 소프트웨어 패키지와 마찬가지로 Zsh 및 Fish와 같은 널리 사용되는 셸은 표시된 대로 배포 저장소에서 쉽게 설치할 수 있습니다.

Linux에 Zsh 쉘 설치

Linux에 Zsh를 설치하려면 특정 Linux 배포판에 적합한 다음 명령을 사용하세요.

sudo apt install zsh         [On Debian, Ubuntu and Mint]
sudo yum install zsh         [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
sudo emerge -a sys-apps/zsh  [On Gentoo Linux]
sudo apk add zsh             [On Alpine Linux]
sudo pacman -S zsh           [On Arch Linux]
sudo zypper install zsh      [On OpenSUSE]    

Linux에 Fish Shell 설치

Linux에 Zsh를 설치하려면 특정 Linux 배포판에 적합한 다음 명령을 사용하세요.

sudo apt install fish         [On Debian, Ubuntu and Mint]
sudo yum install fish         [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
sudo emerge -a sys-apps/fish  [On Gentoo Linux]
sudo apk add fish             [On Alpine Linux]
sudo pacman -S fish           [On Arch Linux]
sudo zypper install fish      [On OpenSUSE]    

다음 관련 항목을 꼭 읽어보세요.

이 기사에서는 Linux에서 사용자 셸을 변경하는 다양한 방법을 설명했습니다. 의견을 공유하려면 아래 댓글 섹션을 사용하세요.