文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

FTP服务器的搭建与文件目录详解

2023-09-15 07:55

关注

文章内容仅仅只是我对FTP的理解!

FTP简介

文件传输协议FTP(File Transfer FTP)作为网络共享文件的传输协议,在网络应用软件中具有广泛的应用。

FTP协议

FTP是TCP/IP的协议簇协议之一,其主要功能是借助网络实现远距离主机间的文件传输。

1.使用Vsftpd服务器

Vsftpd (Very Secure FTP)是linux系统的常用软件。

1.1 Vsftpd的服务器的安装与启动

Vsftpd在yum源中的名称就是叫做vsftpd

yum install -y vsftpd* //*代表下载所有关于vsftpd的软件包

1.2 Vsftpd服务器的用户类型

Vsftpd的用户类型主要分为匿名用户、本地用户和虚拟用户。

(1)匿名用户:如果Vsftpd服务器提供匿名访问功能,默认的匿名访问用户为anonymous或ftp,密码为空,匿名用户登录后进入到工作目录是/var/ftp

(2)本地用户:本地用户信息存储在/etc/passwd文件中,本地用户输入用户名和密码后可登录vsftpd,并且直接进入该用户的宿主目录。

(3)虚拟用户:旨在vsftpd服务器中拥有账号,并且该账号只能用于文件传输服务的专有用户,也称guest用户。该类用户可以通过输入用户名和密码进行授权登录。

2. Vsftpd服务器的测试

FTP服务器的运行模式基于服务器、客户端,服务器安装完Vsftpd软件包后,可以通过客户端进行测试。

首先下载vsftpd与其相关的服务

  yum install -y vsftpd* ftp*

然后打开ftp服务的端口,使防火墙放行ftp服务

 firewall-cmd --zone=public --add-port=21/tcp --per systemctl restart vsftpd firewalld

在虚拟机上以匿名用户身份进行测试,使用ftp命令,后面输入本机的ip地址,用户名是ftp,密码是空,登录过程如下。

[root@linux2 ~]# ftp 192.168.123.102Connected to 192.168.123.102 (192.168.123.102).220 (vsFTPd 3.0.2)Name (192.168.123.102:root): ftp331 Please specify the password.Password:230 Login successful. Remote system type is UNIX.Using binary mode to transfer files.ftp>ftp> ls

以上命令中的192.168.123.102是vsftpd服务器的ip地址

终端打印信息“230 Login successful. ”说明登录成功

3.FTP常用的命令

命令说明
ls查看服务器当前目录的文件
mkdir 【目录名】在服务器新建目录
put 文件名向服务器上传指定的一个文件
mput 文件名列表向服务器上传多个文件
chmod改变服务器中的文件权限
?或help显示内部命令的帮助信息
open 域名或IP地址建立于指定服务器的连接
close终止远端的进程,返回命令状态
bye或quit推出服务器

4.Vsftp服务器的配置文件

配置基本的Vsftpd服务器比较简单,只需要正确安装了Vsftpd软件,直接启动Vsftpd并放行端口就行了,但是如果想要更进一步的搭建Vsftpd服务,那就要掌握Vsftpd服务器的配置文件。

文件说明
/etc/vsftpd/vsftpd.confVsftpd服务器主配置文件
/etc/vsftpd/ftpusers禁止访问Vsftp服务器的用户名单
/etc/vsftpd/user_list指定用户能否访问FTP服务器取决于userlist_deny选项的设置
/etc/vsftpd/chroot_list目录访问控制文件

下面对这几个文件进行详细说明

1.vsftpd.conf文件

vsftpd.conf位于/etc/vsftpd目录下,与大多数配置文件一样,vsftpd.conf文件中以符号”#“开始注释信息,我们可以用Vim等工具对它进行修改。在Vsftpd中去掉注释,显示该文件的配置内容如下:

[root@linux2 ~]# grep -v "#" /etc/vsftpd/vsftpd.confanonymous_enable=YESlocal_enable=YESwrite_enable=YESlocal_umask=022dirmessage_enable=YESxferlog_enable=YESconnect_from_port_20=YESxferlog_std_format=YESlisten=NOlisten_ipv6=YESpam_service_name=vsftpduserlist_enable=YEStcp_wrappers=YES

下面对该文件中的常用选项进行介绍,合理使用这些选项是保障FTP安全稳定的前提

选项说明
anonymous_enable设置是否允许匿名用户登录服务器
local_enable设置是否允许本地用户登录服务器
write_enable设置是否允许写操作
local_umask设置本地用户创建文件的umask值
anon*_upload_enable*设置是否允许匿名用户上传文件
anon*_mkdir_write_enable*设置是否允许匿名用户建立目录
xferlog_enable是否激活日志功能
chown_uploads修改匿名用户上传文件的所有者
chown_username=whoever启用chown_uploads=YES时,指定为主用户账户,whoever表示你的ftp用户
chroot*_local_user*设置是否将所有用户限制在其主目录
chroot*_list_enable*设置是否启用限制用户的名单
chroot*_list_file*设置是否限制/排除主目录下的用户名单,限制/排除有chrootlocaluser值决定
allow*_writeable_choot*设置chroot目录的写权限

2.ftpusers文件

/etc/vsftpd/ftpusers文件用于指定不能访问vsftp服务器的用户列表,此文件在格式中采用每个用户一行的形式,其中包含的用户通常是系统的超级用户和系统用户

3.user_list文件

/etc/vsftpd/userlist 文件也用于保留用户列表,指定的用户能否访问vsftp服务取决于userlistdeny选项的参数,当userlist_deny选项的参数=YES时,此文件中写入的所有用户都将无法登录vsftp服务,想都别想,但是当userlist_deny=No时,这些用户就起来了,那就表示只有这些用户能够访问vsftp服务,所以一定要注意这个选项的参数。非常重要。

如果要限制一些指定的本地用户不能访问FTP服务,则可以添加以下内容来做到:

进入/etc/vaftpd/vsftpd.conf 末行添加

userlist_enable=YES

userlist_deny=YES

userlistfile=/etc/vsftpd/user_list

进入/etc/vsftpd/user_list 添加你需要拒绝访问的本地用户

toto (意为指定用户 每个指定用户单独占一行)

如果需要指定几个本地用户才能访问FTP服务,则可以添加以下内容来做到:

进入/etc/vaftpd/vsftpd.conf 末行添加

userlist_enable=YES

userlist_deny=NO

userlistfile=/etc/vsftpd/user_list

进入/etc/vsftpd/user_list 添加你需要拒绝访问的本地用户

toto (意为指定用户 每个指定用户单独占一行)

4.chroot_list文件

默认情况下,匿名用户会被锁定在默认FTP目录中,而本地用户却可以访问自己主目录以外的内容,出于安全考虑,通过chroot_list文件可以限制用户只能访问其主目录,也可以实现使用不同哟ing胡不仅能访问自己的目录也可以访问主目录以外的内容。

chrootlist文件设计chrootlocaluser和chroot*_list_enable两个选项*

chroot*_list_file默认指向/etc/ sftpd/chroot_list*

chroot_list文件的功能有两个

当chroot*_list_enable=YES时,chroot_list中的用户只能在本目录中*

当chroot*_list_enable=NO时,chroot_list中的目录可以访问除主目录以外的内容*

5.Vsftp服务器的使用

前面介绍了Vsftpd服务器的安装,启动及主要的配置文件,下面通过具体的实例来介绍该服务器的具体应用。

1.匿名用户访问Vsfto服务器

本次实验环境为Centos7 服务器的IP地址为192.168.123.101 主机名为linux1

第一步:安装Vsftp服务及开启该服务

yum install -y vsftpd
systemctl restart vsftpd

使用ftp匿名用户登录,如下所示:

[root@linux2 ~]# ftp 192.168.123.101Connected to 192.168.123.101 (192.168.123.101).220 (vsFTPd 3.0.2)Name (192.168.123.101:root): ftp331 Please specify the password.Password:230 Login successful.Remote system type is UNIX.Using binary mode to transfer files.ftp>ftp> ls227 Entering Passive Mode (192,168,123,101,101,29).150 Here comes the directory listing.drwxr-xr-x    2 0        0               6 Oct 13  2020 pub226 Directory send OK.

登录成功,使用ls命令浏览默认的FTP目录 (/var/ftp)

首先在FTP默认目录/var/pub中创建两个文本文件1.txt和2.txt

[root@ayaka ~]# cd /var/ftp/pub/

[root@ayaka pub]# touch 1.txt

[root@ayaka pub]# touch 2.txt

[root@ayaka pub]# ls
1.txt 2.txt

在客户端上进入/pub目录

ftp> ls
227 Entering Passive Mode (192,168,123,101,75,103).
150 Here comes the directory listing.
-rw-r–r-- 1 0 0 0 May 09 10:37 1.txt
-rw-r–r-- 1 0 0 0 May 09 10:37 2.txt

将Vsftpd服务器上文件下载到客户端

进入pub目录 使用get命令将文件1.txt与2.txt下载到当前目录下,下载成功的过程如下

220 (vsFTPd 3.0.2)Name (192.168.123.101:root): ftp331 Please specify the password.Password:230 Login successful.Remote system type is UNIX.Using binary mode to transfer files.ftp> cd pub250 Directory successfully changed.ftp> ls227 Entering Passive Mode (192,168,123,101,25,132).150 Here comes the directory listing.-rw-r--r--    1 0        0              50 May 09 10:54 1.txt-rw-r--r--    1 0        0               0 May 09 10:37 2.txt226 Directory send OK.ftp> !pwd/rootftp> get 1.txtlocal: 1.txt remote: 1.txt227 Entering Passive Mode (192,168,123,101,145,74).150 Opening BINARY mode data connection for 1.txt (50 bytes).226 Transfer complete.50 bytes received in 0.000134 secs (373.13 Kbytes/sec)ftp> !ls1  1.txt  anaconda-ks.cfgftp>

测试在Vsftp服务器创建目录

ftp> mkdir toto
550 Permission denied.
ftp

通过以上操作可以得出:在默认情况下,匿名用户一般只有从服务器服务器下载文件的权限,不能上传文件或进行其它操作

那如何让他变得有权限呢,接下来我们来配置vsftpd使得有上传文件或进行其它操作

更改vsftpd.conf文件,开启匿名用户上传,创建目录权限

将如下两个参数取消注释

29 #anon_upload_enable=YES //允许匿名文件上传文件

34 #anon_mkdir_write_enable=YES //允许匿名用户建立目录

取消注释后保存并退出 重启vsftpd服务让它生效

systemctl restart vsftpd

创建匿名用户上传目录

需要在/var/ftp目录下创建一个目录,修改目录的权限,让匿名用户具有写权限

[root@ayaka pub]# mkdir /var/ftp/hub
[root@ayaka pub]# chmod o+w /var/ftp/hub

上传目录

使用put命令把本地文件上传到FTP服务器上,具体过程如下。

[root@linux2 ~]# ftp 192.168.123.101Connected to 192.168.123.101 (192.168.123.101).220 (vsFTPd 3.0.2)Name (192.168.123.101:root): ftp331 Please specify the password.Password:230 Login successful.Remote system type is UNIX.Using binary mode to transfer files.ftp> cd hub  //进入目录hub 250 Directory successfully changed.ftp> !ls//执行本机Shell命令,显示当前内容 1  1.txt  anaconda-ks.cfg  file1.txtftp> put 1   //上传文件1local: 1 remote: 1227 Entering Passive Mode (192,168,123,101,176,227).150 Ok to send data.226 Transfer complete.1664 bytes sent in 0.000814 secs (2044.23 Kbytes/sec)ftp> ls -l          //查看hub目录中的文件列表227 Entering Passive Mode (192,168,123,101,85,50).150 Here comes the directory listing.-rw-------    1 14       50           1664 May 09 11:26 1226 Directory send OK.ftp> mkdir tomato//创建目录257 "/hub/tomato" created//创建目录成功ftp> ls227 Entering Passive Mode (192,168,123,101,99,18).150 Here comes the directory listing.-rw-------    1 14       50           1664 May 09 11:26 1drwx------    2 14       50              6 May 09 11:35 tomato226 Directory send OK.ftp> 

2.本地用户访问Vsftp服务器

本地用户是在FTP服务器上拥有用户账户的用户,相当于FTP服务器中的真实实际用户,其通过输入自己的账号和口令来进行授权登录,当用户成功登录服务器后,其登录目录为用户的主目录,用户的权限对该主目录的操作权限,可以下载也可以上传文件。

下面我们将用实例来介绍本地用户登录服务器下载,上传文件的过程。

本地用户访问Vsftp服务器,本例Vsftp服务器的ip地址为192.168.123.101 客户端主机名为Client

Vsftp服务器建立用户ftpuser,并在用户的家目录建立文件toto和yoyo 命令如下

[root@ayaka pub]# useradd ftpuser

[root@ayaka pub]# echo “123” | passwd --stdin ftpuser //设置ftpuser的密码为123

[root@ayaka pub]# su - ftpuser //登录用户ftpuser

[ftpuser@ayaka ~]$ touch toto.txt

[ftpuser@ayaka ~]$ touch yoyo.txt

使用本地用户登录Vsftpd服务器后,其登录目录为用户的主目录/home/ftpuser,具体过程如下

[root@linux2 ~]# ftp 192.168.123.102Connected to 192.168.123.102 (192.168.123.102).220 (vsFTPd 3.0.2)Name (192.168.123.102:root): ftpuser331 Please specify the password.Password:530 Login incorrect.Login failed.ftp> ^Z[2]+  已停止               ftp 192.168.123.102[root@linux2 ~]#[root@linux2 ~]# ftp 192.168.123.101Connected to 192.168.123.101 (192.168.123.101).220 (vsFTPd 3.0.2)Name (192.168.123.101:root): ftpuser331 Please specify the password.Password:230 Login successful.Remote system type is UNIX.Using binary mode to transfer files.ftp> ls227 Entering Passive Mode (192,168,123,101,56,176).150 Here comes the directory listing.-rw-rw-r--    1 1000     1000            0 May 09 11:44 toto.txt-rw-rw-r--    1 1000     1000            0 May 09 11:44 yoyo.txt226 Directory send OK.ftp> pwd257 "/home/ftpuser"ftp>

创建目录

用户ftpuser创建目录tomato,具体操作如下

ftp> mkdir tomato257 "/home/ftpuser/tomato" createdftp> ls227 Entering Passive Mode (192,168,123,101,244,9).150 Here comes the directory listing.drwxr-xr-x    2 1000     1000            6 May 09 11:52 tomato-rw-rw-r--    1 1000     1000            0 May 09 11:44 toto.txt-rw-rw-r--    1 1000     1000            0 May 09 11:44 yoyo.txt226 Directory send OK.ftp>

上传本地文件

用户ftpuser上传本地文件到服务器指定目录,具体操作如下:

ftp> !ls -l总用量 16-rw-r--r--. 1 root root 1664 1023 2020 1-rw-r--r--. 1 root root   50 59 18:56 1.txt-rw-------. 1 root root 1295 57 19:16 anaconda-ks.cfg-rw-r--r--. 1 root root    7 59 19:20 file1.txtftp> !pwd/rootftp> put anaconda-ks.cfg//上传本地文件local: anaconda-ks.cfg remote: anaconda-ks.cfg227 Entering Passive Mode (192,168,123,101,101,125).150 Ok to send data.226 Transfer complete.1295 bytes sent in 0.00108 secs (1194.65 Kbytes/sec)ftp> ls -l//浏览远程目录,验证上传文件是否为本地文件227 Entering Passive Mode (192,168,123,101,149,213).150 Here comes the directory listing.-rw-r--r--    1 1000     1000         1295 May 09 11:55 anaconda-ks.cfgdrwxr-xr-x    2 1000     1000            6 May 09 11:52 tomato-rw-rw-r--    1 1000     1000            0 May 09 11:44 toto.txt-rw-rw-r--    1 1000     1000            0 May 09 11:44 yoyo.txt226 Directory send OK.ftp>

下载服务器文件到本地

用ftpuser下载文件toto到本地当前目录下,下载文件yoyo到本地目录/tmp下,并且重命名为toto.bak 具体操作如下

ftp> get totolocal: toto remote: toto227 Entering Passive Mode (192,168,123,101,206,168).550 Failed to open file.ftp> ls227 Entering Passive Mode (192,168,123,101,98,221).150 Here comes the directory listing.-rw-r--r--    1 1000     1000         1295 May 09 11:55 anaconda-ks.cfgdrwxr-xr-x    2 1000     1000            6 May 09 11:52 tomato-rw-rw-r--    1 1000     1000            0 May 09 11:44 toto.txt-rw-rw-r--    1 1000     1000            0 May 09 11:44 yoyo.txt226 Directory send OK.ftp> get toto.txt           //下载文件到本地目录 local: toto.txt remote: toto.txt227 Entering Passive Mode (192,168,123,101,46,209).150 Opening BINARY mode data connection for toto.txt (0 bytes).226 Transfer complete.ftp> !ls -l//浏览本地目录,验证下载文件操作是否成功总用量 16-rw-r--r--. 1 root root 1664 1023 2020 1-rw-r--r--. 1 root root   50 59 18:56 1.txt-rw-------. 1 root root 1295 57 19:16 anaconda-ks.cfg-rw-r--r--. 1 root root    7 59 19:20 file1.txt-rw-r--r--. 1 root root    0 59 19:59 toto.txt// 下载文件yoyo.txt 到 本地目录/tmp下 并重命名为yoyo.baktp> get yoyo.txt /tmp/yoyo.baklocal: /tmp/yoyo.bak remote: yoyo.txt227 Entering Passive Mode (192,168,123,101,46,136).150 Opening BINARY mode data connection for yoyo.txt (0 bytes).226 Transfer complete.ftp> lcd /tmp   进入本地目录/tmp Local directory now /tmpftp> !ls   //浏览验证本地目录是否有yoyo.bak ks-script-e7_otA yoyo.baksystemd-private-7da9c4fa89d64f18a66b1cf3053c3ff6-chronyd.service-JoFutU  yum.logvmware-root_797-4257069498ftp>

来源地址:https://blog.csdn.net/2201_75288693/article/details/130594069

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-服务器
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯