• 一起来学linux:FTP服务器搭建


    首先安装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
    可以看到登陆的信息以及下载的大小和速率

  • 相关阅读:
    eclipse注释模板设置(未整理)
    10大最适合编程的字体推荐下载,让代码看起来更美更舒服!
    系统里有Courier New字体 Eclipse没有这个字体选项
    Hadoop安装教程_集群/分布式配置
    Hadoop安装教程_单机/伪分布式配置
    VMware中三种网络连接的区别
    修改Tomcat的默认访问目录
    Ubuntu 16.04服务器 配置
    Ubuntu 16.04服务器 软件的安装及配置
    排序算法 -- 桶排序
  • 原文地址:https://www.cnblogs.com/zhanghongfeng/p/7840757.html
Copyright © 2020-2023  润新知