原文地址:http://blog.sina.com.cn/s/blog_5e796a360100cgfu.html
重新安装和配置虚拟用户
以下都是在root用户下进行的
#tar zxvf vsftpd-2.0.5.tar.gz ——解压
#cd vsftpd-2.0.5.tar.gz ——解压后进入vsftpd-2.0.5.tar.gz目录
# mkdir /usr/share/empty/ ——VSFTPD默认设置需要一个空目录:/usr/share/empty
# mkdir /var/ftp/ ——如果容许匿名用户(anonymous),那么你将需要一个"ftp"用户和其home目录(这个home目录不属于“ftp”用户,而且“ftp"用户也对其没有写权限)在你的系统中存在。
#adduser 然后回车,依照程序说明来添加两个用户"nobody" 和"ftp" ,'nobody'一般都已经存在来,如果添加时提示用户已经存在,就不用添了。 'ftp'用户设置时主目录都设在/var/ftp
#chmod 755 /var/ftp ——把/var/ftp目录的权限设为drwxr-xr-x
#make
#make install
#cp vsftpd.conf /etc ——"make install"不会拷贝默认的配置文件,所以手工拷贝过去。不同的系统位置可能不一样,看一下,如果有/etc/vsftp目录的话,就拷贝到/etc/vsftp下
安装完成。
测试一下:
编辑/etc/vsftpd.conf, 在最下面加入以下这一行:
listen=YES
{
匿名服务器的连接(独立的服务器):
在/etc/vsftpd/vsftpd.conf配置文件中添加如下几项:
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服务器)*
功能:只能连接FTP服务器,不能上传和下传
注:其中所有和日志欢迎信息相关连的都是可选项,打了星号的无论什么帐户都要添加,是属于FTP的基本选项
开启匿名FTP服务器上传权限
在配置文件中添加以下的信息即可:
Anon_upload_enable=yes (开放上传权限)
Anon_mkdir_write_enable=yes (可创建目录的同时可以在此目录中上传文件)
Write_enable=yes (开放本地用户写的权限)
Anon_other_write_enable=yes (匿名帐号可以有删除的权限)
开启匿名服务器下传的权限
在配置文件中添加如下信息即可:
Anon_world_readable_only=no
注:要注意文件夹的属性,匿名帐户是其它(other)用户要开启它的读写执行的权限
(R)读-----下传 (W)写----上传 (X)执行----如果不开FTP的目录都进不去
普通用户FTP服务器的连接(独立服务器)
在配置文件中添加如下信息即可:
Local_enble=yes (本地帐户能够登陆)
Write_enable=no (本地帐户登陆后无权删除和修改文件)
功能:可以用本地帐户登陆vsftpd服务器,有下载上传的权限
注:在禁止匿名登陆的信息后匿名服务器照样可以登陆但不可以上传下传
用户登陆限制进其它的目录,只能进它的主目录
设置所有的本地用户都执行chroot
Chroot_local_user=yes (本地所有帐户都只能在自家目录)
设置指定用户执行chroot
Chroot_list_enable=yes (文件中的名单可以调用)
Chroot_list_file=/任意指定的路径/vsftpd.chroot_list
注意:vsftpd.chroot_list 是没有创建的需要自己添加,要想控制帐号就直接在文件中加帐号即可
限制本地用户访问FTP
Userlist_enable=yes (用userlistlai 来限制用户访问)
Userlist_deny=no (名单中的人不允许访问)
Userlist_file=/指定文件存放的路径/ (文件放置的路径)
注:开启userlist_enable=yes匿名帐号不能登陆
安全选项
Idle_session_timeout=600(秒) (用户会话空闲后10分钟)
Data_connection_timeout=120(秒) (将数据连接空闲2分钟断)
Accept_timeout=60(秒) (将客户端空闲1分钟后断)
Connect_timeout=60(秒) (中断1分钟后又重新连接)
Local_max_rate=50000(bite) (本地用户传输率50K)
Anon_max_rate=30000(bite) (匿名用户传输率30K)
Pasv_min_port=50000 (将客户端的数据连接端口改在
Pasv_max_port=60000 50000—60000之间)
Max_clients=200 (FTP的最大连接数)
Max_per_ip=4 (每IP的最大连接数)
Listen_port=5555 (从5555端口进行数据连接)
查看谁登陆了FTP,并杀死它的进程
ps –xf |grep ftp
kill 进程号
}
(机器环境:主机系统winxp,vmware6.0,Redhat Linux 9,vsftp 2.0.5)
我是用源码的形式安装的,安装过程很简单,在安装包中有README文件介绍的很详细,按照步骤来就可以了。
重点是安装完后的配置过程.
vsftpd的启动有两种方式,这里主要是记录了一种即:
[root@localhost ~]# /usr/sbin/vsftpd &
[root@localhost ~]# /usr/local/sbin/vsftpd &
vsftpd服务是否启动起来:
我们可以通过pgrep vsftpd 来查看vsftpd是否启动起来.
[root@localhost ~]# pgrep vsftpd
4248
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
修正这个错误,应该用下面的办法;
[root@localhost ~]# chown
[root@localhost ~]# chmod
有的弟兄可能会说,那匿名用户的可读、可下载、可上传怎么办呢?这也简单,在/var/ftp下再建一个目录,权限是777的就行了,再改一改vsftpd.conf就OK了;没有什么难的;
vsFTPd出于安全考虑,是不准让ftp用户的家目录的权限是完全没有限制的,您可以去读一下vsFTPd的文档就明白的了;否则也不能称为最安全的FTP服务器了,对不对?
vsftp的配置文件为/etc/vsfptd.conf(根据环境不同,会有所不同),在安装包里有个示例的配置文件可参考.
(其实如果英文好的话,感觉应该是没有什么难度的.)
以下内容出自:http://www.linuxsir.org/main/node/152
8、关于vsFTPd服务器的一些常用功能的实现;
8.1、关于匿名上传下载的实现;
关于匿名上传,其实也比较简单,首先我们要修改一下vsftpd.conf ,此文件位于 /etc/目录下,可能是/etc/vsftpd.conf,也可能是/etc/vsftpd/vsftpd.conf文件。以您的系统环境为准;
首先:我们要改一下vsftpd.conf,确保有以下几行;
anonymous_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_umask=022
其次:在ftp用户家目录的下建一个文件夹,并修改其权限为完全开放;
ftp用户的家目录在哪?我们前面已经说了,要通过/etc/passwd来查看;也可以通过finger ftp来查看;
[root@localhost beinan]# finger ftp
Login: ftp
Directory: /var/ftp
这说明ftp用户的家目录在/var/ftp ,我们要在这个目录下建一个目录,然后把他的权限设置为任何用户可读可写可执行就行了;一般的情况下,在发行版中,有一个/var/ftp/pub的目录,如果没有,您也可以自己建一个;把配置文件改好后,只要把/var/ftp下的任何一个目录的权限打开,都可以用来匿名上传和下载;
比如您想让匿名用户上传和下载都在/var/ftp/pub,就可以把/var/ftp/pub的权限打开,如果没有这个目录,您要自己建一个;
[root@localhost ~]# mkdir /var/ftp/pub
[root@localhost ~]# chmod 777 /var/ftp/pub
这样上传的时候传到pub目录就OK了,对不对??
8.2、关于添加本地用户及打开读写权限示例;
FTP用户一般是不能登录系统的,这也是为了安全。在系统中,没有权限登录系统的用户一般也被称之为虚拟用户;虚拟用户也是要写进 /etc/passwd中;这只是一种虚拟用户的方法,但说实在的并不是真正的虚拟用户,只是把他登录SHELL的权限去掉了,所以他没有能力登录系统;
如果我们想把beinan这个用户目录定位在/opt/beinan这个目录中,并且不能登录系统;我们应该如下操作
[root@localhost ~]# adduser -d /opt/beinan -g ftp -s /sbin/nologin beinan
[root@localhost ~]# passwd beinan
Changing password for user beinan.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
[root@localhost ~]#
其实这还是不够的,还要改一下配置文件vsftpd.conf ,以确保本地虚拟用户能有读写权限;
local_enable=YES
write_enable=YES
local_umask=022
8.4、如何实现虚拟路径?
比如:
/home/a 映射为 ftp://localhost/a
/home/b/c 则为 ftp://localhost/c
其实这个不能说是vsFTPd的内容,其实我们早就接触过了,可能我们没有注意,我们可以通过如下的方法来实现。
[root@localhost ~]# mount --bind [原有的目录] [新目录]
比如我的ftp的默认目录是/var/ftp,我想把/mnt/LinG/WinSoft文件夹,映射到/var/ftp目录中,我就如下操作
我们要先在/var/ftp目录中建一个目录
[root@localhost ~]# mkdir /var/ftp/WinSoft
然后执行mount命令
[root@localhost ~]# mount --bind /mnt/LinG/WinSoft /var/ftp/WinSoft
这样就OK了。
8.5、打开vsFTP服务器的日志功能;
把下面xferlog_file前面的#号对掉,也就是把vsftp的log功能打开,这样我们就能在/var/log目录下查看vsftpd.log。这是vsFTP的日志功能,这对于我们来说是极为重要的。
xferlog_file=/var/log/vsftpd.log
8.6、如何定制欢迎信息;
如何定制欢迎信息,也就是我们登入有些FTP之后,会出现类似:欢迎您来到LinuxSir FTP,在这里,您会得到最真诚的帮助,如果有什么问题和建议,请来信,多谢。
实现这个并不难,我们可以查看vsftpd.conf文件中,是否有这行。
dirmessage_enable=YES
message_file=.message
如果没有就加上,如果dirmessage_enable=YES前面有#号,就把#号去掉。其实FTP信息默认的就是.message,所以可以不加 message_file= 来指定。自己指定也行,无所谓的事;
然后我们制定一个.message文件,写上您想要写的东西,比如是.message的内容是如下的:
--欢迎您来到LinuxSir FTP!
--在这里,您会得到最真诚的帮助;
--如果有什么问题和建议,请来信,多谢。
我们可以用编辑器来写这个.message,我想这个过程就不用说了吧。
然后我们把.message这个文件复制到各个用户的家目录中。比如我的FTP的一个用户是beinan,这个用户所在的家目录是/opt/beinan
我们就要把.message放在/opt/beinan这个目录下。如果系统用户ftp,他的目录就是/var/ftp这个目录,这个是默认的,当匿名用户登入时就访问的是/var/ftp这个目录。我们要让匿名用户能看到欢迎信息。就要把.message放在/var/ftp目录中。其它的用户,也无非就是类似的操作。
8.7、硬盘空间有限,如何把帐号ftp默认的家目录更改到别处?
我的硬盘空间有限,如何把帐号ftp默认的路径/var/ftp更改到别处?或者是,我的linux所有的目录都放在/根分区,因为空间紧张,我能否把ftp这个用户的默认路径放到别的分区??
对于ftp这个用户的管理,我们应该查看/etc/passwd ,然后修改ftp用户那行;
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
比如我们想把ftp用户的家目录改为/opt/ftp,则要把类似上一行改为
ftp:x:14:50:FTP User:/opt/ftp:/sbin/nologin
然后我们要建立ftp用户的新的家目录;
[root@localhost ~]# mkdir /opt/ftp
[root@localhost ~]# chmod 755 /opt/ftp
[root@localhost ~]# chown root:root /opt/ftp
如果默认的ftp磁盘空间紧张,我们其实也可以用虚拟路径映射的方法来解决;也就是mount --bind的办法;看情况吧,哪个适合就是最好的方法;
8.8、如何让vsFTP服务器限制链接数,以及每个IP最大的链接数?
应该改vsFTPd服务器的配制文件vsftpd.conf,加入下面的两行:
max_clients=数字
max_per_ip=数字
举例:我想让我的vsFTP最大支持链接数为100个,每个IP,最多能支持5个链接,所以我应该在vsftpd.conf中加上如下的两行:
max_clients=100
max_per_ip=5
改好了配制文件,不要忘记启动vsftp服务器。
8.9、如何限制传输速度?
anon_max_rate=数字
注:这是匿名的速度
local_max_rate=数字
注:这是vsFTP服务器上本地用户的速度
注:这个数字的单位是byte,所以我们要计算一下。比如我想让匿名用户和vsFTP上的用户都以80KB下载,所以这个数字应该是1024x80=81920
所以我们要在vsftpd.conf中加入下面的两行
anon_max_rate=81920
local_max_rate=81920
8.10、如何有选择的把用户限制在家目录中呢?
我们要自己建一个文件,在/etc目录中或/etc/vsftpd目录中(假如您的vsftpd配置文件都是放在这个目录的话);
#touch /etc/vsftpd.chroot_list
以beinan和nanbei这两个用户限制在他们所在的家目录中,而其它的FTP用户不做此限制。
在vsftpd.chroot_list这个文件中,?%