Chrooted 使用者不會在其主目錄中啟動,也不會載入其 bash_profiles

Chrooted 使用者不會在其主目錄中啟動,也不會載入其 bash_profiles

如果使用者登入,他會從 chroot 的 / 啟動(在真機上是 /var/jail)。我希望他從他的主目錄開始。另外,他似乎沒有載入任何設定檔(.bash.rc 等)。我跟著創建 chroot 環境的教學。這是我的 /etc/passwd 的樣子:

test:x:1004:1008:,,,:/var/jail/home/test:/bin/bash

這是我的 /var/jail/etc/passwd 檔案的樣子:

test:x:1004:1008:,,,:/home/test:/bin/bash

我還發現,如果我刪除

Match User test
    ChrootDirectory /var/jail
    AllowTCPForwarding no
    X11Forwarding no

從我的 /etc/ssh/sshd_config 中,使用者在正確的主資料夾中啟動並載入了 bash 設定。但是,如果我刪除該部分,他就能夠離開 chroot 環境。我之前問的問題有些相關,因為我認為命令列的錯誤外觀是由於未載入設定檔引起的。那麼有什麼想法可以解決這個問題嗎?

答案1

除了一個小細節外,您的配置是正確的:主目錄/etc/passwd不應包含 chroot 路徑部分。將其更改為:

test:x:1004:1008:,,,:/home/test:/bin/bash

重新啟動sshd並重試。

man sshd_config

Chroot目錄

指定身份驗證後 chroot(2) 的目錄路徑名。路徑名的所有組成部分必須是 root 擁有的目錄,任何其他使用者或群組都不可寫入。 chroot 後,sshd(8) 將工作目錄變更為使用者的主目錄。

也就是說,首先sshd執行chroot(在我們的例子中chroot /var/jail),然後sshd將目錄更改為使用者的 homedir(在我們的例子中cd /home/test- 在 chroot 環境中cd /var/jail/home/test不起作用)。

如果您使用的是 Debian/Ubuntu(因為您提到的教程適用於 Debian),您可能想要建立一個名為/var/jail/etc/debian_chroot「chroot」的文件,該文件將出現在使用者提示字元中的括號中,如下所示:(chroot)test@servername:~$

/var/jail(我已經在我的 Ubuntu 12.04 上複製了您的配置,並且在從 中的用戶測試條目中刪除後它就起作用了/etc/passwd。)

相關內容