首先安装vsftpd: apt install vsftpd
有下面几个重要的配置文件:
1 /etc/vsftpd.conf. 这个是vsftpd的配置文件。通过“参数=设置值”的方式来设置的。

2 /etc/pam.d/vsftpd 这个是vsftpd使用PAM模块时的配置文件。主要用来作为身份认证用的
下面file后面接的内容就是限制用户无法使用vsftpd的意思
root@zhf-linux:/etc# cat /etc/pam.d/vsftpd
# Standard behaviour for ftpd(8).
auth    required    pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed
查看这个文件可以看到有如下的用户都不能登陆FTP。其中就包括root用户
root@zhf-linux:/etc# cat /etc/ftpusers
# /etc/ftpusers: list of users disallowed FTP access. See ftpusers(5).
root
daemon
bin
sys
sync
games
man
lp
mail
news
uucp
nobody
3 /etc/vsftpd/user_list 这个文件是否生效和vsftpd.conf里面的配置有关,如果userlist_deny=YES.则userlist_file指向的文件里面的用户无法登陆。
4 /etc/vsftpd.chroot_list:可以将某些帐号的用户chroot建立在他们的默认用户主目录下。这个文件的生效取决与chroot_list_enable和chroot_list_file两个参数有关

启动FTP:
/etc/init.d/vsftpd start
root@zhf-virtual-machine:~# ftp 192.168.0.11
Connected to 192.168.0.11.
220 (vsFTPd 3.0.3)
Name (192.168.0.11:root): zhf
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> dir
可以看到zhf用户可以登陆进。但是root用户就会失败。因为在/etc/ftpusers中有root用户
root@zhf-virtual-machine:~# ftp 192.168.0.11
Connected to 192.168.0.11.
220 (vsFTPd 3.0.3)
Name (192.168.0.11:root): root
331 Please specify the password.
Password:
530 Login incorrect.
Login failed.

将/etc/ftpusers中的root用户删除掉root就可以登陆了。
root@zhf-virtual-machine:~# ftp 192.168.0.11
Connected to 192.168.0.11.
220 (vsFTPd 3.0.3)
Name (192.168.0.11:root): root
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.

前面root用户禁止登陆是PAM模块拦截的。我们可以在vsftpd.conf设置禁止登陆的用户
在vsftpd.conf中添加如下信息
userlist_enable=YES
userlist_deny=YES            这个只有在userlist_enable=YES的时候才有效
userlist_file=/etc/vsftpd.user_list
然后在/etc下新建vsftpd.user_list文件并在其中添加root并且重启FTP服务。可以看到root用户登陆失败
root@zhf-virtual-machine:~# ftp 192.168.0.11
Connected to 192.168.0.11.
220 (vsFTPd 3.0.3)
Name (192.168.0.11:root): root
530 Permission denied.
Login failed.

我们发现一个问题,用户在登陆FTP服务器后,可以随意切换目录,并不一定被限制在主目录下。用户可以访问服务器的任意文件。这种方式极不安全,因为用户可以任意修改文件
ftp> cd /etc
250 Directory successfully changed.
因此我们需要将用户限制在主目录下,无法切换到其他目录。这就需要用到chroot功能
 chroot_local_user=YES    是否将用户限制在自己的用户主目录之内如果是yes,代表用户默认就会被chroot。如果是no,则默认三没有chroot
chroot_list_enable=YES   设置为yes代表下面chroot_list_file指向的文件里的用户具备切换到其他目录的权限
chroot_list_file=/etc/vsftpd.chroot_list

但是我们用root用户登陆的时候,却提示500 OOPS: vsftpd: refusing to run with writable root inside chroot()
root@zhf-virtual-machine:~# ftp 192.168.0.11
Connected to 192.168.0.11.
220 (vsFTPd 3.0.3)
Name (192.168.0.11:root): root
331 Please specify the password.
Password:
500 OOPS: vsftpd: refusing to run with writable root inside chroot()
Login failed.
这个错误的原因是chroot目录不具备写的权限。只需要在vsftpd.conf中设置allow_writeable_chroot=YES就可以了。设置后好重启
这个时候可以正常登陆,此时用cd /etc切换目录,提示失败。
root@zhf-virtual-machine:~# ftp 192.168.0.11
Connected to 192.168.0.11.
220 (vsFTPd 3.0.3)
Name (192.168.0.11:root): root
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd /etc
550 Failed to change directory.

而用zhf登陆后修改是可以的。原因在于zhf存在于vsftpd.chroot_list中且chroot_list_enable=YES
root@zhf-virtual-machine:~# ftp 192.168.0.11
Connected to 192.168.0.11.
220 (vsFTPd 3.0.3)
Name (192.168.0.11:root): zhf
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd /etc
250 Directory successfully changed.

设置登陆后的显示信息
在vsftpd.conf中添加banner_file。banner_file=/etc/vsftpd/login.txt。并在login.txt中填上需要的信息
root@zhf-virtual-machine:~# ftp 192.168.0.11
Connected to 192.168.0.11.
220-欢迎来到FTP服务器。技术问题可以联系枫叶
220

匿名用户登陆:
前面都是通过实体用户登陆的。但是在一些学校的FTP服务器是可以支持匿名用户访问的。下面来看下匿名用户访问的设置
在vsftpd.conf中添加如下的设置
 anonymous_enable=YES
 no_anon_password=YES
下面这几个三设置上传或者是建立目录的权限。
 anon_other_write_enable=YES
 anon_mkdir_write_enable=YES
 anon_upload_enable=YES
登陆的时候输入anonymous就可以直接登陆了。
root@zhf-virtual-machine:~# ftp 192.168.0.11
Connected to 192.168.0.11.
220-欢迎来到FTP服务器。技术问题可以联系枫叶
220
Name (192.168.0.11:root): anonymous
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd

对于匿名登陆用户的路径可以用finger ftp来查看,如下显示为/srv/ftp/。因此需要把下载的文件都拷贝到这个文件下面。
root@zhf-linux:/srv/ftp# finger ftp
Login: ftp                        Name: ftp daemon
Directory: /srv/ftp                     Shell: /bin/false
Never logged in.
No mail.
No Plan.
在这个文件下面新建linux文件夹。登陆后就可以查看。
root@zhf-virtual-machine:~# ftp 192.168.0.11
Connected to 192.168.0.11.
220-欢迎来到FTP服务器。技术问题可以联系枫叶
220
Name (192.168.0.11:root): anonymous
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> dir
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
drwxr-xr-x    2 0        0            4096 Nov 15 19:52 linux
226 Directory send OK.

最后来看下FTP登陆时候记录的日志,这些日志都存放在/var/log/vsftpd/log中,前提是在vsftpd.conf中设置了vsftpd_log_file=/var/log/vsftpd.log

Wed Nov 15 19:57:56 2017 [pid 8273] CONNECT: Client "::ffff:192.168.0.9"
Wed Nov 15 19:58:00 2017 [pid 8271] [root] OK LOGIN: Client "::ffff:192.168.0.9"
Wed Nov 15 19:58:47 2017 [pid 8277] [root] OK DOWNLOAD: Client "::ffff:192.168.0.9", "/dead.letter", 110 bytes, 4.81Kbyte/sec
可以看到登陆的信息以及下载的大小和速率

一起来学linux:FTP服务器搭建的更多相关文章

  1. Linux FTP服务器搭建与使用

    一.vsftpd说明 LINUX下实现FTP服务的软件很多,最常见的有vsftpd,Wu-ftpd和Proftp等.Red Hat Enterprise Linux中默认安装的是vsftpd. 访问F ...

  2. linux ftp服务器搭建

    作为服务器的机器IP:192.168.124.129  主机名:Centos 操作系统:CentOS 5.5 需求:匿名用户可以下载公共目录里边内容,本地用户登录有rwx权限 软件安装 1.  准备测 ...

  3. 《Linux下FTP服务器搭建及FTP使用》

    .LOGAndy:mxtd114 <Linux下FTP服务器搭建> 0.root登录 1.安装ftp # yum -y install ftp 2.安装vsftpd # yum -y in ...

  4. Linux CentOS 6.5 下 vsftpd ftp服务器搭建

    Linux CentOS 6.5 下 vsftpd ftp服务器搭建 by:授客 QQ:1033553122   操作系统环境:CentOS 6.5-x86_64 下载地址:http://www.ce ...

  5. Linux之匿名FTP服务器搭建

    FTP(File Transfer Protocol)是在服务器与客户端进行文件传输的一种传输协议.本次介绍的是vsftpd的软件体验ftp服务. FTP服务器默认情况下依据用户登录情况分为三种不同的 ...

  6. Linux 之 FTP服务器搭建

    FTP服务器搭建 参考教程:[千峰教育] 1.关闭防火墙: service iptables stop 2.关闭Selinux setenforce 0 3.安装所需要依赖及编译工具 yum inst ...

  7. Linux中ftp服务器搭建

    一.FTP工作原理 (1)FTP使用端口 [root@localhost ~]# cat /etc/services | grep ftp ftp-data 20/tcp #数据链路:端口20 ftp ...

  8. FTP-Linux中ftp服务器搭建

    一.FTP工作原理 (1)FTP使用端口 [root@localhost ~]# cat /etc/services | grep ftp ftp-data 20/tcp #数据链路:端口20 ftp ...

  9. centos7 配置ftp服务器搭建(匿名访问,以及本地登录)

    大家好,今天来给大家分享一个基于centos 7的ftp服务器搭建 实现功能:匿名访问,本地登录 查看系统版本: [root@localhost ~]# cat /etc/redhat-release ...

  10. 记一次ftp服务器搭建走过的坑

    记一次ftp服务器搭建走过的坑 1.安装 ①下载 wget https://security.appspot.com/downloads/vsftpd-3.0.3.tar.gz #要FQ ②解压 ta ...

随机推荐

  1. 在Ubuntu / Ubuntu Kylin下安装和卸载 Nodepadqq

    在Ubuntu / Ubuntu Kylin下安装和卸载 Nodepadqq         对于Ubuntu发行版本可以通过PPA安装,命令如下: sudo add-apt-repository p ...

  2. Yii命令行模式

    (具体参数描述请使用命令看描述,不过全是英文) 1.Yii提供命令行指令不多,常用的有webapp 和 shell. 1.  message 搜索指定文件信息 yicc message webroot ...

  3. ZOJ 2619: Generator

    类型:概率 + 解方程组(高斯消元法) + KMP(好吧其实我用的是暴力~)题意:你可以等概率的选择大写字母里的前n个字母,在纸上写啊写,一直到出现给定的字符串.问写的字母个数的期望.思路: 期望递推 ...

  4. es6 export、import

    一.输出变量 1.export var a = 0; 2.var a = 0'; export {a}; 3.var a =0 ; export {a as rename}; //使用as重命名的对外 ...

  5. 洛谷——P2658 汽车拉力比赛

    P2658 汽车拉力比赛 题目描述 博艾市将要举行一场汽车拉力比赛. 赛场凹凸不平,所以被描述为M*N的网格来表示海拔高度(1≤ M,N ≤500),每个单元格的海拔范围在0到10^9之间. 其中一些 ...

  6. Cef应用程序结构

    Application Structure 应用程序结构 Every CEF3 application has the same general structure. Provide an entry ...

  7. GLSL预定义变量

    GLSL为不同的渲染阶段定义了一些特定的变量.这些预定义(也叫做内置变量)有特定的属性.所有的预定义变量都以gl_开头.用户定义的变量不能以此开头. 下面分类进行介绍. (1)顶点着色器输入 in i ...

  8. 【Todo】Tomcat与Jetty的比较 以及Tomcat架构的学习

    主要参考这篇文章: http://blog.csdn.net/qing_2012/article/details/8276789 然后Tomcat原理的介绍,可以看这篇文章: http://www.i ...

  9. 从头写一个Cucumber测试(一) Selenium Test

    转载:https://yaowenjie.github.io/%E7%BC%96%E7%A8%8B%E7%9B%B8%E5%85%B3/cucumber-test, 背景(废话不读系列)   前段时间 ...

  10. hdu5340 Three Palindromes(manacher算法)

    题目描写叙述: 推断能否将字符串S分成三段非空回文串. 解题思路: 源码: #include <cstdio> #include <algorithm> #define MAX ...