Ssh

SFTP 使用者的文件/目錄權限

  • September 20, 2013

在我 1.5 周大的 Debian 6 VPS 上大量使用 SSH 之後,我想開始通過 SFTP 上傳文件。我之前已經嘗試過,但是使用 root 帳戶,由於安全性更改,SSH 不再可能。

所以我創建了一個單獨的使用者,我們暫時稱他為sftpuser,他屬於sftp組。他在 sshd_config 中有一個特殊的條目:

Match Group sftp
   ChrootDirectory /var/www
   ForceCommand internal-sftp
   PasswordAuthentication yes

所以,他很幸運,不需要密鑰文件來連接,但他僅限於/var/www。好吧,那行得通,我可以完美登錄並查看那裡的所有文件。但是由於它們歸root使用者所有,他不能上傳任何東西,這使得他非常無用。

在文件權限的狂野之旅中,我閱讀了很多八進制數字組合和奇怪的解決方法,但沒有什麼是完全適合的。如果我理解正確, chmod 只能用於使目錄可寫入某個使用者(本例中為root)、組(猜猜看,本例中為root \o/)或其他使用者。我必須在不破壞 PHP-FPM 和 nginx 的情況下解決此問題的“最佳”想法是將sftpuser添加到組。儘管我認為這是一個壞主意,但這不會造成太大的破壞,因為sftpuser已被 chroot 並且無法打開 shell。但這無論如何都沒有用,我無法寫入那裡的任何文件,即使使用sftpuser組。

也就是說,我真的可以使用幫助來找到適合我的目的的東西。我不希望像我在這裡寫的那樣寫一堵文字牆,只是一點點提示可以為我指明正確的方向。

我所做的是為 sftpuser 創建一個主卷(我們稱之為 /sftphome),它必須由 root 擁有並具有以下權限和所有權:

/sftphome

drwxr-xr-x    root root

然後 sftpuser 的 sftp 主目錄也必須由 root 擁有:

/sftphome/sftpuser

drwxr-xr-x    root root

然後創建一個sftpuser可以上傳和下載的目錄:

/sftphome/sftpuser/上傳

drwx------  sftpuser sftpuser

當然要確保***/sftphome***配置正確:

ChrootDirectory /sftphome

這樣做的最終結果是,當 sftpuser 登錄到 sftp 伺服器時,該使用者被定向到***/sftphome/sftpuser***,然後必須 cd 進入 upload 才能上傳和下載文件。

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