Linux安装及配置vsftpd

BoyceNussba 8年前

来自: http://my.oschina.net/kolbe/blog/625468


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