Linux

如何將 SSH /SFTP 使用者限制為 apache 網站的子文件夾?

  • May 25, 2011

我目前正在 Linux 伺服器上設置 apache,需要創建一個新使用者,該使用者可以登錄並且只能編輯特定目錄中的文件。

我目前將我的網站設置為

/data/htdocs/mywebsite/

對此的權限是 apache:apache

現在我需要做的是創建一個新使用者“joeblogs”並將該使用者限制為只能訪問 /data/htdocs/mywebsite/store/

使用者應該能夠通過 SSH 和 SFTP,但始終被直接定向到該文件夾,並且使用者應該能夠完全訪問 /store/ 文件夾,但不能看到任何其他文件夾或文件系統/

對此的任何幫助將不勝感激,我已經轉了幾個小時。

SSH 有能力 chroot 一個內置使用者(從 4.9p1 開始),但是將它用於互動式會話有點困難。

不過,限制 sftp 相當容易,並且可以基於每個使用者或每個組進行配置

Match User joeblogs
   ChrootDirectory /data/htdocs/mywebsite/store/
   ForceCommand internal-sftp
   AllowTcpForwarding no

互動式會話更複雜,因為使用者需要一個 shell,以及一些設備文件。

來自man 5 sshd_config

ChrootDirectory 必須包含支持使用者會話所需的文件和目錄。對於互動式會話,這至少需要一個 shell,通常是 sh(1),以及基本的 /dev 節點,例如 null(4)、zero(4)、stdin(4)、stdout(4)、stderr(4)、arandom (4) 和 tty(4) 設備

我不建議這樣做,因為您需要在其 chroot 中建構和維護他們需要的任何實用程序的副本。如果你仍然想嘗試這條路線,你可以閱讀更多關於它的 sshd_config 手冊頁,在這裡

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