使用 VSFTPD 的 FTP “拒絕訪問”
我正在執行 Ubuntu 10.04 i386。我使用 Cyberduck(FTP GUI 客戶端)連接到我的伺服器 mysub.domainname.com(在此處更改)。
這就是我希望能夠做到的:
- 將 apache2 根從 更改
/var/www
為/home/myuser/webroot
以提供諸如 index.html 之類的文件2)允許FTP寫入
/home/myuser/webroot
- 允許
myuser
使用他的使用者登錄/通過 FTP 組合併在myuser
文件夾內的任何位置讀/寫Apache2 根文件夾工作正常。去 myserver.com/index.html 工作。但我無法讓 FTP 寫入,即使我在以下位置更改了這些行
etc/vsftpd.conf
:listen=YES #listen_ipv6=YES anonymous_enable=NO local_enable=YES write_enable=YES #local_umask=022 #anon_upload_enable=YES #anon_mkdir_write_enable=YES dirmessage_enable=YES use_localtime=YES xferlog_enable=YES connect_from_port_20=YES #chown_uploads=YES #chown_username=whoever #xferlog_file=/var/log/vsftpd.log #xferlog_std_format=YES #idle_session_timeout=600 #data_connection_timeout=120 #nopriv_user=ftpsecure #async_abor_enable=YES #ascii_upload_enable=YES #ascii_download_enable=YES #ftpd_banner=Welcome to blah FTP service. #deny_email_enable=YES #banned_email_file=/etc/vsftpd.banned_emails # chroot_list_enable below. #chroot_local_user=YES #chroot_local_user=YES #chroot_list_enable=YES #chroot_list_file=/etc/vsftpd.chroot_list #ls_recurse_enable=YES secure_chroot_dir=/var/run/vsftpd/empty pam_service_name=vsftpd rsa_cert_file=/etc/ssl/private/vsftpd.pem
問題
每當我嘗試在其中創建文件夾
/home/myuser
或在我的 FTP 程序 Cyberduck 中/home/myuser/webroot
出現錯誤時。Create directory operation failed.
也許有用的資訊:
drwxrwsr-x 2 myuser www-data 4096 2011-04-18 03:04 webroot
我也在這裡更改了權限:
-rw-rwSr-- 1 myuser root 69 2011-04-18 02:14 index.html
…但沒有運氣。我仍然無法使用 FTP 上傳或寫入。任何建議或指示都會很棒,我完全迷失了這一點。
更新:
我嘗試為 FTP 啟用匿名登錄,但我什至無法讓它工作……我認為唯一的解決方案是完全清除 vsftpd 和 apache2 的系統,然後重新開始
對於權限,您需要擁有文件夾和其中的文件,
myuser
以便可以從 myuser 帳戶訪問它們。如果 apache(或您的腳本)需要寫入文件夾,那麼最好的辦法是使用
chgrp
將應寫入的特定位置分配給 www-data 組,然後chmod g+w
是該位置或文件。如果您授予對文件夾的chmod g+sw
寫入權限,則將授予對該文件夾的寫入權限,並確保在那裡創建的文件也屬於 www-data 組。在這種情況下,文件和目錄看起來像:
drwxrwxr-x 2 myuser www-data 4096 2011-04-18 03:04 webroot -rw-rw-r-- 1 myuser www-data 1000 2011-04-18 03:04 index.html drwxrwsr-x 2 myuser www-data 4096 2011-04-18 03:04 folderwithg+ws
不過,您需要非常小心地將文件和文件夾的寫入權限授予 apache,否則攻擊者可能會想辦法讓您的腳本覆蓋自己或替換 index.html 或其他任何東西。
否則,如果 apache 不需要寫入您的文件目錄,則權限應該沒問題,因為只要所有子目錄和文件都是世界可讀的(並且目錄是世界可訪問的)。
對於 SSL/TLS,你錯過了
ssl_enable=YES
您可以強制使用者使用加密:
force_local_logins_ssl=YES force_local_data_ssl=YES
ssl_ciphers=
如果您想將其限制為 HIGH 或特定的密碼列表,還有一個選項。如果您想要“隱式 SSL”(而不是AUTH SSL
或AUTH TLS
命令開始加密,加密是在連接開始時協商的),那麼就是implicit_ssl=YES