
我設定了 vsftpd,以便能夠將檔案上傳到我設定的 VPS。唯一的問題是我無法建立目錄。我將 vsftpd 設定為禁止匿名用戶,但允許虛擬用戶使用其本地憑證進行連線。此時,我嘗試建立資料夾時的錯誤訊息從「550:建立目錄失敗」(我的解釋)更改為「550:權限被拒絕」。 root 擁有 /var/www 資料夾,而我進行身份驗證的使用者俱有讀取和執行權限,但沒有寫入權限,因此我無法建立資料夾或檔案是有道理的。
此時,我嘗試使用 chown 和 chmod 遞歸地將群組所有權變更為我的使用者所在的群組,並授予我的使用者寫入權限。起初這似乎有效 - 在 SSH 會話中,我能夠 cd 到 /var/www 並創建一個新目錄。然而,當我嘗試使用 ftp 客戶端登入時,我被拒絕存取。
更奇怪的是,當我檢查 /var/log/vsftpd.log 時,我看到以下幾行:
Mon Jan 5 00:03:25 2015 [pid 801] CONNECT: Client "73.53.82.111"
Mon Jan 5 00:03:25 2015 [pid 800] [gradinafrica] OK LOGIN: Client "73.53.82.111"
...儘管登入似乎不起作用。這是怎麼回事?
編輯(更多資訊):作業系統:Ubuntu 14.04 架構:虛擬專用伺服器(?)
當我設定伺服器時,我不允許以 root 身分登入(根據多個來源的建議)並設定了一個不同的使用者 - 'gradinafrica' - 我將其新增到 sudo 群組中。我正在嘗試使用此帳戶進行 ftp。我根本沒有使用過 sftp。
這是vsftpd.conf的內容(註解省略):
listen=YES
anonymous_enable=NO
local_enable=YES
virtual_use_local_privs=YES
anon_upload_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
local_root=/var/www/
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
答案1
如果您需要取得 /var/www/ 中使用者帳戶的寫入權限,特定使用者希望根據您的作業系統成為 apache 或 www-data 群組的成員。
write_enable=YES
僅當您新增了以 Web 根目錄作為主目錄的使用者時才使用此選項
allow_writeable_chroot=YES