vsftpd(Very Secure FTP Daemon)是一款流行的Linux系统FTP服务器程序。下面讲解一下vsftpd的安装、配置及使用。
一、vsftpd的安装
1、使用 yum install vsftpd 安装ftp服务器程序
[root@aliyun ~]# yum install vsftpd
2、使用 yum install ftp 安装ftp客户端程序
[root@aliyun ~]# yum install ftp
3、启动 vsftpd
[root@aliyun ~]# service vsftpd start
4、使用 ftp 客户端连接登陆 vsftpd 服务器
[root@aliyun ~]# ftp
ftp > open localhost
Name (localhost:root): anonymous
Password:
230 Login successful
ftp > ls
drwxr-xr-x 2 0 0 4096 Nov 20 19:22 pub
注:
1)安装 vsftpd 时默认允许匿名登陆,所以在使用客户端连接到 vsftpd 服务器时,可以使用登陆名为 ftp 或 anonymous,口令为空的方式登陆。
2)匿名用户不能离开匿名用户的家目录 /var/ftp/pub,且只能下载,不能上传
3)如果使用service vsftpd start无法启动 vsftpd 服务的话,可以使用 /etc/rc.d/init.d/vsftpd start 来启动
二、vsftpd的配置
1、默认配置详解
# 允许匿名用户登陆,登陆时登陆名为 ftp 或 anonymous,口令为空
anonymous_enable=YES
# 允许本地用户登陆,登陆名为本地用户名,口令为本地用户的口令
local_enable=YES
# 允许本地用户写拥有FTP服务器文件的写权限
write_enable=YES
# 本地用户的文件默认掩码022,文件的默认最大权限为666,也就是上传文件的默认权限为644
local_umask=022
# 激活目录的欢迎信息功能
dirmessage_enable=YES
# 启用上传和下载日志功能,该日志文件默认的存放位置为 /var/log/xferlog
xferlog_enable=YES
# 指定FTP使用20端口进行数据传输(默认FTP工作模式为被动模式,也就是PASV FTP,服务器将使用20端口与客户端进行数据传输)
connect_from_port_20=YES
# 启用xferlog的标准格式输出
xferlog_std_format=YES
# 设置vsftpd服务器不以standalone模式运行
listen=NO
# 支持ipv6
listen_ipv6=YES
# 设置PAM使用的名称,默认值为 /etc/pam.d/vsftpd
pam_service_name=vsftpd
# 启动user_list文件(该选项需与userlist_deny选项配合使用,userlist_deny默认为YES,也就是说默认请况下user_list表中的用户将被阻止登陆ftp服务器)
userlist_enable=YES
# 设置vsftpd与tcp wrapper组合来进行访问控制,YES的情况下,vsftpd将检查/etc/hosts.allow以及/etc/hosts.deny中的设置,来进行主机的访问控制
tcp_wrappers=YES
注:
1)在默认的配置中,我们可以看到,/etc/vsftpd/user_list文件中的用户是无法访问vsftpd服务器的,另外需要特别注意的是 /etc/vsftpd/ftpusers文件中的用户也是无法访问vsftpd服务器的,至于为何要分两个文件,因为user_list指定的是本地用户,而ftpusers指定的是虚拟用户。
三、vsftpd的本地测试用户
1、添加本地ftp测试用户 ftptest,并将该测试用户的家目录设置为 /home/ftptest
[root@aliyun ~]# useradd -d /home/ftptest ftptest
2、为ftptest用户设置密码
[root@aliyun ~]# passwd ftptest
3、限制ftptest使用telnet登陆
[root@aliyun ~]# usermod -s /sbin/nologin ftptest
四、限制本地测试用户只能访问家目录
在 /etc/vsftpd/vsftpd.conf 配置文件中添加如下信息:
# 限制指定用户只能访问家目录
chroot_list_enable=YES
# 设置受限制的用户配置文件
chroot_list_file=/etc/vsftpd/chroot_list
新建 chroot_list 文件,并将受限制的用户添加进去
[root@aliyun vsfptd]# touch chroot_list
[root@aliyun vsftpd]# echo ftptest >> chroot_list
设置成功后,重启 vsftpd
[root@aliyun vsftpd]# service vsftpd restart
注:
1)当我们限制用户不能跳出其家目录之后,使用该用户登陆FTP时会报错:
500 OOPS: vsftpd: refusing to run with writable root inside chroot()
原因是因为,如果该用户被限制在其家目录下,则该用户对家目录不能再拥有写权限,修复这个错误,可以使用
[root@aliyun ~]# chmod 500 /home/ftptest
来去掉ftptest对家目录的写权限,这时可能有人会问,去掉了写权限,那ftptest用户该怎么使用ftp来上传文件呢?其实可以通过在ftptest家目录下新建文件夹,再将文件上传到家目录的子目录下即可
当然还有一种解决方式是在vsftpd.conf中添加一行:
allow_writeable_chroot=YES