Ubuntu 用vsftpd 配置FTP服务器

本文在Ubuntu Server 14.04 amd64系统测试。

Made By:CSGrandeur

安装ftp

sudo apt-get install vsftpd

配置vsftpd.conf

sudo nano /etc/vsftpd.conf

复制代码

#禁止匿名访问
anonymous_enable=NO
#接受本地用户
local_enable=YES
#允许上传
write_enable=YES
#用户只能访问限制的目录
chroot_local_user=YES
#设置固定目录,在结尾添加。如果不添加这一行,各用户对应自己的目录,当然这个文件夹自己建
local_root=/home/ftp

复制代码

看网上说加一行“pam_service_name=vsftpd”,我看我这个配置文件本来就有,就不管了。

添加ftp用户

sudo useradd -d /home/ftp -M ftpuser
sudo passwd ftpuser

调整文件夹权限

这个是避免“500 OOPS: vsftpd: refusing to run with writable root inside chroot()”

sudo chmod a-w /home/ftp
sudo mkdir /home/ftp/data

这样登录之后会看到data文件夹,虽然稍麻烦,原因不表了。。查资料这么辛酸已经不易。。

改pam.d/vsftpd

这时候直接用useradd的帐号登录ftp会530 login incorrect

sudo nano /etc/pam.d/vsftpd

注释掉 

#auth    required pam_shells.so

重启vsftpd

sudo service vsftpd restart

这时就可以用刚才建的ftpuser这个用户登录ftp了,看到的是local_root设置的/home/ftp,并且限制在该目录。

可以在浏览器用ftp://xxx.xxx.xxx.xxx访问,也可以用ftp软件比如flashFXP,密码就是ftpuser的密码。

关于用户访问文件夹限制

由chroot_local_user、chroot_list_enable、chroot_list_file这三个文件控制,转别人的一段话:

首先,chroot_list_enable好理解,就是:是否启用chroot_list_file配置的文件,如果为YES表示chroot_list_file配置的文件生效,否则不生效;
第二,chroot_list_file也简单,配置了一个文件路径,默认是/etc/vsftpd.chroot_list,该文件中会填入一些账户名称。但是这些账户的意义不是固定的,是跟配置项chroot_local_user有关的。后一条中说明;
第三,chroot_local_user为YES表示所有用户都*不能*切换到主目录之外其他目录,但是!除了chroot_list_file配置的文件列出的用户。chroot_local_user为NO表示所有用户都*能*切换到主目录之外其他目录,但是!除了chroot_list_file配置的文件列出的用户。也可以理解为,chroot_list_file列出的“例外情况”的用户。

 如果客户端登录时候提示“以pasv模式连接失败”

编辑/etc/vsftpd.conf

最后添加

pasv_promiscuous=YES

记得:sudo chown --recursive root:ftp ftpdata

然后再重启vsftpd服务。 

关于安装和删除vsftpd:

1)使用apt-get 工具安装vsftpd

sudo apt-get install vsftpd

2)

service vsftpd start   开启vsftpd服务

service vsftpd stop    停止vsftpd服务

service vsftpd restart  重启vsftpd服务

3)修改vsftpd配置文件

sudo vi /etc/vsftpd.conf  

4)主要相关配置

listen=YES                 # 服务器监听  

local_enable=YES         # 是否允许本地用户访问  

write_enable=YES         # 是否允许上传文件,不开启会报 550 permission denied 

 anonymous_enable=NO   # 匿名访问允许,默认不要开启

 #anon_upload_enable=YES # 匿名上传允许,默认是NO

 #anon_mkdir_write_enable=YES # 匿名创建文件夹允许  


5)用户访问目录的权限设置:

chroot_local_user=YES      # 用于指定用户列表文件中的用户是否允许切换到上级目录。默认值为NO。  chroot_list_enable=YES  # 设置是否启用chroot_list_file配置项指定的用户列表文件。默认值为NO。  chroot_list_file=/etc/vsftpd.chroot_list      #禁用的列表名单,格式为一行一个用户,用于指定用户列表文件,该文件用于控制哪些用户可以切换到用户家目录的上级目录。  
1).当chroot_list_enable=YES,chroot_local_user=YES时,在/etc/vsftpd.chroot_list文件中列出的用户,可以切换到其他目录;未在文件中列出的用户,不能切换到其他目录。

 (2).当chroot_list_enable=YES,chroot_local_user=NO时,在/etc/vsftpd.chroot_list文件中列出的用户,不能切换到其他目录;未在文件中列出的用户,可以切换到其他目录。

 (3).当chroot_list_enable=NO,chroot_local_user=YES时,所有的用户均不能切换到其他目录。

 (4).当chroot_list_enable=NO,chroot_local_user=NO时,所有的用户均可以切换到其他目录。 

6)

local_umask=022         # FTP上本地的文件权限,默认是077  dirmessage_enable=YES     # 进入文件夹允许  xferlog_enable=YES         # ftp 日志记录允许  connect_from_port_20=YES # 启用20号端口作为数据传送的端口  xferlog_enable=yes         # 激活上传和下传的日志  xferlog_std_format=yes     # 使用标准的日志格式 ftpd_banner=XXXXX 

7)配置完成后可以使用以下命令重启vsftpd以生效配置

sudo /etc/init.d/vsftpd restart  

或者  

sudo service vsftpd restart  

8)创建目录

mkdir -p /home/uftp

9)创建用户

sudo useradd -g ftp -d /home/uftp -m uftp

10)设置用户密码

sudo passwd uftp  123456

11)添加用户到用户权限文件中

编辑/etc/vsftpd.chroot_list文件,将ftp的帐户名添加进去,保存退出

sudo vim /etc/vsftpd.chroot_list

12)重启vsftpd服务

sudo service vsftpd restart  

13)删除用户

sudo  userdel uftp

14)卸载vsftpd

sudo apt-get remove --purge vsftpd
 

你可能感兴趣的:(Ubuntu 用vsftpd 配置FTP服务器)