Linux运维- FTP服务器

FTP服务器的配置与管理

项目场景

学院教职工在日常工作中,经常需要传送一些文件和资料。可以使用移动存储设备转存再复制,或者通过共享文件的方式实现,但是两种方法都不是很简单、方便。相对于这两种方法,使用FTP传送文件和资料要简单方便得多,所以学院决定搭建FTP服务器来解决文件和资料的传送问题。

FTP基础知识

(1)什么是FTP?
FTP :文件传输协议。该协议定义了一个在远程计算机系统和本地计算机系统之间传输文件的标准。FTP运行在OSI模型的应用层,并利用TCP在不同的主机之间提供可靠的数据传输。TCP是一种面向连接的、可靠的传输协议。在实际传输中,FTP靠TCP来保证数据传输的正确性,并在发生错误的情况下,对错误进行相应的修正。FTP支持断点续传。
(2)FTP服务器
FTP服务是Internet上最早应用于主机之间进行数据传输的基本服务之一。FTP服务的实现不依赖与平台,即UNIX、Mac、Linux、Windows等操作系统中都可以实现FTP的客户端和服务器。
尽管现在已经普遍采用HTTP方式传送文件,但FTP仍然是跨平台直接传送文件的主要方式。
3)FTP的工作原理:
FTP协议是一个客户机/服务器系统。用户通过一个支持FTP的客户机程序,连接到远程主机上的FTP服务器程序。用户通过客户机程序向服务器程序发出命令,服务器程序执行用户所发出的命令,并将执行结果返回给客户机。
一个FTP会话通常包含5个软件元素:
用户接口(UI)
客户端协议解释器(CPI)
服务端协议解释器(SPI)
客户端数据传输协议(CDTP)
服务端数据传输协议(SDTP)
在这里插入图片描述

(3)FTP的工作原理:
FTP 会话中,会存在两个独立的TCP连接,一个是CPI和SPI使用的,被称为控制连接;另一个是由CDTP和SDTP使用的,称为数据连接。
控制连接:由客户端发起,并不传输数据,只用来传送在实际通信过程中需要执行的FTP命令以及命令的响应。
FTP服务器监听端口号TCP: 21来等待控制连接建立请求。
建立连接后,服务器通过一定方式验证客户身份,来决定
是否可以建立数据传输。
服务器通过自己的TCP:20来发出数据
在这里插入图片描述

用户的TCP端口号是随机的并不是必须和图上一样

(3)FTP的数据传输模式

  • 主动模式(Active FTP),FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,然后开放N+1号端口进行监听,并向服务器发出PORT N+1指令。服务器接收到指令后,会用其本地的FTP数据端口(默认是20)来连接客户端指定的端口N+1,进行数据传输。
    主动模式下,FTP数据连接和控制连接的方向是相反的,也就是说,是服务器向客户端发起一个用于数据传输的连接。客户端的连接端口是由服务器端和客户端通过协商确定的。

  • 被动模式(Passive FTP),FTP客户端随机开启一个大于1024的端口N向服务器的21端口发起连接,同时会开启N+1端口。然后向服务器发送PASV指令,通知服务器自己处于被动模式。服务器收到指令后,会开放一个大于1024的端口P进行监听,然后PORT P指令通知客户端自己的数据端口是P。客户端收到命令后,会通过N+1端口连接服务器的端口P,然后传输数据。
    被动模式下,FTP的数据连接和控制连接的方向是一致的。
    在这里插入图片描述

选择模式的原则
客户端没有防火墙时,用主动模式连接即可。
服务器端没有防火墙时,用被动模式即可。
双方都有防火墙时,vsftpd设置被动端口范围,服务器端防火墙打开被动端口范围,客户端用被动模式连接即可。

(4)FTP的用户类型
①本地用户(Real用户):如果用户在远程FTP服务器上拥有Shell登录账号,则称此用户为本地用户。本地用户可以通过输入自己的账号和口令来进行授权登录。当授权访问的本地用户登录系统后,其登录目录为用户自己的家目录($HOME),本地用户既可以下载又可以上传。
②虚拟用户(Guest用户):如果用户在远程FTP服务器上拥有账号,且此账号只能用于文件传输服务,则称此用户为虚拟用户或Guest用户。虚拟用户可以通过输入自己的账号和口令来进行授权登录。当授权访问的虚拟用户登录系统后,其登录目录是vsftpd为其指定的目录,虚拟用户既可以下载又可以上传。
③匿名用户(Anonymous用户):在登录FTP服务器时并不需要特别的密码就能访问服务器。当匿名用户登录系统后,其登录目录为匿名FTP服务器的根目录(/var/ftp),匿名用户只能下载,不能上传。

(5)centos下的FTP服务器软件vsftpd
vsftpd 是“very secure FTP daemon”的缩写,安全性是它的一个最大的特点。vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux、BSD、Solaris、 HP-UNIX等系统上面,是一个完全免费的、开放源代码的ftp服务器软件。
vsftpd是一款在Linux发行版中最受推崇的FTP服务器程序。特点是小巧轻快,安全易用。
(6)vsftpd服务的配置文件
vsftpd作为一个主打安全的FTP服务器,有很多的选项设置。Vsftpd的配置文件:
/etc/vsftpd/vsftpd.conf #主配置文件。
/etc/vsftpd/ftpusers #该文件用来指定哪些用户不能访问FTP服务器。
/etc/vsftpd/user_list #该文件用来指定用户是否被允许访问FTP服务器。
(7)vsftpd的数据目录
/var/ftp/ #匿名用户主目录。
/var/ftp/pub #匿名用户下载目录。
(8)vsftpd主配置文件/etc/vsftpd/vsftpd.conf
vsftpd.conf 的内容非常单纯,每一行即为一项设定。若是空白行或是开头为#的一行为注释性文字,将会被忽略。内容的格式只有一种,如下所示
option=value
要注意的是,等号两边不能加空白。
①默认配置:

  • anonymous_enable=YES
    

    说明:设置是否允许匿名用户访问FTP服务器,匿名用户使用的登陆名为ftp或anonymous,口令为空;匿名用户不能离开匿名用户主目录/var/ftp,且只能下载不能上传。

  • local_enable=YES
    

    说明:设置是否允许本地用户访问FTP服务器;

  • write_enable=YES
    

    说明:设置是否对用户开启写权限(全局设置)。在vsftpd配置文件中,write_enable=YES表示允许用户上传文件和创建新目录。如果设置为NO,则用户只能下载文件,不能上传或创建新目录。
    ②匿名用户(anonymous)设置

  • anonymous_enable=YES/NO(YES)
    说明:控制是否允许匿名用户登入,YES 为允许匿名登入,NO 为不允许。默认值为YES。

  • write_enable=YES/NO(YES)
    说明:是否允许登陆用户有写权限。属于全局设置,默认值为YES。

  • no_anon_password=YES/NO(NO)
    说明:若是启动这项功能,则使用匿名登入时,不会询问密码。默认值为NO。

  • ftp_username=ftp
    说明:定义匿名登入的使用者名称。默认值为ftp。

  • anon_root=/var/ftp
    说明:使用匿名登入时,所登入的目录。默认值为/var/ftp。注意ftp目录不能是777的权限属性,即匿名用户的家目录不能有777的权限。

  • anon_upload_enable=YES/NO(NO)
    说明:如果设为YES,则允许匿名登入者有上传文件(非目录)的权限,只有在write_enable=YES时,此项才有效。当然,匿名用户必须要有对上层目录的写入权。默认值为NO。(当无法写入时,注意查看自己对于文件夹的other的权限)

  • anon_world_readable_only=YES/NO(YES)
    说明:如果设为YES,则允许匿名登入者下载可阅读的档案(可以下载到本机阅读,不能直接在FTP服务器中打开阅读)。默认值为YES。

  • anon_mkdir_write_enable=YES/NO(NO)
    说明:如果设为YES,则允许匿名登入者有新增目录的权限,只有在write_enable=YES时,此项才有效。当然,匿名用户必须要有对上层目录的写入权。默认值为NO。(当无法写入时,注意查看自己对于文件夹的other的权限)

  • anon_other_write_enable=YES/NO(NO)
    说明:如果设为YES,则允许匿名登入者更多于上传或者建立目录之外的权限,如删除或者重命名。

  • chown_uploads=YES/NO(NO)
    说明:设置是否改变匿名用户上传文件(非目录)的属主。默认值为NO。

  • chown_username=username
    说明:设置匿名用户上传文件(非目录)的属主名。建议不要设置为root。

  • anon_umask=077:设置匿名登入者新增或上传档案时的umask 值。默认值为077,则新建档案的对应权限为700。

  • deny_email_enable=YES/NO(NO)
    说明:若是启动这项功能,则必须提供一个档案/etc/vsftpd/banner_emails,内容为email address。若是使用匿名登入,则会要求输入email address,若输入的email address 在此档案内,则不允许进入。默认值为NO。

  • banned_email_file=/etc/vsftpd/banner_emails:此文件用来输入email address,只有在deny_email_enable=YES时,才会使用到此档案。若是使用匿名登入,则会要求输入email address,若输入的email address 在此档案内,则不允许进入。
    ③本地用户设置

  • local_enable=YES/NO(YES)
    说明:控制是否允许本地用户登入,YES 为允许本地用户登入,NO为不允许。默认值为YES。

  • local_root=/home/username(如果设置了chroot_local_user=YES,则没有必要)
    说明:当本地用户登入时,将被更换到定义的目录下。默认值为各用户的home目录。如果设置了chroot_local_user=YES,那么FTP用户将被限制在其主目录中,无法访问系统中的其他文件和目录。在这种情况下,设置local_root=/home/ftp可能没有必要,因为FTP用户的根目录已经被限制为其主目录。
    但是,如果需要将FTP用户的根目录设置为其他目录,可以设置local_root选项。例如,如果希望FTP用户的根目录为/var/ftp,可以将local_root设置为/var/ftp。在这种情况下,FTP用户将被限制在其主目录中,同时其根目录将设置为/var/ftp。
    需要注意的是,如果不需要将FTP用户的根目录设置为其他目录,可以不设置local_root选项。在这种情况下,FTP用户的根目录将默认为其主目录。

  • write_enable=YES/NO(YES)
    说明:是否允许登陆用户有写权限。属于全局设置,默认值为YES。

  • local_umask=022
    说明:本地用户新增档案时的umask 值。默认值为077。在vsftpd配置文件中,local_umask参数用于设置上传文件时的默认权限掩码。默认情况下,上传的文件权限为666,上传的目录权限为777。如果设置了local_umask参数,则会根据该参数设置的掩码来计算上传文件和目录的权限。

默认的umask为077表示新建文件的权限为600,新建目录的权限为700。umask是一种权限掩码,用于控制新建文件和目录的默认权限。它是一个三位八进制数,每一位表示一种权限(读、写、执行),0表示允许,1表示禁止。umask的值是从默认权限掩码中减去的,例如,umask为077,表示从默认权限掩码中减去777,得到的结果就是新建文件的权限为600,新建目录的权限为700。这样设置可以保证新建的文件和目录只有所有者有读写执行的权限,其他用户没有任何权限。
local_umask=022表示上传的文件权限为644,上传的目录权限为755。其中,022是一个三位八进制数,表示文件权限掩码。在Linux系统中,文件权限掩码用于控制文件的默认权限。它是一个三位八进制数,每一位表示一种权限(读、写、执行),0表示允许,1表示禁止。例如,022表示允许所有者和组成员读写,其他用户只能读取;755表示所有用户都可以读、写、执行。

  • file_open_mode=0755
    说明:本地用户上传档案后的档案权限,与chmod 所使用的数值相同。默认值为0666。
    ④欢迎语设置
  • dirmessage_enable=YES/NO(YES)
    说明:如果启动这个选项,那么使用者第一次进入一个目录时,会检查该目录下是否有.message这个档案,如果有,则会出现此档案的内容,通常这个档案会放置欢迎话语,或是对该目录的说明。默认值为开启。
  • message_file=.message
    说明:设置目录消息文件,可将要显示的信息写入该文件。默认值为.message。
  • banner_file=/etc/vsftpd/banner
    说明:当使用者登入时,会显示此设定所在的档案内容,通常为欢迎话语或是说明。默认值为无。如果欢迎信息较多,则使用该配置项。
  • ftpd_banner=Welcome to BOB’s FTP server
    说明:这里用来定义欢迎话语的字符串,banner_file是档案的形式,而ftpd_banner 则是字符串的形式。预设为无。
    ⑤控制用户是否允许切换到上级目录
    在默认配置下,本地用户登入FTP后可以使用cd命令切换到其他目录,这样会对系统带来安全隐患。可以通过以下三条配置文件来控制用户切换目录。
  • chroot_list_enable=YES/NO(NO)
    说明:设置是否启用chroot_list_file配置项指定的用户列表文件。默认值为NO。
  • chroot_list_file=/etc/vsftpd.chroot_list
    说明:用于指定用户列表文件,该文件用于控制哪些用户可以切换到用户家目录的上级目录。
  • chroot_local_user=YES/NO(NO)
    说明:用于指定用户列表文件中的用户是否允许切换到上级目录。在vsftpd.conf配置文件中,chroot_local_user=YES表示将本地用户限制在其主目录中,防止他们访问系统中的其他文件和目录。这是一种安全措施,可以防止用户访问他们不应该访问的文件和目录,从而保护系统的安全性。当chroot_local_user设置为YES时,用户登录后将被限制在其主目录中,无法访问其他目录。

chroot是"change root"的缩写,意为改变根目录。在Linux和Unix系统中,chroot是一种安全机制,可以将进程限制在指定的目录中,防止其访问系统中的其他文件和目录。通过chroot机制,可以创建一个虚拟的根目录,使进程只能访问该目录及其子目录,而不能访问系统中的其他文件和目录。
在FTP服务器中,chroot机制可以用于限制用户访问其主目录以外的文件和目录。通过将用户限制在其主目录中,可以防止他们访问系统中的其他文件和目录,从而提高系统的安全性。在vsftpd中,可以使用chroot_local_user选项将本地用户限制在其主目录中。

  • allow_writeable_chroot=YES(允许用户在chroot环境中创建或修改文件)
    说明:在vsftpd.conf配置文件中,allow_writeable_chroot=YES表示允许在chroot环境中创建可写文件。chroot环境是一种安全机制,可以将用户限制在其主目录中,防止他们访问系统中的其他文件和目录。但是,如果不允许在chroot环境中创建可写文件,则用户将无法在其主目录中创建或修改文件,这可能会影响其正常使用FTP服务。
    当allow_writeable_chroot设置为YES时,用户可以在chroot环境中创建可写文件。这意味着用户可以在其主目录中创建或修改文件,而不会受到chroot环境的限制。这可以提高FTP服务的灵活性和可用性。
    需要注意的是,允许在chroot环境中创建可写文件可能会降低系统的安全性,因为用户可以在其主目录中创建或修改任何文件。因此,如果不需要在chroot环境中创建可写文件,则建议将allow_writeable_chroot设置为NO。

⑥数据传输模式设置
FTP在传输数据时,可以使用二进制方式,也可以使用ASCII模式来上传或下载数据。

  • ascii_upload_enable=YES/NO(NO)
    说明:设置是否启用ASCII 模式上传数据。默认值为NO。
  • ascii_download_enable=YES/NO(NO)
    说明:设置是否启用ASCII 模式下载数据。默认值为NO。
    ⑦访问控制设置
    a.控制主机访问:
  • tcp_wrappers=YES/NO(YES)
    说明:设置vsftpd是否与tcp wrapper相结合来进行主机的访问控制,默认为yes。
    b.控制用户访问:
    对于用户的访问控制可以通过/etc目录下的vsftpd.user_list和ftpusers文件来实现。
  • userlist_file=/etc/vsftpd.user_list
    说明:控制用户访问FTP的文件,里面写着用户名称。一个用户名称一行。指定用户列表文件的路径,该文件中列出的用户将被允许或拒绝访问FTP服务器。
  • userlist_enable=YES/NO(NO)
    说明:是否启用vsftpd.user_list文件。
    userlist_deny=YES/NO(YES)
    说明:决定vsftpd.user_list文件中的用户是否能够访问FTP服务器。若设置为YES,则vsftpd.user_list文件中的用户不允许访问FTP,若设置为NO,则只有vsftpd.user_list文件中的用户才能访问FTP。
    /etc/vsftpd/ftpusers
    说明:文件专门用于定义不允许访问FTP服务器的用户列表
    (注意:如果userlist_enable=YES,userlist_deny=NO,此时如果在vsftpd.user_list和ftpusers中都有某个用户时,那么这个用户是不能够访问FTP的,即ftpusers的优先级要高)。
    ⑧访问速率设置
  • anon_max_rate=0
    说明:设置匿名登入者使用的最大传输速度,单位为B/s,0 表示不限制速度。默认值为0。
  • local_max_rate=0
    说明:本地用户使用的最大传输速度,单位为B/s,0 表示不限制速度。预设值为0。
    ⑨超时时间设置
  • accept_timeout=60
    说明:设置建立FTP连接的超时时间,单位为秒。默认值为60。
  • connect_timeout=60
    说明:PORT 方式下建立数据连接的超时时间,单位为秒。默认值为60。
  • data_connection_timeout=120
    说明:设置建立FTP数据连接的超时时间,单位为秒。默认值为120。
  • idle_session_timeout=300
    说明:设置多长时间不对FTP服务器进行任何操作,则断开该FTP连接,单位为秒。默认值为300 。
    ⑩日志文件设置
  • xferlog_enable= YES/NO(YES)
    说明:是否启用上传/下载日志记录。如果启用,则上传与下载的信息将被完整纪录在xferlog_file 所定义的档案中。预设为开启。由于生成日志还挺大,生产环境我们不开启。
  • xferlog_file=/var/log/vsftpd.log
    说明:设置日志文件名和路径,默认值为/var/log/vsftpd.log。
  • xferlog_std_format=YES/NO(NO)
    说明:如果启用,则日志文件将会写成xferlog的标准格式,如同wu-ftpd 一般。默认值为关闭。
  • log_ftp_protocol=YES|NO(NO)
    说明:如果启用此选项,所有的FTP请求和响应都会被记录到日志中,默认日志文件在/var/log/vsftpd.log。启用此选项时,xferlog_std_format不能被激活。这个选项有助于调试。默认值为NO。同样,这个功能只建议在调试的时候开启。
    ⑪定义用户配置文件
    在vsftpd中,可以通过定义用户配置文件来实现不同的用户使用不同的配置。
  • user_config_dir=/etc/vsftpd/userconf
    说明:设置用户配置文件所在的目录。当设置了该配置项后,用户登陆服务器后,系统就会到/etc/vsftpd/userconf目录下,读取与当前用户名相同的文件,并根据文件中的配置命令,对当前用户进行更进一步的配置。
    ⑫FTP的工作方式与端口设置
    FTP有两种工作方式:PORT FTP(主动模式)和PASV FTP(被动模式)
  • listen=YES
    说明: 指定被动模式时的公网IP地址时只能监听在IPv4地址

关于listen=YES
具体来说,listen=NO表示vsftpd服务不以inetd方式运行,而是以独立守护进程的方式运行。如果将listen设置为YES,则表示vsftpd服务以inetd方式运行。
vsftpd可以以两种方式运行:独立守护进程和inetd方式
独立守护进程方式是指vsftpd作为一个独立的进程运行,它会一直在后台运行,等待客户端的连接请求。这种方式的优点是可以提高服务的响应速度和并发处理能力,因为它不需要每次都重新启动一个新的进程来处理客户端的请求。
inetd方式是指vsftpd作为inetd的一个服务运行,每当有客户端连接请求时,inetd会启动一个新的vsftpd进程来处理该请求。这种方式的优点是可以节省系统资源,因为它只在需要时才会启动一个新的进程来处理客户端请求。
总的来说,独立守护进程方式适合处理高并发的情况,而inetd方式适合处理低并发的情况。在实际应用中,可以根据具体的需求来选择合适的运行方式。

  • listen_ipv6=NO
    说明:与listen冲突,默认监听IPv6地址,当监听在IPv4时IPv6必须禁用,否则vsftpd.service将无法启动。

关于什么情况下要设置listen_ipv6=NO
listen_ipv6是vsftpd.conf配置文件中的一个选项,用于指定是否启用IPv6监听。如果将listen_ipv6设置为YES,则表示vsftpd服务将同时监听IPv4和IPv6地址;如果将其设置为NO,则表示vsftpd服务只监听IPv4地址。
在一些特定的情况下,可能需要将listen_ipv6设置为NO,例如:
1、系统不支持IPv6:如果系统不支持IPv6,那么启用IPv6监听是没有意义的,此时应该将listen_ipv6设置为NO。
2、安全性考虑:如果系统管理员认为IPv6网络存在安全风险,或者不希望vsftpd服务被IPv6地址访问,那么可以将listen_ipv6设置为NO,只允许IPv4地址访问。
3、性能考虑:如果系统的网络环境中只有IPv4地址,那么启用IPv6监听会增加系统的负担,此时可以将listen_ipv6设置为NO,以提高系统的性能。
需要注意的是,如果系统同时支持IPv4和IPv6,而listen_ipv6被设置为NO,那么只有IPv4地址能够访问vsftpd服务,IPv6地址将无法访问。如果需要同时支持IPv4和IPv6,那么应该将listen_ipv6设置为YES。

  • pasv_address=47.95.120.253
    说明:指定被动模式时的公网IP地址

  • listen_port=21
    说明:设置FTP服务器建立连接所监听的端口,默认值为21。

  • connect_from_port_20=YES/NO
    说明:指定FTP使用20端口进行数据传输,默认值为YES。

  • ftp_data_port=20
    说明:设置在PORT方式下,FTP数据连接使用的端口,默认值为20。

  • pasv_enable=YES/NO(YES)
    说明:若设置为YES,则使用PASV工作模式;若设置为NO,则使用PORT模式。在vsftpd.conf配置文件中,pasv_enable=YES表示启用被动模式(Passive Mode)FTP。被动模式FTP是一种FTP数据传输模式,其中客户端使用随机端口连接FTP服务器的数据端口,而不是使用标准的FTP数据端口(端口20)。这种模式可以避免由于防火墙或NAT设备的限制而导致的FTP连接问题。
    需要设置pasv_enable=YES的情况包括:
    当FTP服务器位于防火墙或NAT设备后面时,需要启用被动模式FTP,以便客户端可以连接到FTP服务器的数据端口。
    当FTP服务器需要与其他系统进行数据交换时,需要启用被动模式FTP,以便其他系统可以连接到FTP服务器的数据端口。
    需要注意的是,如果FTP服务器没有被防火墙或NAT设备限制,并且不需要与其他系统进行数据交换,则可以不启用被动模式FTP。在这种情况下,可以将pasv_enable设置为NO,以禁用被动模式FTP。
    如果您需要启用被动模式FTP,则需要在vsftpd.conf配置文件中将pasv_enable设置为YES。如果未设置,则默认情况下被动模式FTP将被禁用。请注意,如果您使用被动模式FTP,则还需要在防火墙中打开FTP数据端口范围(默认情况下是端口1024到65535)。否则,客户端可能无法连接到FTP服务器的数据端口

  • pasv_max_port=0
    说明:在PASV工作模式下,数据连接可以使用的端口范围的最大端口,0 表示任意端口。默认值为0。

  • pasv_min_port=0
    说明:在PASV工作模式下,数据连接可以使用的端口范围的最小端口,0 表示任意端口。默认值为0。
    (9)ftp命令
    ftp命令的功能是用命令的方式来控制在本地机和远程机之间传送文件。
    无论是windows系统还是centos系统,都可以在命令行方式下面使用FTP命令连接和访问FTP服务器.
    FTP的命令行格式为:

ftp [选项] [主机名或IP地址]

ftp命令连接成功后,用户需要在FTP服务器上登录,登录成功,将会出现“ftp>”提示符。在提示符后可以进一步使用ftp提供的下级命令,可以用help命令取得可供使用的命令清单,也可以在help后面指定具体的命令名称,获得这条命令的说明。

常用的二级命令有:

ftp>open :重新建立一个新的连接。
ftp>cd: 改变目录。
ftp>dir :列出当前远端主机目录中的文件。
ftp>get:从远端主机中传送至本地主机中。
ftp>delete: 删除远端主机中的文件。
ftp>mget:从远端主机接收一批文件至本地主机。
ftp>mput:将本地主机中一批文件传送至远端主机。
ftp>mkdir:在远端主机中建立目录。
ftp>prompt:交互提示模式。
ftp>put:将本地一个文件传送至远端主机中。
ftp>bye: 终止主机FTP进程,并退出FTP管理方式.
ftp>lcd c:/aaa 这里就是定义你要get的文件放在本地的哪个地方 这里是放在c盘 aaa文件下

(10)访问FTP服务器的方法
图形界面:通过浏览器访问FTP服务器,如图所示。(目前最新的浏览器移除了该功能)

ftp://用户名:密码@FTP服务器IP

在这里插入图片描述

例如:ftp://xxx:123456@ftp.dz.com
命令行界面:ftp IP地址

在这里插入图片描述

配置实施

安装FTP服务

(1)安装包说明
vsftpd-3.0.2-25.el7.x86_64
说明:提供了FTP服务的主要程序及相关文件。
(2)在可以联网的机器上使用yum工具安装,如果未联网,则挂载系统光盘进行安装。(推荐:防止自己安装少依赖)

安装FTP客户端:yum –y install ftp
安装FTP服务器:yum –y install vsftpd

在这里插入图片描述

(3)还可以使用rpm安装。

rpm -ivh vsftpd-3.0.2-25.el7.x86_64.rpm

(4)查看安装状况,显示结果如图所示

rpm -qa|grep ftp

在这里插入图片描述

(5)管理FTP服务器
①可以通过service命令来管理FTP服务,如图所示。

[root@localhost 桌面]# systemctl start vsftpd        #启动FTP服务
[root@localhost 桌面]# systemctl restart vsftpd     #重启FTP服务
[root@localhost 桌面]# systemctl stop vsftpd        #停止FTP服务
[root@localhost 桌面]# systemctl status vsftpd        #查看FTP服务工作状态

在这里插入图片描述

FTP服务器配置流程

  1. 备份主配置文件cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf_bak
  2. 编辑主配置文件/etc/vsftpd/vsftpd.conf 。
  3. 编辑用户配置文件/etc/vsftpd/user_list。
  4. 编辑用户配置文件/etc/vsftpd/ftpusers。
  5. 重新加载配置文件或重新启动FTP服务使配置文件生效。

配置匿名用户

要求:允许匿名用户登录,登录名为anonymous,没有密码。匿名用户只能下载,不能上传,不能创建目录和文件,不能对文件进行更名和删除。
匿名用户的主目录:/var/ftp
匿名用户的下载目录:/var/ftp/pub
步骤:
(1)在匿名用户的下载目录创建目录files,在files目录下创建文件test,供下载使用。

mkdir files
vim /var/ftp/pub/files/test.txt #随便写信息

(2)修改主配置文件vsftpd.conf,修改相关选项。
备份主配置文件cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf_bak
临时关闭SELinux

setenforce 0

修改vsftpd配置文件

vim /etc/vsftpd/vsftpd.conf

查找修改以下内容,如果没有直接写在最后面。

anonymous_enable=YES #允许匿名访问
ftp_username=ftp #定义匿名登入的使用者名称
anon_root=/var/ftp #使用匿名登入时,所登入的目录。
anon_other_write_enable=NO #是否允许匿名登入者更多于上传或者建立目录之外的权限,如删除或者重命名。
anon_mkdir_write_enable=NO #是否允许匿名登入者有新增目录的权限
anon_upload_enable=NO #是否允许匿名登入者有上传文件(非目录)的权限
anon_world_readable_only=YES # 是否允许匿名登入者下载可阅读的档案(可以下载到本机阅读,不能直接在FTP服务器中打开阅读)。
no_anon_password=YES # 若是启动这项功能,则使用匿名登入时,不会询问密码。
pasv_enable=YES #使用PASV工作模式
pasv_max_port=9000 #被动模式最大
pasv_min_port=8888 #被动模式最小范围

允许读文件,并且下载。

chmod 755 /var/ftp/pub/

(3)重启vsftpd服务,使配置文件生效。

systemctl restart vsftpd.service

开启21端口

添加指定需要开放的端口:firewall-cmd --add-port=21/tcp --permanent
重载入添加的端口:firewall-cmd --reload
查询指定端口是否开启成功:firewall-cmd --query-port=21/tcp

在这里插入图片描述

(4)使用ftp命令测试结果如图。
在这里插入图片描述

在D盘下的Test文件夹查看文件
在这里插入图片描述

上传文件,创建目录,均被拒绝
在这里插入图片描述
在这里插入图片描述

(5)使用资源管理器下载文件
资源管理器只能使用被动模式。

打开资源管理器输入

ftp://192.168.88.130/

在这里插入图片描述

直接图形化界面,把你需要下载的东西拖出来就好。

配置本地用户

(1)创建用户和组
创建一个组,用于存放ftp用户:

groupadd ftpgroups

/home/ftp为自己建立的目录,不存在就创建一个,在ftp目录下创建files目录,并在files目录下创建文件test1,将files目录权限设置为o+w。

格式:
useradd -g ftpgroups -d /home/ftp/files 登陆用户名
命令:useradd -g ftpgroups -d /home/ftp/files stu2useradd -g ftpgroups -d /home/ftp/files stu2chmod o+w files

设置密码: passwd 登陆用户名

passwd stu1
passwd stu2
#嫌写密码麻烦就强制修改简单的
echo '123' | passwd --stdin stu1
echo '123' | passwd --stdin stu2

设置不允许用户登陆系统:

格式:usermod -s /sbin/nologin 用户名
命令:  usermod -s /sbin/nologin stu1usermod -s /sbin/nologin stu2

注意:/sbin/nologin表示新建用户不能登录到服务器的操作系统,仅能用作登录FTP服务器。
(2)修改主配置文件/etc/vsftpd/vsftpd.conf:

vim /etc/vsftpd/vsftpd.conf
chroot_local_user=YES #用于指定用户列表文件中的用户是否允许切换到上级目录。
chroot_list_enable=YES #设置是否启用chroot_list_file配置项指定的用户列表文件。
chroot_list_file=/etc/vsftpd/chroot_list #用于指定用户列表文件,该文件用于控制哪些用户可以切换到用户家目录的上级目录
user_config_dir=/etc/vsftpd/userconfig#设置用户配置文件所在的目录。当设置了该配置项后,用户登陆服务器后,系统就会到/etc/vsftpd/userconf目录下,读取与当前用户名相同的文件,并根据文件中的配置命令,对当前用户进行更进一步的配置。
allow_writeable_chroot=YES #允许用户在chroot环境中创建或修改文件

在/etc/vsftpd/目录下创建chroot_list文件,并将stu1用户和stu2用户的用户名加入该文件.
注意:文件中每行只能填写一个用户名。加入到该文件中的用户可以访问家目录和家目录以外的目录。则未加入chroot_list文件的用户只能访问家目录。
在/etc/vsftpd/目录下创建chroot_list文件,并将stu1用户和stu2用户的用户名加入该文件.

vim /etc/vsftpd/chroot_list

注意:文件中每行只能填写一个用户名。加入到该文件中的用户可以访问家目录和家目录以外的目录。则未加入chroot_list文件的用户只能访问家目录。

ftp报错331Please specify password 530 Login incorrect
在这里插入图片描述

解决方法:

vi /etc/pam.d/vsftpd

注释掉/etc/pam.d/vsftpd文件里这一行:
#auth required pam_shells.so

#%PAM-1.0
#session    optional     pam_keyinit.so    force revoke
auth       required     pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
#auth       required     pam_shells.so
auth       include      password-auth
account    include      password-auth
session    required     pam_loginuid.so
session    include      password-auth

第二种:

vi /etc/shells

在最后一行下边加上

/sbin/nologin

值得注意的是 添加完之后的代码下一行必须是~(别自己乱加回车)

两种方式任选一种就可以

这样最后重启服务器就可以解决啦!

参考:https://blog.csdn.net/weixin_45302751/article/details/106267894#:~:text=ftp%E8%BF%9E%E6%8E%A5%E8%BF%9C%E7%A8%8B%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%97%B6%E6%8A%A5%E9%94%99USER%20%2A%2A%2A331Please%20specify%20passwordPASS%20%2A%2A%2A530%20Login%20incorrect----------------%3E%E7%BB%8F%E8%BF%87%E5%A4%A7%E9%87%8F%E6%8E%92%E6%9F%A5%E5%8F%91%E7%8E%B0%E4%BA%86%E9%94%99%E8%AF%AF%2C%E6%98%AF%E5%9B%A0%E4%B8%BA%E7%94%A8%E6%88%B7%E9%89%B4%E6%9D%83%E9%97%AE%E9%A2%98%E6%B2%A1%E8%A7%A3%E5%86%B3%E5%A5%BD%2C,%28%E5%9B%A0%E4%B8%BA%E7%94%A8%E6%88%B7%E6%98%AFnologin%E7%9A%84%2C%E6%89%80%E4%BB%A5%E5%AD%98%E5%9C%A8%29%E8%A7%A3%E5%86%B3%E6%96%B9%E6%B3%95%3A%E7%AC%AC%E4%B8%80%E7%A7%8D%3Avi%20%2Fetc%2Fpam.d%2Fvsftpd%E6%B3%A8%E9%87%8A%E6%8E%89%2Fetc%2Fpam.d%2Fvsftpd%E6%96%87%E4%BB%B6%E9%87%8C%E8%BF%99%E4%B8%80%E8%A1%8C%EF%BC%9A%23auth%20required%20pam_shells.so%23%25PAM-1.0%23session._331%20please%20specify%20the%20password.

测试:
stu2去上级目录失败
在这里插入图片描述

stu1成功
在这里插入图片描述

参考:https://blog.csdn.net/Dontla/article/details/130427094

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/703008.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【电子通识】为什么单片机芯片上会有多组VDD电源?

在单片机芯片规格书中,我们经常能看到多个组VDD的设计,如下红框所示管脚都是VDD管脚。 为什么需要这样设计?只设置一个VDD管脚,把其他的VDD管脚让出来多做几个IO或是其他复用功能不好吗?接下来我们从单片机内部的电路结…

阿里云-系统盘-磁盘扩容

阿里云系统磁盘扩容 之前是测试环境磁盘用的默认的有 40G,后面升级到正式的 磁盘怕不够用打算升级到 100G, 系统镜像: Alibaba Cloud Linux 3.2104 LTS 64 位 磁盘 ESSD 40G 升级步骤: 扩容与创建快照 在阿里云后台首先去扩容…

域名系统与IP地址分配

域名 域名的概述 域名是一个逻辑的概念,它不反映主机的物理地点 域名结构 由于数字形式的IP地址难以记忆和理解,为此人们采用英文符号来表示IP地址,这就产生了域名,域名长度不超过255各字符,每一层域名长度不超过6…

旅游组团自驾游拼团系统 微信小程序python+java+node.js+php

随着社会的发展,旅游业已成为全球经济中发展势头最强劲和规模最大的产业之一。为方便驴友出行,寻找旅游伙伴,更好的规划旅游计划,开发一款自驾游拼团小程序,通过微信小程序发起自驾游拼团,吸收有车或无车驴…

爬虫入门五(Scrapy架构流程介绍、Scrapy目录结构、Scrapy爬取和解析、Settings相关配置、持久化方案)

文章目录 一、Scrapy架构流程介绍二、Scrapy目录结构三、Scrapy爬取和解析Scrapy的一些命令css解析xpath解析 四、Settings相关配置提高爬取效率基础配置增加爬虫的爬取效率 五、持久化方案 一、Scrapy架构流程介绍 Scrapy一个开源和协作的框架,其最初是为了页面抓取…

Kotlin:协程基础

点击查看:协程基础 中文文档 点击查看:协程基础 英文文档 第一个协程程序 import kotlinx.coroutines.*fun main(){GlobalScope.launch {delay(1000L)//delay 是一个特殊的 挂起函数 ,它不会造成线程阻塞,但是会 挂起 协程&…

机器学习:SVM算法(Python)

一、核函数 kernel_func.py import numpy as npdef linear():"""线性核函数:return:"""def _linear(x_i, x_j):return np.dot(x_i, x_j)return _lineardef poly(degree3, coef01.0):"""多项式核函数:param degree: 阶次:param …

纯国产轻量化数字孪生:智慧城市、智慧工厂、智慧校园、智慧社区。。。

AMRT 3D数字孪生引擎介绍 AMRT3D引擎是一款融合了眸瑞科技的AMRT格式与轻量化处理技术为基础,以降本增效为目标,支持多端发布的一站式纯国产自研的CS架构项目开发引擎。 引擎包括场景搭建、UI拼搭、零代码交互事件、光影特效组件、GIS/BIM组件、实时数据…

五、数组——Java基础篇

六、数组 1、数组元素的遍历 1.1数组的遍历:将数组内的元素展现出来 1、普通for遍历:根据下表获取数组内的元素 2、增强for遍历: for(数据元素类型 变量名:数组名){ 变量名:数组内的每一个值…

【vue+leaflet】vue使用leaflet.pm保存绘制后的图层的点位信息、图层回显、平面图切换、地图事件函数、图层事件函数说明(二)

看效果展示: 【vueleaflet】第二节效果展示视频 1.平面图切换,多个平面图切换展示 <div class"select"><span>平面图&#xff1a;</span><el-select v-model"pic" placeholder"全部" clearable filterable change"ini…

机器学习.线性回归

斯塔1和2是权重项&#xff0c;斯塔0是偏置项&#xff0c;在训练过程中为了使得训练结果更加精确而做的微调&#xff0c;不是一个大范围的因素&#xff0c;核心影响因素是权重项 为了完成矩阵的运算&#xff0c;在斯塔0后面乘x0&#xff0c;使得满足矩阵的转换&#xff0c;所以在…

编码后的字符串lua

-- 长字符串 local long_string "你好你好你好你好你好你好你好你好" local encoded_string "" for i 1, #long_string do local char_code string.byte (long_string, i) encoded_string encoded_string .. char_code .. "," end encoded_…

redis数据结构源码分析——压缩列表ziplist(I)

前面讲了跳表的源码分析&#xff0c;本篇我们来聊一聊另外一个重点结构——压缩列表 文章目录 存储结构字节数组结构节点结构 压缩编码zipEntryzlEntry ZIP_DECODE_PREVLENZIP_DECODE_LENGTH API解析ziplistNew(创建压缩列表)ziplistInsert(插入)ziplistDelete(删除)ziplistFi…

复旦大学EMBA联合澎湃科技:共议科技迭代 创新破局

1月18日&#xff0c;由复旦大学管理学院、澎湃新闻、厦门市科学技术局联合主办&#xff0c;复旦大学EMBA项目、澎湃科技承办的“君子知道”复旦大学EMBA前沿论坛在厦门成功举办。此次论坛主题为“科技迭代 创新破局”&#xff0c;上海、厦门两地的政策研究专家、科学家、科创企…

2024年漳州本地有正规等保测评机构吗?在哪里?

我们大家都知道&#xff0c;企业办理等保一定要找有资质的等保测评机构。因此不少漳州企业在问&#xff0c;2024年漳州本地有正规等保测评机构吗&#xff1f;在哪里&#xff1f;这里我们小编通过查找来为大家解答一下&#xff0c;仅供参考&#xff01; 目前福建漳州本地没有正规…

HTTP---------状态码

当服务端返回 HTTP 响应时&#xff0c;会带有一个状态码&#xff0c;用于表示特定的请求结果。比如 HTTP/1.1 200 OK&#xff0c;里面的 HTTP/1.1 表示协议版本&#xff0c;200 则是状态码&#xff0c;OK 则是对状态码的描述。 由协议版本、状态码、描述信息组成的行被称为起始…

北京硒鼓耗材回收价位,硒鼓回收价格,回收

联系我的时候请说是在百猫网看到的&#xff01; 硒鼓回收价格&#xff1a;最专业的硒鼓回收 顺达耗材回收 俗话说&#xff0c;顾客是最好的&#xff0c;良好的品牌效应是推动发展的关键之一。 北京顺达耗材回收有限公司为中小企业创造良好的二手消费市场&#xff0c;不断贯彻…

皓学IT:MySQL02

一、了解表 1.1.概述 表是处理数据和建立关系型数据库及应用程序的基本单元&#xff0c;是构成数据库的基本元素之一&#xff0c;是数据库中数据组织并储存的单元&#xff0c;所有的数据都能以表格的形式组织&#xff0c;目的是可读性强。 1.2.表结构简述 一个表中包括行和列…

Uncertainty-Aware Mean Teacher(UA-MT)

Uncertainty-Aware Mean Teacher 0 FQA:1 UA-MT1.1 Introduction:1.2 semi-supervised segmentation1.3 Uncertainty-Aware Mean Teacher Framework 参考&#xff1a; 0 FQA: Q1: 不确定感知是什么意思&#xff1f;不确定信息是啥&#xff1f;Q2&#xff1a;这篇文章的精妙的点…

Java面试——锁

​ 公平锁&#xff1a; 是指多个线程按照申请锁的顺序来获取锁&#xff0c;有点先来后到的意思。在并发环境中&#xff0c;每个线程在获取锁时会先查看此锁维护的队列&#xff0c;如果为空&#xff0c;或者当前线程是等待队列的第一个&#xff0c;就占有锁&#xff0c;否则就会…