使用 vsftpd 控制 ftp 訪問

使用 vsftpd 控制 ftp 訪問

我設定了 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

相關內容