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에서 사용자 셸을 변경하는 다양한 방법을 설명했습니다. 의견을 공유하려면 아래 댓글 섹션을 사용하세요.