我正在尝试在我的 Ubuntu 20.04 VM 上设置 vsftpd 以进行匿名、只读访问。主目录是 /home/ftp/filebase。当我尝试登录时,我收到错误
500 OOPS: cannot change directory: "/home/ftp/filebase"
并被踢出局。
这里已经有几个问题了。大多数建议禁用 SELinux(这里没有安装)或调整目录权限以授予访问权限:
# ls -al
total 2097232
drwxr-xr-x 4 root root 4096 Jul 24 18:32 home
/home# ls -al
drwxr-xr-x 3 ftp ftp 4096 Jul 24 18:34 ftp
/home/ftp# ls -al
drwxr-xr-x 3 ftp ftp 4096 Jul 24 18:34 .
drwxr-xr-x 4 root root 4096 Jul 24 18:32 ..
drwxrwxr-x 198 ftp ftp 212 Mai 17 2018 filebase
因此,所有目录对于每个人来说都具有读取和执行的权限。
我的配置:
listen=YES
listen_ipv6=NO
anonymous_enable=YES
local_enable=NO
anon_root="/home/ftp/filebase/"
no_anon_password=YES
hide_ids=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=NO
pasv_enable=Yes
pasv_min_port=40110
pasv_max_port=40210
ls_recurse_enable=YES
secure_chroot_dir=/var/run/vsftpd/empty
日志文件非常安静:
Fri Jul 24 19:16:59 2020 [pid 7822] CONNECT: Client "192.168.1.2"
Fri Jul 24 19:16:59 2020 [pid 7818] [ftp] OK LOGIN: Client "192.168.1.2", anon password "<no_password>"
请问我遗漏了什么?
答案1
好吧,这很愚蠢。
anon_root=/home/ftp/filebase/
没有引号,它就可以正常工作。虽然执行和读取权限对 root 来说很重要,但可能没有写入权限。否则,vsftpd 会抛出错误
500 OOPS: vsftpd refusing to run with writable root inside chroot()