Ubuntu

Ubuntu SFTP 和 Chroot

  • June 27, 2012

我已經環顧了幾天,玩弄配置並遵循有關此的教程。

我有兩組:devsftp

dev組中的使用者也是www-datasvn組的一部分。這些使用者將被chroot到他們的主目錄。我希望他們可以通過符號連結訪問 /var/www ,或者以某種方式為他們安裝目錄。

sftp 組內的使用者不能 ssh,但應該允許 sftp。

背景

我嘗試將 sshd_config 配置為僅允許 sftp 組 sftp 訪問,重新啟動 ssh 並丟棄。幸運的是,在處理 sshd_config 時,我準備了一個故障保險來恢復配置並在此事件中每 10 分鐘由 cron 重新啟動。儘管如此,我找不到替代方法或讓這種方法起作用。

編輯 !!

在查看以下答案後,是否會建議替代方案?我執行 Ubuntu - 因此 root 使用者被鎖定,並ssh_config 拒絕root 登錄。sudoers 在其配置中還有 2 個允許的組,srv-admin 和 sudo(sudo 不能殺死、重新啟動、升級等)。

該組dev是允許使用者訪問 2 個目錄/home/<user>/var/www. 該組sftp僅允許使用者 SFTP 訪問,僅此而已,並且沒有 SSH。

聽起來我誤解了在這種情況下使用 chroot 。

您不能通過符號連結在 chroot 環境之外公開目錄(因為根本無法訪問該路徑)。您可以通過綁定掛載公開目錄。這使您可以將文件系統的一部分掛載到文件系統的另一部分。例如:

mount --bind /var/www /home/someuser/www

通常,chroot除非您真的限制可用工具的數量,否則環境會很棘手。您需要在環境中提供一組適當的二進製文件*,*以及chroot所有必要的共享庫。ssh如果人們希望能夠正常工作,這通常最終成為互動式環境(例如提供登錄)的失敗提議。

您應該能夠使用指令中的塊提供對組的sftp-only 訪問權限。就像是:sftp``Match``sshd_config``ForceCommand

Match Group sftp
ForceCommand sftp-internal

您可以包含一個ChrootDirectory選項作為您的Match塊的一部分。以下將chroot人們到他們自己的主目錄:

ChrootDirectory %h

請注意sshd_config手冊頁中的以下內容:

ChrootDirectory 必須包含支持使用者會話所需的文件和目錄。對於互動式會話,這至少需要一個 shell,通常是 sh(1),以及基本的 /dev 節點,例如 null(4)、zero(4)、stdin(4)、stdout(4)、stderr(4)、arandom (4) 和 tty(4) 設備。對於使用“sftp”的文件傳輸會話,如果使用程序內 sftp 伺服器,則無需額外配置環境,但使用日誌記錄的會話確實需要 chroot 目錄中的 /dev/log(參見 sftp-server(8)詳情)。

引用自:https://serverfault.com/questions/393665