Shell

“虛擬”外殼,即。在(SSH)登錄後將使用者監禁在程序中

  • February 10, 2019

假設我有一個臨時使用者,他可以通過 SSH 登錄到系統並進入 bash shell。我還有一個 PHP(儘管這裡的語言無關緊要)腳本,它充當一個接受各種命令和其他使用者輸入並根據它們進行操作的程序(本質上是一個“類似 shell”的腳本)。

現在,我想做的是將使用者鎖定在所說的 PHP 腳本中,即。使用者登錄後立即執行它(這部分通過 .bashrc 很簡單),但同時確保當腳本執行結束時,使用者也自動被“踢出” bash 並因此被 ssh 會話,這樣他不能通過 bash 本身做任何事情,並且僅限於 PHP 腳本提供的功能。

這甚至可能嗎?如果是,我將如何去做?

**更新:**根據迄今為止的答案 - 在我的腳本和通過 SSH 登錄的使用者之間有 bash 不是任何要求。起初,這對我來說似乎是必需品。僅在 SSH 登錄後直接強制使用者進入我的腳本的任何內容都是受歡迎的答案。

根據更新的資訊,您應該讓他們執行私鑰/公鑰對,並在.ssh/authorized_keys文件中將其設置為僅執行 script.php 文件。您不應該依賴.bashrcfor 保護,尤其是因為初始化環境需要它。

您可以在相應行的最後一個欄位中將相關使用者的 shell 更改為您喜歡的任何內容/etc/passwd,例如:

specialuser:x:12345:123::/home/specialuser:/usr/bin/restricted_script.php

如果您包含適當的 hash-bang(例如#!/usr/bin/php在腳本的第一行),它應該可以立即工作。出於安全原因,我建議不要將腳本放入使用者可寫的目錄中。

引用自:https://unix.stackexchange.com/questions/55020