Ubuntu下用Vsftpd 配置FTP服务器

安装ftp

安装完毕后,默认配置下就可以直接登录fpt://ip了,这里采用的是匿名登录,不需要输入用户名密码。实际上,vsftpd安装完毕后会创建一个ftp的账户,可以通过查看/etc/passwd文件得知,也可以看到ftp账户对应的家目录在/srv/ftp,所以匿名登录后实际上是进入了/srv/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”,我看我这个配置文件本来就有,就不管了。
注意一点,如果开启了日志功能,即:xferlog_enable=YES,则日志文件选项为xferlog_file=/var/log/vsftpd.log,该选项不修改的话,日志文件默认为/var/log/vsftpd.log,确保ftpuser用户对该文件有写入权限,如果对权限不熟悉或者怕麻烦的话,直接给666权限即可,即:chmod 666 /var/log/vsftpd.log。

添加Ftp用户

用户ftp是匿名登录时默认的用户,如果我们需要通过用户认证登录ftp的话,可以在配置文件中设置“允许本地用户”模式,即可以通过ubuntu系统中的账户登录到ftp。所以,这里重新创建一个新的用户专门用来登录ftp。使用下面的命令创建一个新用户ftpuser,-s指定shell(指定的/sbin/nologin实际上是一个无效的shell,也就使得该用户无法从系统登录), -m用于创建家目录(即/home/ftpuser)

useradd vsftpd -s /sbin/nologin -m ftpuser

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的密码。

关于用户访问文件夹限制
用ftpuser用户登录到FTP服务器时,默认进入的是/home/ftpuser目录,但是可以通过点击“上一级目录”进入上一级目录、上上一级目录或其他所有目录,这显然是不安全的,需要修改配置禁止该功能。
文章http://blog.chinaunix.net/uid-538992-id-100457.html和http://blog.csdn.net/fafa211/article/details/8095439?reload都讲到了解决该问题的办法,而且讲述基本一致。实际上就是配置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列出的“例外情况”的用户。

解释了这三个配置项的含义,就好办了,如文章http://blog.csdn.net/fafa211/article/details/8095439?reload所说。要限制所有用户切换到主目录之外的其他目录,只需配置一项:chroot_local_user=YES即可,chroot_list_file必须为空。

解决错误“500 OOPS: Vsftpd: Refusing To Run With Writable Root Inside Chroot()”

上一步配置完后,在浏览器中登录,如果没有意外的话将出现错误:“500OOPS: vsftpd: refusing to run with writable root inside chroot()”。关于这个错误,文章http://forum.ubuntu.org.cn/viewtopic.php?p=2748954提到了。我这里就采用文中的第一种解决方法,将用户家目录的可写属性去掉,在其中创建一个新的目录data,将需要上传的文件放到data中即可,如下:

#sudo chmod a-w /home/ftpuser

#sudo mkdir /home/ftpuser/data
打开关闭写权限

这项配置也是非常重要的,写权限即登录的用户可否上传文件、新建目录、删除文件或目录,搭建FTP一定要慎重考虑该权限,如果该FTP服务器仅仅是提供给用户下载用的,就可以关闭写权限,这样就更加安全。

配置该权限很简单,就是配置文件(/etc/vsftpd.conf)中的write_enable配置项,设置为YES打开写权限,设置为NO关闭写权限。

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

编辑/etc/vsftpd.conf

最后添加

PHP

pasv_promiscuous=YES

然后再重启Vsftpd服务。

启动关闭服务

每次修改配置后要重启服务使之生效,服务启动、停止和重启的命令如下:

service vsftpd
start/stop/restart

如果执行失败可以加上sudo。

配置vsftpd账户和目录权限

主要卡壳的地方是这2个配置:
userlist_enable=yes
userlist_deny=NO
userlist_file=/etc/vsftpd.user_list


#chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
这样设置后,vsftpd.user_list文件中列出的用户才有权限来访问ftp,vsftpd.chroot_list文件中列出的用户是无法随意进入系统的其他目录的,只能在自家目录下活动。

/etc/vsftpd.user_list文件和/etc/vsftpd.chroot_list文件是需要手动建立的,文件名和路径都随意,里面写入需要开放权限或限制的用户名,每行一个。

注意点:

1. 如果chroot_local_user设置激活(设为YES),则vsftpd.chroot_list文件中列出的用户是可以自由出入整个文件系统目录的,不止是自家目录。也不管chroot_list_enable是否被激活了。

2. 如果chroot_local_user设置未激活(设为NO或注释掉),同时chroot_list_enable=YES,则 vsftpd.chroot_list文件中列出的用户只能在自家目录下活动,否则还是可以自由出入其他一些目录的。[这才达到我的目的,因为这个设置, 我搞了好久,都是相信别人的配置和说明惹的弯路阿]

不足:

目前只是弄了本地系统用户的访问FTP权限,没有去弄虚拟用户访问。我暂时不需要,所以就没去仔细看这部分。

附件:

最后附上我的配置文件vsftpd.conf,配置中提到的两个文件/etc/vsftpd.user_list文件和/etc/vsftpd.chroot_list文件需要自己手动去建立,如上[问题总结 ]中所述

【总结】

(1) 其他的配置项,如:连接超时时间、最大连接数、下载速度限制、欢迎标语等等就不需要介绍了,这些随便查查资料就能明白了。上面介绍的都是关键配置,有了这些配置就能保证大家的FTP服务器跑起来了,具体的详细配置需要自己琢磨了。

(2) 高级主题,如:虚拟用户、多用户共存、多用户不同权限配置等等,这里也不介绍了,其实我也不懂^_^!前面说过了,我也是初级菜鸟啦!而且这些高级主题需要使用了并慢慢熟悉了以后才能理解哦,加油!

时间: 2024-09-24 17:37:54

Ubuntu下用Vsftpd 配置FTP服务器的相关文章

如何在Ubuntu下安装和配置FTP服务器

FTP(文件传输协议)是一个较老且最常用的标准网络协议,用于在两台计算机之间通过网络上传/下载文件.然而, FTP 最初的时候并不安全,因为它仅通过用户凭证(用户名和密码)传输数据,没有进行加密. 警告:如果你打算使用 FTP, 需要考虑通过 SSL/TLS(将在下篇文章中讨论)配置 FTP 连接.否则,使用安全 FTP,比如 SFTP 会更好一些. 在这个教程中,我将向你们展示如何在 Ubuntu 中安装.配置并保护 FTP 服务器(VSFTPD 的全称是 "Very Secure FTP D

Ubuntu 用vsftpd 配置FTP服务器

原文: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 #接受

Linux下用vsftpd构建FTP服务器

在Linux下如何使用vsftpd构建FTP服务器,构建后的FTP服务器有哪些特点?本文将作详细介绍. vsftpd 是"very secure FTP daemon"的缩写,安全性是它的一个最大的特点.vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux.BSD.Solaris. HP-UNIX等系统上面,是一个完全免费的.开发源代码的ftp服务器软件,支持很多其他的 FTP 服务器所不支持的特征.比如:非常高的安全性需求.带宽限制.良好的可伸

Freebsd下用pureftpd配置FTP服务器

pureftpd安装配置简明说明 1.下载  http://sourceforge.net/projects/pureftpd/ 最新版本是pure-ftpd-1.0.16a.tar.bz2 BSD自带的pureftpd的目录在:cd /usr/ports/ftpd/pureftpd 此处同时提供一个图形管理界面软件kcmpureftpd,有兴趣可以下载用 2.安装 解包到任意目录,如/usr/local/ 以下为引用的内容:   tar -xjf pure-ftpd-1.0.16a.tar.b

Ubuntu安装和配置ftp服务器步骤

VSFTP是一个基于GPL发布的类Unix系统上使用的FTP服务器软件,它的全称是Very Secure FTP 从此名称可以看出来,编制者的初衷是代码的安全. Wu-Ftpd全称是Washington University FTP,绝大多数的Linux发行套装中都可以选用,WU-FTPD是一个性能优秀的服务器软件,由于它具有众多强大功能和超大的吞吐量,Internet上有不少FTP服务器选用Wu-Ftpd. 1.安装vsftpd  代码如下 复制代码 apt-get install vsftp

如何在FreeBSD平台下架设常用的FTP服务器

FreeBSD是一款高性能.高可靠性的UNIX操作系统,它继承了BSD系统的纯净性和高性能,其软件包装和发布也比Linux系统更加严谨,同时也具有更佳的安全性,正是因为这些特性使得FreeBSD操作系统在服务器环境中有着比较广泛的应用.今天,小编就给大家介绍一下如何在FreeBSD平台下架设常用的FTP服务器,希望能够对大家有所帮助. 第一步:下载FTP服务源代码包 proftpd-1.2.7.tar.gzhttp://www.aliyun.com/zixun/aggregation/18479

ubuntu下emacs如何配置el文件???

问题描述 ubuntu下emacs如何配置el文件??? 首先把nim-mode.el放在/home/nh/.emacs.d/nim-mode-master目录下面了. 然后在-/.emacs中作了如下配置:结果还是能实现相应的配置效果.望各位高手指点: (add-to-list 'load-path (expand-file-name "/home/nh/.emacs.d/nim-mode-master")) (require 'nim-mode) 解决方案 我的.Emacs文件的配

如何在Linux环境下架设和配置Samba服务器

Windows可以通过网上邻居访问局域网主机,而在Linux下则可以通过Samba客户端访问局域网内的Windows主机,也可以通过Samba服务器给Windows主机提供文件.打印机等服务.下面,小编就给大家介绍一下如何在Linux环境下架设和配置Samba服务器,为了方便讲述,这里假设Windows主机的计算机名为http://www.aliyun.com/zixun/aggregation/29867.html">Peter,设Linux主机的名称为RedHat. 一.安装Samba

ubuntu下SVN服务器安装配置 下的svn 常用命令

ubuntu下SVN服务器安装配置 一.SVN安装1.安装包$ sudo apt-get install subversion 2.添加svn管理用户及subversion组$ sudo adduser svnuser$ sudo addgroup subversion$ sudo addgroup svnuser subversion   3.创建项目目录$ sudo mkdir /home/svn$ cd /home/svn$ sudo mkdir fitness$ sudo chown -