我需要部署一个用于内网的 FTP 服务器(仅限匿名),我选择了 Vsftpd,它似乎很容易配置。这是我的配置:
listen=YES
local_enable=NO
write_enable=YES
anonymous_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
no_anon_password=YES
anon_root=/srv/ftp/anon
以及目录权限:
drwxr-xr-x 3 root root 4096 déc. 20 16:00 srv
r-xr-xr-x 3 root root 4096 déc. 20 16:03 ftp
dr-xr-xr-x 2 root root 4096 déc. 20 16:03 anon
通过此配置,我可以以匿名身份连接并进行咨询/srv/ftp/匿名内容,下载文件,但无法上传任何内容,创建文件夹或删除文件(错误 530 和 550)。Vsftpd 日志文件不是那么明确,没有帮助。我也尝试将匿名更改为 777,但结果如下500 OOPS:vsftpd:拒绝在 chroot() 内以可写 root 身份运行当我尝试连接到服务器时。
谢谢 :)
答案1
看起来,vsftpd 正在尝试 chroot 到 /srv/ftp/anon 目录。在这种情况下,它试图通过拒绝写入来阻止您自食其果(是的,他们知道他们在做什么以及为什么)。
因此,您最好设置一个目录结构,其中有一个只读目录,可写的目录在里面,例如,/srv/ftp
只有 root 才可写入,这就是anon_root
。再创建一个,比如说/srv/ftp/public
和chown ftp /srv/ftp/public
(或 vsftp 使用的任何用户)。我在类似场景中使用了更多指令:
allow_writeable_chroot=YES
nopriv_user=ftp
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES