我需要一个 Linux(CentOS 5.5)上没有任何安全措施的基本 FTP 服务器,因为服务器和客户端位于测试 LAN 上,未连接到网络的其余部分,网络本身使用 NAT 防火墙后面的不可路由 IP,没有对 FTP 的传入访问。
有些人推荐VSFTPD 的超过PureFTPd或者FTP 服务。无论我怎么尝试,我都无法允许匿名用户(即以“ftp”或“anonymous”身份登录并输入任何字符串作为密码)上传文件:
# yum install vsftpd
# mkdir /var/ftp/pub/upload
# cat vsftpd.conf
listen=YES
anonymous_enable=YES
local_enable=YES
write_enable=YES
xferlog_file=YES
#anonymous users are restricted (chrooted) to anon_root
#directory was created by root, hence owned by root.root
anon_root=/var/ftp/pub/incoming
anon_upload_enable=YES
anon_mkdir_write_enable=YES
#chroot_local_user=NO
#chroot_list_enable=YES
#chroot_list_file=/etc/vsftpd.chroot_list
chown_uploads=YES
当我从客户端登录时,我得到以下信息:
500 OOPS:无法更改目录:/var/ftp/pub/incoming
我也尝试了“# chmod 777 /var/ftp/incoming/”,但出现同样的错误。
有人知道如何以最低安全性配置 Vsftpd 吗?
谢谢。
编辑:SELinux 已被禁用,以下是文件权限:
# cat /etc/sysconfig/selinux
SELINUX=disabled
SELINUXTYPE=targeted
SETLOCALDEFS=0
# sestatus
SELinux status: disabled
# getenforce
Disabled
# grep ftp /etc/passwd
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
# ll /var/
drwxr-xr-x 4 root root 4096 Mar 14 10:53 ftp
# ll /var/ftp/
drwxrwxrwx 2 ftp ftp 4096 Mar 14 10:53 incoming
drwxr-xr-x 3 ftp ftp 4096 Mar 14 11:29 pub
编辑:最新的 vsftpd.conf:
listen=YES
local_enable=YES
write_enable=YES
xferlog_file=YES
#anonymous users are restricted (chrooted) to anon_root
anonymous_enable=YES
anon_root=/var/ftp/pub/incoming
anon_upload_enable=YES
anon_mkdir_write_enable=YES
#500 OOPS: bad bool value in config file for: chown_uploads
chown_uploads=YES
chown_username=ftp
编辑:从“chown_uploads”中删除尾随空格后,错误 500 得到解决,但匿名仍然不起作用:
client> ./ftp server
Connected to server.
220 (vsFTPd 2.0.5)
Name (server:root): ftp
331 Please specify the password.
Password:
500 OOPS: cannot change directory:/var/ftp/pub/incoming
Login failed.
ftp> bye
/etc/passwd 中列出了用户“ftp”,主目录设置为“/var/ftp”,/var/ftp 的访问权限设置为“drwxr-xr-x”,/var/ftp/incoming 的访问权限设置为“drwxrwxrwx”...这可能是由于 PAM 造成的吗?我在 /var/log 中找不到任何 FTP 日志文件可供调查。
编辑:这是一个有效的配置,让 ftp/anonymous 连接并将文件上传到 /var/ftp:
listen=YES
anonymous_enable=YES
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
答案1
您已创建一个名为 pub/ 的目录上传:
# mkdir /var/ftp/pub/upload
但随后您将上传配置为转到 pub/传入:
anon_root=/var/ftp/pub/incoming
所以这只是一个简单的路径不匹配,其余一切似乎都正常。
答案2
对于匿名登录,请更改中的“ftp”用户主目录
/etc/passwd
。ftp:x:119:131:ftp daemon,,,:/var/ftp/pub/:/bin/false
并将其添加到您的
/etc/vsftpd.conf
文件中。allow_writeable_chroot=YES
并确保用户
ftp
有权限(chmod 755
)进入到该位置的每个目录/var/ftp/pub/
我已经解决这个问题好几个小时了。vsftpd 没有提供明确的帮助或错误建议。
答案3
您的 conf 文件中可能有userlist_deny=NO
。将其更改为YES
,并确保您使用的用户名不在/etc/vsftpd/user_list
或 中/etc/vsftpd/ftpusers
。
答案4
以下是对我有用的方法(他一边说,一边在精神上扼杀开发人员)
vsftpd.conf:
anonymous_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_root=/var/ftp/
创建/chown 目录
mkdir /var/ftp
chown nobody:nogroup /var/ftp
mkdir /var/ftp/uploads
chown ftp:ftp /var/ftp/uploads
#edit for good measure also (gave me grief with pure-ftpd)
chmod 777 /var/ftp/uploads
更改主目录
/etc/passwd:
ftp:x:116:124:ftp daemon,,,:/var/ftp:/usr/sbin/nologin
(Debian 上的默认主目录是 /srv/ftp,因此坚持使用该目录可以让您的生活更轻松)
可以上传到 /var/ftp/uploads SElinux/Apparmor 在此系统上被禁用,debian 10.3
笔记:如果初始主目录直接对 /var/ftp 具有 rw 权限(又名 chown ftp:ftp),则 vsftp 将抛出错误消息
编辑注:怀着一丝希望,整个文本还是可以理解的。克劳斯