題 以root用戶身份登錄服務器時,沒有路徑或命令歷史記錄通過SSH


當我連接到服務器時,除了root之外的任何東西,它只顯示$而不是路徑。當我不以root用戶身份登錄時,它也不允許我按下向上鍵並查看命令歷史記錄。如何向其他用戶提供上述選項?


3
2018-04-21 22:07


起源




答案:


完成此任務有兩個步驟。

步驟1) 確保您的用戶正在使用bash shell。查看/ etc / passwd中每個用戶的條目,並確保它以/ bin / bash結尾。例如,如果你看到這個:

joeuser:x:1234:1234:Joe User:/home/joeuser:/bin/sh

然後將其更改為:

joeuser:x:1234:1234:Joe User:/home/joeuser:/bin/bash

使用bash應該修復向上箭頭問題並啟用下一步。

第2步) 如果你仍然沒有看到當前工作目錄的提示,那麼告訴bash你想要的是什麼。有兩種方法可以做到這一點。添加以下行:

export PS1='\w> '

要么

  1. 每個用戶 .bash_profile 文件; 要么
  2. 全系統 /etc/profile 文件

這條線指定了 PS1 變量,表示主shell提示符。我建議把它放進去 /etc/profile 因為這更容易,並為所有用戶提供有用的提示。如果用戶想要提示其他內容,他們可以隨時編輯自己的提示 .bash_profile 文件。

注意:如果您的系統有 /etc/bash.bashrc 然後把線放在那里而不是 /etc/profile


5
2018-04-22 03:24





我的 passwd(5) 手冊頁說的是關於最後一個字段的 /etc/passwd 入口,稱為“命令解釋器”:

命令解釋器字段提供用戶命令的名稱   語言解釋器,或要執行的初始程序的名稱。   登錄程序使用此信息來設置$ SHELL的值   環境變量。如果此字段為空,則默認為   值 / bin / sh的

所以,看起來您的選擇是:

  1. 把你的用戶放在 /etc/passwd 文件。
  2. 通過NIS或其他網絡方式提供您的用戶信息。
  3. 鏈接 /bin/sh 到其他一些shell。我不推薦這個,因為程序很可能依賴於現有的行為 /bin/sh

1
2018-04-22 00:13





這聽起來很奇怪 - 因為默認情況下 - 任何非root用戶都應該能夠擁有您描述的基本功能。也就是說,這個問題聽起來很熟悉。每當我在Ubuntu(Debian)上設置用戶時我都會使用 adduser 哪個工作正常;但我一直有問題 useradd。正如它在官方手冊頁中所述 useradd

useradd 是一個用於添加用戶的低級實用程序。在Debian上,   管理員通常應該使用 adduser(8)相反。

原因歸結為這樣的事實 useradd 最終是一個低級系統二進製文件,它需要更多命令而不僅僅是用戶名來為新用戶添加路徑和shell信息。相反, adduser 是一個Perl腳本包裝器 useradd 這提供了一個更好,用戶友好的工作流程,可以毫不費力地為系統創建新用戶。試想一下 adduser 作為“嚮導”設置 useradd

所以,如果您通過添加用戶 useradd您可能錯過了命令行選項中的配置設置。從技術上講,您確實在系統中添加了一個用戶,但在系統配置方面並沒有太多其他用戶。相反, adduser 旨在處理所有各種基礎知識。

知道了,我建議你刪除你已經創建的任何用戶;當然改變了 [username] 到實際的用戶名:

sudo deluser --remove-home [username]

然後重新創建該用戶 adduser 像這樣:

sudo adduser [username]

1
2018-04-22 00:33