首先啊,更新系统了没?,更新了再开始安装ftp!

sudo apt-get update

好了,开始安装ftp吧:

sudo apt-get install vsftpd

ubuntu安装完了就自动启动并且自动开机启动了,centos还要设置开机启动然后再手动启动服务。

装好了,开始配置:

vim /etc/vsftpd.conf

#是否允许匿名访问,NO为不允许

anonymous_enable=NO

#是否允许本地用户访问,就是linux本机中存在的用户,YES允许

local_enable=YES

#去掉下边这句的注释"#"。是否开启写模式,YES为开启

write_enable=YES

#是否启动userlist为通过模式,YES的话只有存在于userlist文件中的用户才能登录ftp,NO的话,白名单失效,和下面一个参数配合使用

userlist_enable=YES

#是否启动userlist为禁止模式,YES表示在userlist中的用户禁止登录ftp(黑名单),NO表示黑名单失效,我们已经让userlist作为一个白名单,所以无需使用黑名单功能

userlist_deny=NO

#指定哪个文件作为userlist文件,我们稍后编辑这个文件

userlist_file=/etc/vsftpd.user_list

#是否限制本地所有用户切换根目录的权限,YES为开启限制,即登录后的用户不能访问ftp根目录以外的目录,这个如果是自己用就直接注释掉chroot"开头的下边这三句吧(为了自己方便),有其他用户的话就打开。

chroot_local_user=YES

#是否启动限制用户的名单list为允许模式,上面的YES限制了所有用户,可以用这个名单作为白名单,作为例外允许访问ftp根目录以外

chroot_list_enable=YES

#设置哪个文件是list文件,里面的用户将不受限制的去访问ftp根目录以外的目录

chroot_list_file=/etc/vsftpd.chroot_list

#设置ftp根目录的位置,这个文件我们稍后自己创建(注意:这个根目录这句话必须写!)

local_root=/home/myftp

然后重启vsftpd让更改生效

sudo /etc/init.d/vsftpd restart

创建你的ftp根目录(配置文件里写的路径):

mkdir /home/myftp

下边我们将为ftp添加虚拟用户,就是你用来访问的用户名和密码

#下边的yourftpname就是你自己用来登录ftp的用户名,自己取一个吧

sudo useradd -d /home/myftp yourftpname

sudo passwd yourftpname

#然后会提示输入密码,重新输入密码。然后就是提示successful之类的了。

下边我们来创建在配置文件里说到的”白名单“,在里边写上你的用户名就可以了

#下边两个文件中的用户名如果有多个就每一行写一个

vim /etc/vsftpd.user_list

#如果在配置文件里没有注释掉”chroot“开头的三句话,这里你就要在下边的文件里写上你的用户名,如果注释掉了,就不用创建和编辑这个文件了。

vim /etc/vsftpd.chroot_list

好了,到这里就结束了!

下边说遇到的问题

1,530 Permission denied 问题的解决:

这貌似是ftp被动模式的问题,把你的”主机名“写成ip就好了,不要写成域名。如下:

centos文件夹ftp上传 centos ftp 530_用户名

如果是用的File Zilla这个软件,就在 编辑->设置->连接->FTP->被动模式 里边改成”退回到主动模式“即可。如下图:

centos文件夹ftp上传 centos ftp 530_白名单_02

2,530 Login incorrect 的解决办法

这个问题我自己没遇到过,可是我为了区分上边的”530 Permission denied“,我才找了找网上的前辈经验:

在网上看到这问题原因主要是说服务器系统是64位的。

这种情况只需要把 /etc/pam.d/下面的vsftpd里面的/lib 修改为/lib64

cd /etc/pam.d

vi vsftpd

然后保存退出

service vsftpd restart就ok

不过我的系统是32位。

再网上再找过一些资料后

发现

只需要把/etc/pam.d/vsftpd文件中的

auth       required    pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed

这一句注释掉就OK了。前面加一个#好

重启vsftpd服务。问题解决。

或者

auth required /lib/security/pam_userdb.so db=/etc/vsftpd/ftpusr

account required /lib/security/pam_userdb.so db=/etc/vsftpd/ftpusr

改为:

auth required pam_userdb.so db=/etc/vsftpd/ftpus

account required pam_userdb.so db=/etc/vsftpd/ftpusr

好了,到此为止都弄完了。还有问题的欢迎留言提问!