Linux进阶-2.安装FTP服务

FTP是一种在互联网中进行文件传输的协议,基于客户端/服务器模式,默认使用20、21号端口,其中端口20(数据端口)用于进行数据传输,端口21(命令端口)用于接受客户端发出的相关FTP命令与参数。

1.安装服务

[root@linux Desktop]# yum install vsftpd -y
已加载插件:langpacks, product-id, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
正在解决依赖关系
--> 正在检查事务
---> 软件包 vsftpd.x86_64.0.3.0.2-9.el7 将被 安装
--> 解决依赖关系完成

依赖关系解决

================================================================================
 Package          架构             版本                    源              大小
================================================================================
正在安装:
 vsftpd           x86_64           3.0.2-9.el7             rhel           166 k

事务概要
================================================================================
安装  1 软件包

总下载量:166 k
安装大小:343 k
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  正在安装    : vsftpd-3.0.2-9.el7.x86_64                                   1/1 
  验证中      : vsftpd-3.0.2-9.el7.x86_64                                   1/1 

已安装:
  vsftpd.x86_64 0:3.0.2-9.el7                                                   

完毕!

2.编辑配置文件

将配置文件中开头没有#号的注释重定向到配置文件中,这样配置文件中的参数只有短短几行了。

[root@linux Desktop]# grep -v '#' /etc/vsftpd/vsftpd.conf.bak > /etc/vsftpd/vsftpd.conf
[root@linux Desktop]# cat /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES

pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

2.1配置匿名访问模式

匿名访问模式是最不安全的一种认证模式,任何人都可以无需密码验证而直接登录到FTP服务器,一般用来访问不重要的公开文件。在配置文件中匿名访问时默认开启的。我们需要做的就是开放匿名用户的上传、下载文件的权限,以及让匿名用户创建、删除、更名文件的权限。默认共享的/var/ftp/pub目录。

参数								作用
anonymous_enable=YES			允许匿名访问模式
anon_umask=022					匿名用户上传文件的umask值
anon_upload_enable=YES			允许匿名用户上传文件
anon_mkdir_write_enable=YES		允许匿名用户创建目录
anon_other_write_enable=YES		允许匿名用户修改目录名称或删除目录

2.2将这几个参数加入到配置文件中。

[root@linux Desktop]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
anon_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

2.3重启服务

[root@linux Desktop]# systemctl restart vsftpd

2.4清空防火墙策略和关闭selinux

[root@linux ftp]# iptables -F
[root@linux ftp]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  确定  ]
[root@linux ftp]# vim /etc/selinux/config 
SELINUX=disabled
SELINUXTYPE=targeted

2.5windows客户端访问

访问在资源管理器中输入ftp://192.168.10.10
在这里插入图片描述
在FTP服务器上新建文件错误,查看服务器/var/ftp/pub的权限,发现只有root用户才能写入,将此目录所有者改成ftp用户。
在这里插入图片描述

[root@linux ~]# ls -ld /var/ftp/pub
drwxr-xr-x. 2 root root 6 5月  19 17:14 /var/ftp/pub
[root@linux ~]# chown -Rf ftp /var/ftp/pub
[root@linux ~]# ls -ld /var/ftp/pub
drwxr-xr-x. 2 ftp root 6 5月  19 17:14 /var/ftp/pub

客户端可以正常创建文件了
在这里插入图片描述

2.6linux客户端访问

首先安装ftp服务

[root@localhost ~]# yum install vsftpd
Loaded plugins: langpacks, product-id, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Resolving Dependencies
--> Running transaction check
---> Package vsftpd.x86_64 0:3.0.2-9.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package          Arch             Version                 Repository      Size
================================================================================
Installing:
 vsftpd           x86_64           3.0.2-9.el7             rhel           166 k

Transaction Summary
================================================================================
Install  1 Package

Total download size: 166 k
Installed size: 343 k
Is this ok [y/d/N]: y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : vsftpd-3.0.2-9.el7.x86_64                                    1/1 
  Verifying  : vsftpd-3.0.2-9.el7.x86_64                                    1/1 

Installed:
  vsftpd.x86_64 0:3.0.2-9.el7                                                   

Complete!

在终端中输入ftp 192.168.10.10,输入用户名anonymous,密码为空。

[root@localhost ~]# ftp 192.168.10.10
Connected to 192.168.10.10 (192.168.10.10).
220 (vsFTPd 3.0.2)
Name (192.168.10.10:root): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd pub
250 Directory successfully changed.
ftp> mkdir 123
257 "/pub/123" created
ftp> ls
227 Entering Passive Mode (192,168,10,10,79,24).
150 Here comes the directory listing.
drwxr-xr-x    2 14       50              6 May 19 09:52 123
drwxr-xr-x    2 14       50              6 May 19 09:24 新文件夹
226 Directory send OK.

3.配置本地用户访问模式

相较于匿名开放模式,本地用户模式要更安全,使用Linux中用户的账户登录,默认共享所登录用户的家目录。

3.1将这几个参数加入到配置文件中。

[root@linux Desktop]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

3.2重启服务

[root@linux ~]# systemctl restart vsftpd

3.3清空防火墙策略和关闭selinux

[root@linux ftp]# iptables -F
[root@linux ftp]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  确定  ]
[root@linux ftp]# vim /etc/selinux/config 
SELINUX=disabled
SELINUXTYPE=targeted

3.4删除“黑名单”

若用户名存在ftpusers和user_list两个文件中,是不允许使用用户账号登录FTP的,所以登陆之前先查看有没有用户。

[root@linux ~]# vim /etc/vsftpd/user_list 
删除需要登录的用户...
[root@linux ~]# vim /etc/vsftpd/ftpusers 
删除需要登录的用户...

3.5客户端访问

登录方法和匿名用户登录一样,只是需要输入用户名和密码,使用服务器本地用户登录就可以访问登录用户的家目录了。
在这里插入图片描述
在这里插入图片描述

4.虚拟用户模式

4.1创建FTP用户

在/etc/vsftpd/下创建一个文件,在文件中奇数行写入FTP用户名,偶数行写入上一行用户名的密码。使用db_load命令用hash算法将原始的明文信息文件转换成数据库文件,降低数据库文件的权限只让root用户可以读写,最后再把原始的明文信息文件删除。

[root@linux Desktop]# vim /etc/vsftpd/user
shijie2
shijie2
shijie3
shijie3

[root@linux Desktop]# db_load -T -t hash -f /etc/vsftpd/user /etc/vsftpd/user.db 
[root@linux Desktop]# file /etc/vsftpd/user.db
/etc/vsftpd/user.db: Berkeley DB (Hash, version 9, native byte-order)
[root@linux Desktop]# chmod 600 user.db 
[root@linux Desktop]# rm -f /etc/vsftpd/user

4.2创建访问目录

创建一个可以映射到虚拟用户的系统本地用户,让虚拟用户默认登录到与之有映射关系的这个系统本地用户的家目录中,虚拟用户创建的文件的属性也都归属于这个系统本地用户,从而避免Linux系统无法处理虚拟用户所创建文件的属性权限。

[root@linux Desktop]# useradd -d /var/ftpfile -s /sbin/nologin virtual
[root@linux Desktop]# ls -ld /var/ftpfile/
drwx------. 3 virtual virtual 74 5月  19 20:37 /var/ftpfile/
[root@linux Desktop]# chmod -Rf 755 /var/ftpfile/

4.3虚拟用户认证

新建一个用于虚拟用户认证的PAM文件vsftpd.vu,其中PAM文件内的“db=”参数为使用db_load命令生成的账户密码数据库文件的路径,但不用写数据库文件的后缀。

[root@linux Desktop]# vim /etc/pam.d/vsftpd.vu
auth       required     pam_userdb.so db=/etc/vsftpd/user
account    required     pam_userdb.so db=/etc/vsftpd/user

4.4编辑配置文件

anonymous_enable=NO			禁止匿名开放模式
local_enable=YES			允许本地用户模式
guest_enable=YES			开启虚拟用户模式
guest_username=virtual		指定虚拟用户账户
pam_service_name=vsftpd.vu	指定PAM文件
allow_writeable_chroot=YES	允许对禁锢的FTP根目录执行写入操作,而且不拒绝用户的登录请求
[root@linux Desktop]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
guest_enable=YES
guest_username=virtual
pam_service_name=vsftpd.vu
allow_writeable_chroot=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
userlist_enable=YES
tcp_wrappers=YES

4.5修改虚拟用户权限

新建一个目录,在里面分别创建以用户名命名的文件,使用匿名用户的参数在名为shijie2的文件中写入允许的相关权限。并使用参数user_config_dir将这个目录添加进配置文件。

[root@linux Desktop]# vim /etc/vsftpd/userdir/shijie2
anonymous_enable=NO
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
[root@linux Desktop]# echo 'user_config_dir=/etc/vsftpd/userdir'>> /etc/vsftpd/vsftpd.conf

4.6重启服务

[root@linux ~]# systemctl restart vsftpd
[root@linux ~]# systemctl enable vsftpd
[root@linux ftp]# iptables -F
[root@linux ftp]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  确定  ]
[root@linux ftp]# vim /etc/selinux/config 
SELINUX=disabled
SELINUXTYPE=targeted

4.7客户端访问

使用虚拟用户shijie2和shijie3访问服务器。
在这里插入图片描述
shijie2用户可以新建、修改文件。
在这里插入图片描述
而shijie3用户只有访问权限。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值