LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1316|回复: 12

请教:vsftpd 不能用匿名用户登陆是否和其进程帐户有关?

[复制链接]
发表于 2005-1-25 00:58:09 | 显示全部楼层 |阅读模式
vsftpd 不能用匿名用户登陆,返回如下错误:
Login failed: 500 OOPS: vsftpd: refusing to run with writable anonymous root
无论是用 xinetd 还是用 standalone 模式都是如此。
用 ps aux | grep vsftpd 查看,发现 vsftpd 进程的帐户是 root,可能和这个有关,怎样改变呢?

谢谢。
发表于 2005-1-25 09:01:35 | 显示全部楼层
应该无关,但你可以用ftp来运行是一下
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-1-25 23:54:22 | 显示全部楼层
我运行 lftp、ftp、gftp 都得到相同的结果。

我从新安装了 vsftpd,并使用其默认的配置文件,是允许匿名的:
anonymous_enable=YES

但还是这个结果:
500 OOPS: vsftpd: refusing to run with writable anonymous root

:--(
回复 支持 反对

使用道具 举报

发表于 2005-1-26 16:52:35 | 显示全部楼层
我用的是proftp而不是vsftp,但我觉得他们肯定会有些类似的地方,所以有些个人的体会希望可以跟楼主分享:

linux的ftp server用户首先是系统用户(当然这种说法不是绝对,比如proftp可以采用mysql存储专门的ftp用户帐号信息,这是题外话了),也就是说——如果你的linux server有一个叫abb的用户,你完全以用户abb和abb的密码登陆该server的ftp,当然这样的话肯定会有安全隐患,所以很多ftp默认是不允许root用户登录ftp的,而且……如果你把系统用户作为ftp用户发布出去的话,肯定也会有很大问题的(总会有那么一两个人惦记着用你的ftp用户试探登录你的服务器ssh服务、telnet服务,他们对这个比对ftp本身的兴趣更大),所以就引申出另外一个问题:如何建立一个只允许登陆ftp的特殊系统用户,如果有兴趣的可以在本论坛上搜索一下,有更多相关详细解释,我这里只简单提一下相关命令以供参考:

/usr/sbin/useradd -g  -d /home/ftp -s /etc/null linuxftp

这样就建立了一个没有实际shell的用户linuxftp,然后给linuxftp用户设定好密码后就可以把它发布给外部用户了,如果有外部用户试图用lnnuxftp登陆你服务器上ftp以外的服务,他就会沮丧的发现:除了一堆错误提示以外他什么都看不到

然后,回到一个靠近我们问题的地方来:那ftp的匿名用户(anonymous)又有什么特殊呢?我不知道vsftp的配置是怎么写的,但我的proftpd.conf有如下的几行定义:

  User                          guest
  Group                       ftp
  # We want clients to be able to login with "anonymous" as well as "ftp"
  UserAlias                     anonymous guest


看到注释了么?写的算是比较明白了,当外部用户用“anonymous”登陆ftp(注意这里)时,系统默认它是作为guest这个系统用户登入系统的(当然,你的系统里必须预先添加好guest用户)!你也可以理解为linux为他做了一个系统用户转换。所以,后面的事情就好做了,主要就是限定这个“guest"的权限、登入的shell等等,具体可以参考上面提到的做法

最后就是楼主的问题了:从楼主的出错提示来看,我估计可能是在配置文件里把anonymous用户指定到root上了,呵,如果真是这样的话那可真是很大的安全隐患呀,想想,如果每个匿名用户登上来就具有root权限(哪怕只是一部分)的话,后果真不堪设想,因此,建议楼主好好检查一下自己ftp的相关配置文件内容

罗嗦了一大堆,希望楼主和其他有类似问题的兄弟们能看明白,如果还有说不清楚的地方——大家在继续讨论
回复 支持 反对

使用道具 举报

发表于 2005-1-26 17:59:30 | 显示全部楼层
4楼的内容很经典!!!
不过可惜不是vsftp的解决方案
回复 支持 反对

使用道具 举报

发表于 2005-1-27 11:50:44 | 显示全部楼层
Post by longwu9t
4楼的内容很经典!!!
不过可惜不是vsftp的解决方案


是么??哦,那看来vsftp的配置习惯跟proftp不同了……呵,白说了一大堆,原来没帮上忙,见笑了
回复 支持 反对

使用道具 举报

发表于 2005-1-27 12:06:52 | 显示全部楼层
root应该是不可以从ftp登录的。
但这里的错误提示信息里的root不是指的root用户,而是ftp的根文件夹。
vsftp是不让anonymous写ftp的根文件夹的。

解决这个问题,你需要
#chmod 744 /your/ftp/rootDIR
然后,
#mkdir pub /your/ftp/rootDIR
chown ftp:ftp /your/ftp/rootDIR/pub
chmod 777 /your/ftp/rootDIR/pub

这里的文件夹的路径要根据你的机器里的情况修改。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-1-27 22:04:05 | 显示全部楼层
按楼上的,还是没有效果。

一下是我的 vsftpd.conf:
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
pam_service_name=vsftpd

anon_mkdir_write_enable=NO
chown_uploads=YES
chown_username=roc
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_lis
listen=YES

上面部分是默认配置,下面是我后来加入的。但不管用什么方式,都无效。

用 ftp 连接:
$ ftp localhost
Connected to localhost (127.0.0.1).
220 ready, dude (vsFTPd 1.1.0: beat me, break me)
Name (localhost:roc): anonymous
331 Please specify the password.
Password:
500 OOPS: vsftpd: refusing to run with writable anonymous root
Login failed.
421 Service not available, remote server has closed connection

不清除 421 表示什么意思?需要指出的是,用另外一个用户可以登陆!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-1-29 20:55:14 | 显示全部楼层
如果建立的用户指定的 shell 为 /sbin/nologin,再使用 vsftpd 的 chroot 选项,这个帐户和 anonymous 有什么区别吗?
回复 支持 反对

使用道具 举报

发表于 2005-9-5 18:19:27 | 显示全部楼层
查了查国外网站的一些资料,判断是编译内核时“安全选项”没配置好,因为我前几天新编译了2.6.12的内核,

今天把Security options --->
  • Enable different security models
    <*> Default Linux Capabilities
    选中,重新编译内核,启动后试了试ftp,一切正常,象以前一样了!
  • 回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    快速回复 返回顶部 返回列表