允許非 root 使用者上傳/下載到網站目錄

允許非 root 使用者上傳/下載到網站目錄

我的 VPS 中有一個網站。我在該 VPS 上安裝 Debian 7。我的 http 文件位於/var/www/example.com我在該伺服器上安裝 Nginx 的目錄中,該目錄由 user和 group/var/www/example.com擁有。我想新增非 root 使用者(讓我們命名它),以便能夠透過 FTP 或 SFTP 用戶端(如 FileZilla)下載或上傳文件到該目錄。www-datawww-datasomeone

我發現指南解釋它可以使用 來完成chroot。我嘗試配置它,但沒有成功。這是我迄今為止使用過的一些命令。

  1. useradd someone
  2. groupadd sftpusers
  3. usermod -G sftpusers someone
  4. 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
  1. 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

好吧,經過反覆試驗,似乎這就是答案。

  1. adduser someone
  2. 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
    
  3. service ssh restart

  4. chmod -R 777 /var/www/example.com。這將使某人能夠上傳/下載檔案並允許 webserver/php 處理此目錄中的檔案。

相關內容