3種方法改變Linux的默認shell


shell是Unix或GNU/Linux等操作系統中的命令解釋器,shell是一個接受和解釋命令的程序;Linux 上有多種 shell,例如 bash、sh、ksh、zsh、fish 和許多其他鮮為人知的 shell。它為計算機用戶提供了 Unix/GNU Linux 系統的接口,以便用戶可以使用一些輸入數據運行不同的命令或實用程序/工具。當 shell 執行完程序后,它會在屏幕上向用戶發送一個輸出,這是標准輸出設備。因此,它被稱為“命令解釋器”。

Bash ( /bin/bash ) 是大多數Linux 系統上的流行 shell,它通常是用戶帳戶的默認 shell。

在 Linux 中更改用戶的 shell 有幾個原因,包括:

  • 使用nologin shell阻止或禁用Linux 中的正常用戶登錄。
  • 在將用戶命令發送到 shell 執行之前,使用 shell 包裝腳本或程序登錄用戶命令。在這里,您將 shell 包裝器指定為用戶的登錄 shell。
  • 滿足用戶的需求(想要使用特定的 shell),尤其是那些具有管理權限的用戶。

下面來看一下Linux系統中所有可用的shell。

[root@sharplee creatfile]# cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash

下面是改變shell需要牢記的一些點:

  • 一個用戶能夠改變他們自己的shell為任何shell,但是前提這個shell要在/etc/shells中要有。
  • 僅僅只有root用戶有權限更改shell在Linux中的/etc/shell文件中找不到的shell。
  • 如果一個用戶是被限制登錄的,這個用戶的shell只有root用戶有權限更改。

1,使用usermod修改

usermod是一個工具用於修改用戶賬號的信息,這些信息存儲在“/etc/passwd”中,下面我們通過 -s 或者 --shell選項來改變用戶的shell。

[sharplee@sharplee creatfile]# grep sharplee /etc/passwd
[sharplee@sharplee creatfile]# sudo usermod --shell /bin/sh sharplee
[sharplee@sharplee creatfile]# grep sharplee /etc/passwd

下面來檢驗一下用戶的shell是否被修改了。

2,使用chsh命令進行修改

chsh 是一個命令行實用程序,使用 -s 或 –shell 選項更改登錄 shell,如下所示。

[sharplee@sharplee creatfile]# grep sharplee /etc/passwd
[sharplee@sharplee creatfile]# sudo chsh --shell /bin/bash sharplee
[sharplee@sharplee creatfile]# grep sharplee /etc/passwd

 

下面通過重新登陸一下sharplee用戶來看一下shell改變了沒。

 

3,通過修改/etc/passwd文件實現

下面通過文本編輯工具,來修改/etc/passwd文件,實現改變用戶的shell。

[root@sharplee creatfile]# vi /etc/passwd
or
[root@sharplee creatfile]# nano /etc/passwd

總結:通過變更shell能夠實現用戶無法登錄,改變shell為/sbin/nologin即可實現,還可以通過更改其它shell來增強bash能夠執行更多的命令交互

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM