1)安装vsftpd
Ubuntu安装软件倒不是件困难的事,输入:
sudo apt-get install vsftpd
可能会提示你使用光盘,放进去再按回车就行了。
安装了之后会在/home/下建立一个ftp目录。这时候你可以试着访问下ftp://IP地址。应该可以看到一个空白内容的ftp空间。
默认设置下匿名用户可以下载,但不能写入或是上传
2)设置 vsftpd.conf文件
现在我们要让匿名用户无法访问,并且得输入linux上的用户密码后才能访问到他们自己目录里的内容。
首先找到设置vsftpd的文件,位置在/etc/vsftpd.conf
修改之前最好先备份下这个文件:
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.old
然后可以改动了:
#不让匿名用户使用#anonymous_enable=YES #本地用户可用local_enable=YES
#可用写操作write_enable=YES #不需要显示某目录下文件信息#dirmessage_enable=YES
#加点banner提示ftpd_banner=Hello~~ #FTP服务器最大承载用户max_clients=100
#限制每个IP的进程max_per_ip=5 #最大传输速率(b/s)local_max_rate=256000
#隐藏帐号hide_ids=YES
好了,重启下ftp 服务器看看效果
重启后还是和原来一样对吗?呵呵,这是默认的ftp目录在做鬼,我们把它删除,再看看。怎么样?要你输入用户名和密码了吧。
新的问题
1.输入用户名密码后显示的位置是在用户的根目录下,而我们的WEB内容是在public_html目录里
2.用户可以跳到任何其他目录(非常危险..)
要解决这些问题我们还得设置下vsftpd.conf
#启动chroot列表(Change root)chroot_list_enable=YES #指定列表位置(我这用的是默认地址)chroot_list_file=/etc/vsftpd.chroot_list
接下来我们得在vsftpd.chroot_list上写进去我们要限制哪些用户,不让他们“漂移”..
现在有用户linyupark,所以只要sudo nano一下,往里面写就行了
这样我们已经解决第2个问题了,登陆的用户只能在它的用户文件夹里活动,下面我们要更狠一点,让他只能在public_html里活动
依然还是找vsftpd.conf
#这句默认设置里是没有的,自己加user_config_dir=/etc/自己定义一个设置个别用户用的文件夹地址
根据自己设置的地址,建立一个相应的文件夹,然后往里面建立和用户名相同的文件,nano一下:
#本地用户的根地址,假设用户是linyuparklocal_root=/home/linyupark/public_html
好咯,重启下服务器。看看效果吧。
6.5、虚拟用户的配置
6.5.1、VSFTPD的虚拟用户介绍
VSFTPD的虚拟用户则是FTP服务的专用用户,虚拟用户只能访问FTP服务器资源。
VSFTPD的虚拟用户采用单独的用户名/口令保存方式,与系统账号(passwd/shadow)分离,这大大增
强了系统的安全性。由于虚拟用户的用户名/口令被单独
保存,因此在验证时,VSFTPD需要用一个系统用户的身份来读取数据库文件或数据库服务器以完成验证,
这就是guest用户,这正如同匿名用户也需要有一个系统用户ftp一样。当然,guest用户也可以被认为是
用于映射虚拟用户。在后面的例子中,假定存在虚拟用户xiaotong和xiaowang。
6.5.2 用户创建和目录设置
在系统中添加vsftpdguest用户,作为虚拟用户在系统中的代表。
useradd vsftpdguest
建立一个虚拟用户
useradd -d /home/vsftpd -s /sbin/nologin vsftpd
当虚拟用户登录后,所在的位置为vsftpdguest的自家目录/home/vsftpdguest。如果要让虚拟用户登
录到/var/ftp等其他目录,修改vsftpdguest的自家目录即可。
由于要按照虚拟用户模式登陆,安装db4.2-util包
.
2
-util
建立一个login文件,里面包含虚拟用户信息,比如
------------------------------------------
test1 用户名
passwd1 密码
test2 用户名
passwd2
密码
这里注意要最后一行要回车
-------------------------------------------
建立数据库文件
.
2_load -T -t hash -f login
/
etc
/
vsftpd
/
vsftpd_login
.
db
更改数据库文件的权限
600
/
etc
/
vsftpd_login
.
db
生成新的PAM文件新建/etc/pam.d/vsftpd.vu 内容如下:
/
lib
/
security
/
pam_userdb
.
so db
=/
etc
/
vsftpd
/
vsftpd_login
account required
/
lib
/
security
/
pam_userdb
.
so db
=/
etc
/
vsftpd
/
vsftpd_login
6.5.3、配置文件的设置
6.5.3.1、基本设置。
在vsftpd.conf配置文件中,加入以下参数:
guest_enable=YES
guest_username=vsftpdguest
6.5.3.2、虚拟用户的权限配置。
在VSFTPD-1.2.0中当virtual_use_local_privs=YES时,只需write_enable=YES,虚拟用户就可以就
拥有写权限。
6.5.3.3、虚拟用户的其他配置
①限定虚拟用户在自家目录。
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
在/etc/vsftpd.chroot_list文件中加入xiaotong和xiaowang。
或者,chroot_local_user=YES
②虚拟用户的个人配置。
如果想让个别的虚拟用户拥有自己特别的配置,同样可以建立虚拟用户的个人配置文件。在主配置文
件中加入:
user_config_dir=/etc/vsftpd/vsftpd_user_conf
特别注意:笔者在配置过程中出来user_config_dir无效的情况,笔者设为/etc/vsftpd/userconf无效,
而/etc/vsftpd/userconf确实存在,而且下面的相应的用户文件也存在。后来在etc目录下建立一个任意取了个名字的目录,将2个文件拷
入,将user_config_dir设为这个任意建立的目录,成功。可能因为笔者的guest_username名为vsftpd的原因吧。
生成/etc/vsftpd/vsftpd_user_conf目录,在该目录下建立与特定虚拟用户同名的文件:
[root@hpe45 vsftpd]# mkdir vsftpd_user_conf
[root@hpe45 vsftpd]# cd vsftpd_user_conf
[root@hpe45 vsftpd_user_conf]# touch xiaowang
然后在xiaowang文件中就可以加入专对xiaowang生效的选项设置了。
注:如果在个人配置文件中加入chroot_local_user=YES是无效的。
6.5.3.4、虚拟用户个人目录设置
大家可以发现,无论是哪个虚拟用户,登录后所在的目录都是/home/vsftpdguest,即都是
guest_username用户的自家目录。下面,介绍如何为每个虚拟用户建立自家目录。
一种作法是在虚拟用户的个人配置文件中使用local_root选项指定虚拟用户的自家目录。以xiaowang
为例,在第上步的基础上,首先/etc/vsftpd/vsftpd_user_conf/xiaowang文件中加入:
local_root=/home/xiaowang
新建xiaowang目录,并将权限设为vsftpdguest:
[root@hpe45 home]# mkdir xiaowang
[root@hpe45 home]# chown vsftpdguest.vsftpdguest ./xiaowang
好了,重启下ftp 服务器:
/ etc/ init.d/ vsftpd restart
最后注意一点,使用CUTEFTP的要注意,登录时要选择标准FTP方式,不是SFTP方式,这样才能测试