Debian

sftp 限制對目錄的訪問

  • March 22, 2017

我需要通過 SFTP 授予對該文件夾根目錄具有完全寫入權限的特定文件夾的訪問權限。我讓它工作但無法找到一種方法來提供對根 / 的寫權限。

我讀到解決這個問題的常用方法是為每個使用者創建一個子文件夾,但這個子文件夾包含在整個網站上使用的現有文件。

簡而言之 :

/ should not be readable (this is correct)
/uploads/ is not writable (**but should** by any means)
/uploads/* is writable (and should)

這是我到目前為止所做的:

/var/www/uploads is owned by root:root with 755 permissions. (775 prevents user to even log in)
/var/www/uploads/* is owned by newuser:sftp 775 permissions.

相關的 /etc/ssh/sshd_config

Match group sftp
  ChrootDirectory %h
  AllowTcpForwarding no
  X11Forwarding no
  ForceCommand internal-sftp

AllowGroups ssh-users sftp

使用者是這樣創建的:

useradd -d /var/www/uploads -m newuser -g sftp -s /bin/false

非常感謝!

我讓它工作但無法找到一種方法來提供對根 / 的寫權限。

這不可能。該chroot目錄不能被您正在 chroot 的使用者寫入。這是必須在手冊頁中定義的sshd_config

在會話啟動時sshd(8)檢查路徑名的所有組件是否為任何其他使用者或組不可寫的根目錄。

系統上使用者之間共享的目錄應具有涵蓋所有使用者訪問權限的權限。

我傾向於在共享目錄和內容上使用 1777。它為所有使用者提供完全訪問權限,同時防止文件所有者以外的人刪除。

八進制權限中的前面的 1 是將刪除和權限更改權限縮小到所有者的粘性位。

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