我正在尝试在运行 Ubuntu 12.04 的服务器上设置带有虚拟用户的 VSFTPD。我已将服务器配置为允许虚拟用户登录,但在允许上传时遇到了麻烦。我的 vsftpd.conf 如下:
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
virtual_use_local_privs=YES
guest_enable=YES
guest_username=virtual
user_sub_token=$USER
local_root=/var/www/$USER
hide_ids=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/private/vsftpd.pem
/etc/pam.d/vsftpd
包含:
auth required pam_pwdfile.so pwdfile /etc/vsftpd.passwd crypt=hash
account required pam_permit.so crypt=hash
我设置了两个虚拟用户,其中一个与本地用户同名。它们各自在 /var/www/ 中都有一个由“virtual”拥有的目录。据我了解,当虚拟用户以这种方式登录时,他们将以用户虚拟的身份出现在系统中。使用此配置,用户可以登录,但无法上传文件。给出的错误/var/log/vsftpd.log
是:
Tue Nov 20 19:49:00 2012 [pid 2] CONNECT: Client "96.233.116.53"
Tue Nov 20 19:49:07 2012 [pid 1] [zac] OK LOGIN: Client "96.233.116.53"
Tue Nov 20 19:49:11 2012 [pid 2] CONNECT: Client "96.233.116.53"
Tue Nov 20 19:49:11 2012 [pid 1] [zac] OK LOGIN: Client "96.233.116.53"
Tue Nov 20 19:49:11 2012 [pid 3] [zac] FAIL CHMOD: Client "96.233.116.53", "/test.ppm 644"
我尝试过各种方法来更改这些目录的权限,但似乎都不起作用。我觉得这和权限有关,很简单。有什么想法吗?
答案1
该问题可能是由目录权限引起的,我的 vsftpd 运行如下:
匿名启用=否 本地启用=是 写入启用=是 本地 umask=022 dirmessage_enable=是 xferlog_enable=YES 连接端口 20=是 chown_uploads=是 xferlog_file=/var/log/vsftpd.log xferlog_std_format=是 ftpd_banner=欢迎使用 blah FTP 服务。 ls_recurse_enable=否 听=是 pam_service_name=vsftpd 用户列表启用=YES tcp_wrappers=是
答案2
该目录是否存在?
/var/www/zac
这个目录属于 zac 吗?
尝试:
mkdir -p /var/www/zac; chown zac /var/www/zac; chmod 600 /var/www/zac;
并再次上传文件
答案3
VSFTP 不允许虚拟用户上传,您需要创建本地用户,或者您可以使用映射到所有虚拟用户的单个用户,在这种情况下您无法控制用户明智的权限,请检查此链接 -https://gist.github.com/stas/315765
答案4
尝试对虚拟用户启用写访问权限:
virtual_use_local_privs=YES