我的 VPS 中有一個網站。我在該 VPS 上安裝 Debian 7。我的 http 文件位於/var/www/example.com
我在該伺服器上安裝 Nginx 的目錄中,該目錄由 user和 group/var/www/example.com
擁有。我想新增非 root 使用者(讓我們命名它),以便能夠透過 FTP 或 SFTP 用戶端(如 FileZilla)下載或上傳文件到該目錄。www-data
www-data
someone
我發現這和這指南解釋它可以使用 來完成chroot
。我嘗試配置它,但沒有成功。這是我迄今為止使用過的一些命令。
useradd someone
groupadd sftpusers
usermod -G sftpusers someone
vi /etc/ssh/sshd_config
我添加了這段程式碼
#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp
在文件末尾我添加了
Match group sftpusers
ChrootDirectory /var/www/example.com
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
service ssh restart
但是當我透過 FileZilla 連接時,它給了我錯誤。我懷疑此錯誤/var/www/example.com
是由於 userwww-data
和 group擁有的www-data
。
問題:如何讓非 root 使用者能夠/var/www/example.com
透過 FTP 或 SFTP 用戶端(如 FileZilla)下載或上傳文件到目錄中。這個非 root 使用者不應該能夠存取父目錄,例如/var/www/
答案1
噢,出於對所有可愛的東西的熱愛,不要對 world+dog 可以訪問的任何東西(即您的網站目錄、匿名 ftp 資料夾)設置 777 權限。
現代 Linux 和 BSD 具有您可以設定的每個使用者 ACL,並且它們可以完美運作!您也可以使用它為特定使用者和特定群組添加 rwx。一旦你理解了它們,就非常容易做到!
太長了;使用 setfacl 指令,如下 #setfacl -m someuser:rwx /public_html SHAZAM!現在,某個使用者已經在您的 public_html 目錄上讀取/寫入/執行,我鼓勵您閱讀 setfacl 的手冊頁或至少閱讀 HOWTO 來熟悉它的功能。下面簡單介紹一下檔案系統ACL: https://www.redhat.com/sysadmin/linux-access-control-lists
這對於網頁伺服器來說非常有用,您需要允許擁有自己帳戶的特定開發人員訪問,而無需向 world+dog 授予 rwx。
答案2
這就是我為特定使用者設定 sftp 的方式
1]創建用戶
adduser {USER}
2]編輯/etc/ssh/sshd_config
PasswordAuthentication yes
Subsystem sftp
internal-sftp -u 0007 -f AUTH -l VERBOSE
Match Group {USER}
ChrootDirectory {FOLDER}
ForceCommand internal-sftp -u 0007
AllowTcpForwarding no
GatewayPorts no
X11Forwarding no
3]為使用者設定權限
chmod -R 777 {FOLDER}
4]重新啟動ssh
service ssh restart
將 {USER} 替換為您的用戶,將 {FOLDER} 替換為您的資料夾,它應該可以工作! ;)
答案3
好吧,經過反覆試驗,似乎這就是答案。
adduser someone
vi /etc/ssh/sshd_config
我使用 Froggiz 的配置,所以我的程式碼如下所示:PasswordAuthentication yes Subsystem sftp internal-sftp -u 0007 -f AUTH -l VERBOSE Match Group someone ChrootDirectory /var/www ForceCommand internal-sftp -u 0007 AllowTcpForwarding no GatewayPorts no X11Forwarding no
service ssh restart
chmod -R 777 /var/www/example.com
。這將使某人能夠上傳/下載檔案並允許 webserver/php 處理此目錄中的檔案。