500 OOPS: vsftpd: refusing to run with writable anonymous root

500 OOPS: vsftpd: refusing to run with writable anonymous root

如果我们已经把vsFTPd服务器启动好了,但登录测试是会出现类似下面的提示;

500 OOPS: vsftpd: refusing to run with writable anonymous root

这表示ftp用户的家目录的权限不对,应该改过才对;

[root@localhost ~]# more /etc/passwd |grep ftp
ftp:x:1000:1000:FTP User:/var/ftp:/sbin/nologin

我们发现ftp用户的家目录在/var/ftp,就是这个/var/ftp的权限不对所致,这个目录的权限是不能打开所有权限的;是您运行了chmod 777 /var/ftp所致;如果没有ftp用户这个家目录,当然您要自己建一个;

如下FTP用户的家目录是不能针对所有用户、用户组、其它用户组完全开放;

[root@localhost ~]# ls -ld /var/ftp
drwxrwxrwx 3 root root 4096 2005-03-23 /var/ftp

修正这个错误,应该用下面的办法;

[root@localhost ~]# chown root:root /var/ftp
[root@localhost ~]# chmod 755 /var/ftp

有的弟兄可能会说,那匿名用户的可读、可下载、可上传怎么办呢?这也简单,在/var/ftp下再建一个目录,权限是777的就行了,再改一改vsftpd.conf就OK了;没有什么难的;

vsFTPd出于安全考虑,是不准让ftp用户的家目录的权限是完全没有限制的,您可以去读一下vsFTPd的文档就明白的了;否则也不能称为最安全的FTP服务器了,对不对?

FREEBSD:VSFTP的安装和配置(packages方式)

一、预备工作:
1.新建目录
mkdir /usr/share/empty
mkdir /var/ftp
2.改变目录所有者和权限
chown root:wheel /var/ftp(如果是Linux用chown root:root /var/ftp)
chmod og-w /var/ftp (此命令是取消其他用户的写权限)
二、安装VSFTP
1.用tar包安装
tar zvf vsftpd-2.0.1.gz.tar
cd vsfpd-2.0.1
make
make install
2.用ports安装(只适合FREEBSD,而且必须是可以上网的用户,对Linux用户不适用)
cd /usr/ports/ftp/vsftpd
make
make install
安装的时候会弹出一个对话框,


选中第一个选项项
三、配置
1.配置VSFTP
打开/etc/vsftpd.conf,(如果用ports安装的话是在/usr/local/etc/vsftpd.conf),,相关参数说明如下:
===个别使用者设定===================
chroot_list_enable
用法:YES/NO
如果启动这项功能,则所有的本机使用者登入均可进到根目录之外的数据夹,除了列在/etc/vsftpd.chroot_list 之中的使用者之外。默认值为NO。
userlist_enable
用法:YES/NO
若是启动此功能,则会读取/etc/vsftpd.user_list 当中的使用者名称。此项功能可以在询问密码前就出现失败讯息,而不需要检验密码的程序。默认值为关闭。
userlist_deny
用法:YES/NO
这个选项只有在userlist_enable 启动时才会被检验。如果将这个选项设为YES,则在/etc/vsftpd.user_list 中的使用者将无法登入 若设为NO , 则只有在/etc/vsftpd.user_list 中的使用者才能登入。而且此项功能可以在询问密码前就出现错误讯息,而不需要检验密码的程序。
user_config_dir
定义个别使用者设定文件所在的目录,例如定义user_config_dir=/etc/vsftpd/userconf,且主机上有使用者test1,test2,那我们可以在user_config_dir 的目录新增文件名为test1 以及test2。若是test1 登入,则会读取user_config_dir 下的test1 这个档案内的设定。默认值为无。
===欢迎语设定=====================
dirmessage_enable
如果启动这个选项,使用者第一次进入一个目录时,会检查该目录下是否有.message这个档案,若是有,则会出现此档案的内容,通常这个档案会放置欢迎话语,或是对该目录的说明。默认值为开启。
banner_file
当使用者登入时,会显示此设定所在的档案内容,通常为欢迎话语或是说明。默认值为无。
ftpd_banner
这边可定义欢迎话语的字符串,相较于banner_file 是档案的形式,而ftpd_banner 是字串的格式。预设为无。
===特殊安全设定====================
chroot_local_user
如果设定为YES,那么所有的本机的使用者都可以切换到根目录以外的数据夹。预设值为NO。
hide_ids
如果启动这项功能,所有档案的拥有者与群组都为ftp,也就是使用者登入使用ls -all之类的指令,所看到的档案拥有者跟群组均为ftp。默认值为关闭。
ls_recurse_enable
若是启动此功能,则允许登入者使用ls -R 这个指令。默认值为NO。
write_enable
用法:YES/NO
这个选项可以控制FTP 的指令是否允许更改file system,譬如STOR、DELE、RNFR、RNTO、MKD、RMD、APPE 以及SITE。预设是关闭。
setproctitle_enable
用法:YES/NO
启动这项功能,vsftpd 会将所有联机的状况已不同的process 呈现出来,换句话说,使用ps -ef 这类的指令就可以看到联机的状态。默认值为关闭。
tcp_wrappers
用法:YES/NO
如果启动,则会将vsftpd 与tcp wrapper 结合,也就是可以在/etc/hosts.allow 与/etc/hosts.deny 中定义可联机或是拒绝的来源地址。
pam_service_name
这边定义PAM 所使用的名称,预设为vsftpd。
secure_chroot_dir
这个选项必须指定一个空的数据夹且任何登入者都不能有写入的权限,当vsftpd 不需要file system 的权限时,就会将使用者限制在此数据夹中。默认值为/usr/share/empty
===纪录文件设定=====================
xferlog_enable
用法:YES/NO
如果启动,上传与下载的信息将被完整纪录在底下xferlog_file 所定义的档案中。预设为开启。
xferlog_file
这个选项可设定纪录文件所在的位置,默认值为/var/log/vsftpd.log。
xferlog_std_format
如果启动,则纪录文件将会写为xferlog 的标准格式,如同wu-ftpd 一般。默认值为关闭。
===逾时设定======================
accept_timeout
接受建立联机的逾时设定,单位为秒。默认值为60。
connect_timeout
响应PORT 方式的数据联机的逾时设定,单位为秒。默认值为60。
data_connection_timeout
建立数据联机的逾时设定。默认值为300 秒。
idle_session_timeout
发呆的逾时设定,若是超出这时间没有数据的传送或是指令的输入,则会强迫断线,单位为秒。默认值为300。
===速率限制======================
anon_max_rate
匿名登入所能使用的最大传输速度,单位为每秒多少bytes,0 表示不限速度。默认值为0。
local_max_rate
本机使用者所能使用的最大传输速度,单位为每秒多少bytes,0 表示不限速度。预设值为0。
===新增档案权限设定==================
anon_umask
匿名登入者新增档案时的umask 数值。默认值为077。
file_open_mode
上传档案的权限,与chmod 所使用的数值相同。默认值为0666。
local_umask
本机登入者新增档案时的umask 数值。默认值为077。
===port 设定======================
connect_from_port_20
用法:YES/NO
若设为YES,则强迫ftp-data 的数据传送使用port 20。默认值为YES。
ftp_data_port
设定ftp 数据联机所使用的port。默认值为20。
listen_port
FTP server 所使用的port。默认值为21。
pasv_max_port
建立资料联机所可以使用port 范围的上界,0 表示任意。默认值为0。
pasv_min_port
建立资料联机所可以使用port 范围的下界,0 表示任意。默认值为0。
===其它========================
anon_root
使用匿名登入时,所登入的目录。默认值为无。
local_enable
用法:YES/NO
启动此功能则允许本机使用者登入。默认值为YES。
local_root
本机使用者登入时,将被更换到定义的目录下。默认值为无。
text_userdb_names
用法:YES/NO
当使用者登入后使用ls -al 之类的指令查询该档案的管理权时,预设会出现拥有者的UID,而不是该档案拥有者的名称。若是希望出现拥有者的名称,则将此功能开启。默认值为NO。
pasv_enable
若是设为NO,则不允许使用PASV 的模式建立数据的联机。默认值为开启。
===更换档案所有权===================
chown_uploads
用法:YES/NO
若是启动,所有匿名上传数据的拥有者将被更换为chown_username 当中所设定的使用者。这样的选项对于安全及管理,是很有用的。默认值为NO。
chown_username
这里可以定义当匿名登入者上传档案时,该档案的拥有者将被置换的使用者名称。预设值为root。
===guest 设定=====================
guest_enable
用法:YES/NO
若是启动这项功能,所有的非匿名登入者都视为guest。默认值为关闭。
guest_username
这里将定义guest 的使用者名称。默认值为ftp。
===anonymous 设定==================
anonymous_enable
用法:YES/NO
管控使否允许匿名登入,YES 为允许匿名登入,NO 为不允许。默认值为YES。
no_anon_password
若是启动这项功能,则使用匿名登入时,不会询问密码。默认值为NO。
anon_mkdir_write_enable
用法:YES/NO
如果设为YES,匿名登入者会被允许新增目录,当然,匿名使用者必须要有对上层目录的写入权。默认值为NO。
anon_other_write_enable
用法:YES/NO
如果设为YES,匿名登入者会被允许更多于上传与建立目录之外的权限,譬如删除或是更名。默认值为NO。
anon_upload_enable
用法:YES/NO
如果设为YES,匿名登入者会被允许上传目录的权限,当然,匿名使用者必须要有对上层目录的写入权。默认值为NO。
anon_world_readable_only
用法:YES/NO
如果设为YES,匿名登入者会被允许下载可阅读的档案。默认值为YES。
ftp_username
定义匿名登入的使用者名称。默认值为ftp。
deny_email_enable
若是启动这项功能,则必须提供一个档案/etc/vsftpd.banner_emails,内容为email address。若是使用匿名登入,则会要求输入email address,若输入的email address 在此档案内,则不允许联机。默认值为NO。
===Standalone 选项==================
listen
用法:YES/NO
若是启动,则vsftpd 将会以独立运作的方式执行,若是vsftpd 独立执行,如RedHat9的默认值,则必须启动 若是vsftpd 包含在xinetd 之中,则必须关闭此功能,如RedHat8。在RedHat9 的默认值为YES。
listen_address
若是vsftpd 使用standalone 的模式,可使用这个参数定义使用哪个IP address 提供这项服务,若是主机上只有定义一个IP address,则此选项不需使用,若是有多个IPaddress,可定义在哪个IP address 上提供ftp 服务。若是不设定,则所有的IP address均会提供此服务。默认值为无。
max_clients
若是vsftpd 使用standalone 的模式,可使用这个参数定义最大的总联机数。超过这个数目将会拒绝联机,0 表示不限。默认值为0。
max_per_ip
若是vsftpd 使用standalone 的模式,可使用这个参数定义每个ip address 所可以联机的数目。超过这个数目将会拒绝联机,0 表示不限。默认值为0。

2.添加用户(FREEBSD系统使用adduser命令,Linux系统用useradd)
1.新建匿名用户
adduser -d /var/ftp ftp
2.新建普通用户,这里就用test1
adduser -d /var/ftp test1 (Linux系统使用useradd -d /var/ftp)
四.启动服务
1.配置inetd
打开/etc/inetd.conf,并添加下面一行
ftp stream tcp nowait root /usr/sbin/tcpd /usr/local/sbin/vsftpd
现在重新启动inted服务,让配置生效
killall –HUP inetd

附:
FTP 数字代码的意义
110 重新启动标记应答。
120 服务在多久时间内ready。
125 数据链路埠开启,准备传送。
150 文件状态正常,开启数据连接端口。
200 命令执行成功。
202 命令执行失败。
211 系统状态或是系统求助响应。
212 目录的状态。
213 文件的状态。
214 求助的讯息。
215 名称系统类型。
220 新的联机服务ready。
221 服务的控制连接埠关闭,可以注销。
225 数据连结开启,但无传输动作。
226 关闭数据连接端口,请求的文件操作成功。
227 进入passive mode。
230 使用者登入。
250 请求的文件操作完成。
257 显示目前的路径名称。
331 用户名称正确,需要密码。
332 登入时需要账号信息。
350 请求的操作需要进一部的命令。
421 无法提供服务,关闭控制连结。
425 无法开启数据链路。
426 关闭联机,终止传输。
450 请求的操作未执行。
451 命令终止:有本地的错误。
452 未执行命令:磁盘空间不足。
500 格式错误,无法识别命令。
501 参数语法错误。
502 命令执行失败。
503 命令顺序错误。
504 命令所接的参数不正确。
530 未登入。
532 储存文件需要账户登入。
550 未执行请求的操作。
551 请求的命令终止,类型未知。
552 请求的文件终止,储存位溢出。
553 未执行请求的的命令,名称不正确

freebsd 7.0 vsftpd如何启动!!

etc/rc.conf中添加
vsftpd_enable=”YES”

/usr/local/etc/vsftpd.conf中添加

listen=YES
background=YES

就可以了,还真是挺复杂,每个软件安装了都要修改配置文件才能启动!!
如果出现错误

500 OOPS: vsftpd: cannot locate user specified in ‘ftp_username’:ftp在vsftpd.conf中加入了ftp_username=xxx(用户)

以下命令可以用来重启vsftpd服务
# /usr/local/etc/rc.d/vsftpd restart

[教程]FreeBSD下vsftp安装配置详解(ports方式)

FreeBSD功能强大,ftp服务器只是它其中的很基础的一种服务,但是作为日常的服务器运作ftp服务却是必不可少,本篇是本人自己在学习FreeBSD的服务器设置过程中的一些积累,因为自己也曾是由菜鸟入门,走了不少弯路,现在把自己的一些经验总结出来,供大家参考,希望对新人能有所帮助,不足之处还请大家多多指点.

1、安装

通过ports安装,这个方式比较简单。

# cd /usr/ports/ftp/vsftpd
# make install


安装过程中会弹出一个对话框架,选中第一个选项,我以前没有选中,结果安装完以后,在/usr/local/etc/rc.d/目录里没有vsftpd这个命令,导致启动的时候出现以下错误信息:
”500 OOPS: vsftpd: cannot open config file:start”

2、配置

/usr/local/etc/vsftpd.conf文件一般按以下配置就差不多了:

anonymous_enable=NO

local_enable=YES

write_enable=YES

local_umask=022

chroot_list_enable=YES (开启锁定用户目录)

listen=YES

background=YES

(1)编辑/usr/local/etc/vsftpd.conf

# ee /usr/local/etc/vsftpd.conf

Anonymous_enable=NO (禁止匿名登陆)

Local_enable=YES (允许本地用户登陆)

Local_umask=022 (FTP上本地的文件权限755,默认是077)

Connect_form_port_20=yes (启用FTP数据端口的数据连接)

Xferlog_enable=yes (激活上传和下传的日志)

Xferlog_std_format=yes (使用标准的日志格式)

Idle_session_timeout=120(秒) (用户会话空闲后2分钟)

Data_connection_timeout=300(秒) (将数据连接空闲5分钟断)

Ascii_upload_enable=YES (起用ASCII方式上传)

Ascii_download_enable=YES帮带(起用ASCII方式下载)

Ftpd_banner=Welcome to blah FTP service. (FTP服务器登陆欢迎信息)

Chroot_list_enable=YES (开启锁定用户目录)

Chroot_list_file=/任意路径/vsftpd.chroot_list (开启锁定用户目录后,凡在这个文件里出现的用户名都不起使用,格式为每个用户一行,要与Chroot)_list_enable=YES 配对使用)

注:如果想把本地的任何用户都锁定在自己的目录中的话,把上面两行(Chroot_list_enable 和 Chroot_list_file)注释掉,再增加这一样

Chroot_local_user=YES

保存退出

(2)编辑/etc/inetd.conf

# ee /etc/inetd.conf

增加这一行并去掉前面的注释(#号)

#ftp   stream tcp    nowait root    /usr/local/libexec/vsftpd     vsftpd

保存退出

(3)编辑/etc/rc.conf

# ee /etc/rc.conf

增加下面内容:

inetd_enable=”YES”

注:以上是以inetd的方式启动vsftp的,我们也可以以独立进程的方式启动vsftp,具体如下:

a、注释掉inetd里面的vsftpd这一行。

b、在vsftpd.conf文件里增加

listen=YES
background=YES

c、启用ftp服务:

#/usr/local/etc/rc.d/vsftpd restart

或者

#/usr/local/libexec/vsftpd &

d、想要让vsftp随系统启动,这里有两种方法:
法一:在/etc/rc.conf文件里添加

vsftpd_enable=”YES”.

法二:在/usr/local/etc/rc.d/目录里增加一个sh脚本:

# vi vsftpd_start.sh

# ! /bin/sh

/usr/local/libexec/vsftpd &

保存退出,再chmod 755 vsftpd_start.sh 。

(4)添加用户

# pw groupadd vsftpd –g 1001

# pw useradd test –g 1001–d /home/test –s /sbin/nologin

# mkdir /home/test

# passwd test               设密码

Changing local password for test

New Password:

Retype New Password:

#

上面的 -d /home/test 为用户的默认默认,这里改为ftp目录的路径,这样用户直接登录后的位置就是ftp的位置了.

vsftpd.chroot_list文件里增加 test 一行,把test用户锁在其自家目录下。

#touch /etc/vsftpd.chroot_list
#echo ‘test’  >> /etc/vsftpd.chroot_list

# killall -HUP inetd,(如果是独立进程则执行上面写的那个脚本即可)测试一下:

# ftp localhost

如果成功会提示你输入用户名和密码

如果不成功,请查看一下你上面的配置

一般不成功是由于权限引起的问题,如无法上传文件,此时可以用ls -al查看一下FTP文件夹的详细权限,一般设置文件的权限为
-rw- r– r- –

就可以了.

看文件夹所有者是不是ftp用户组里的用户,还是用户组是不是正确的,如果说不正确可以用chmod命令修改一下所有者,如修改文件haohtmlcom文件夹的所有都是vsftpd用户组里的test用户,执行#chmod -R 701 /usr/local/www/haohtmlcom命令即可,这样此文件夹只能允许vsftpd组里的test用户访问,组中的其它用户无法进行访问(700),当然也可以设置其它用户组里用户,这种情况一般用于为一个站点开设两个ftp用户时使用,只需要执行#chmod -R 771 /usr/local/www/haohtmlcom即可.上面的-R参数是为了所权限应用到子目录,不然只能当前目录起作用的,无法达到用户的使用要求.

#chown -R test:vsftpd /
usr/local/www/haohtmlcom
如果还不行请参考:http://blog.haohtml.com/index.php/archives/2682

启动vsftp服务
# /usr/local/etc/rc.d/vsftpd restart

(5)用户功能权限配置

以下是一些用户的配置:

Anonymous_enable=yes (允许匿名登陆)

Dirmessage_enable=yes (切换目录时,显示目录下.message的内容)

Local_umask=022 (FTP上本地的文件权限,默认是077)

Connect_form_port_20=yes (启用FTP数据端口的数据连接)

Xferlog_enable=yes (激活上传和下传的日志)

Xferlog_std_format=yes (使用标准的日志格式)

Ftpd_banner=XXXXX (欢迎信息)

Pam_service_name=vsftpd (验证方式)

Listen=yes (独立的VSFTPD服务器)

Anon_upload_enable=yes (开放上传权限)

Anon_mkdir_write_enable=yes (可创建目录的同时可以在此目录中上传文件)

Write_enable=yes (开放本地用户写的权限)

Anon_other_write_enable=yes (匿名帐号可以有删除的权限)

Anon_world_readable_only=no (放开匿名用户浏览权限)

Idle_session_timeout=600(秒) (用户会话空闲后10分钟)

Data_connection_timeout=120(秒) (将数据连接空闲2分钟断)

Accept_timeout=60(秒) (将客户端空闲1分钟后断)

注意:此方法好像一般不用的,为了安全一般在vsftpd下创建虚拟用户的方法的,详见:FreeBSD vsftpd+pam虚拟用户方案配置