Linux
如何將 SSH /SFTP 使用者限制為 apache 網站的子文件夾?
我目前正在 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 手冊頁,在這裡