我设置了 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