一、实验环境:

  • FTP服务端(Linux) IP:192.168.100.1
  • 客户端(Linux) IP:192.168.100.2

将FTP客户端和服务器端配置在同一网段下。

二、实验步骤:

1、前期测试:
FTP服务器端:
1.1> 关闭防火墙和setenforce服务;

LINUX部署CODESYS RUNTIME_服务器

1.2> 配置服务器端的IP地址,结果如下:

LINUX部署CODESYS RUNTIME_服务器_02

1.3> 首先在服务器上安装vsftp服务,并启动;

LINUX部署CODESYS RUNTIME_服务器_03

1.4> 查看服务器是否安装FTP服务器;

LINUX部署CODESYS RUNTIME_虚拟用户_04

1.5> 在 /var/ftp 目录下,查看ftp服务的共享文件目录,可以看到 pub 目录;

LINUX部署CODESYS RUNTIME_服务器_05

FTP客户端:
1.6> 关闭客户端防火墙和setenforce服务;

LINUX部署CODESYS RUNTIME_虚拟用户_06

1.7> 配置客户端端的IP地址,结果如下:

LINUX部署CODESYS RUNTIME_服务器_07

1.8> 启动服务;

LINUX部署CODESYS RUNTIME_服务器_08

1.9> 通过客户机端ping命令,测试与vsftpd服务器的网络联通性;

LINUX部署CODESYS RUNTIME_客户端_09

1.10> 在客户机上查看vsftpd服务器的文件;可以看到成功访问;

LINUX部署CODESYS RUNTIME_客户端_10

1.11> 在客户机上安装FTP客户机软件;

LINUX部署CODESYS RUNTIME_虚拟用户_11

1.12> 在客户机的命令行界面尝试连接ftp服务,以匿名身份访问,可以成功访问到pub目录;由下图可以看出,匿名用户访问ftp服务,默认的根目录就是ftp服务器共享文件的目录 /var/ftp/,不能轻易访问服务器的其他目录;

LINUX部署CODESYS RUNTIME_客户端_12

1.13> 匿名用户不能访问服务器的其他目录,那么如果是本地用户账户呢?是否可以访问到服务器的其他目录呢?

首先,我们在服务器端创建一个本地账户:zhangsan,密码:123,并在zhangsan的家目录下创建一个文件:zhang;尝试用客户机进行远程连接;

LINUX部署CODESYS RUNTIME_服务器_13

1.14> 尝试用客户机远程登录连接zhangsan这个账户;

LINUX部署CODESYS RUNTIME_服务器_14

通过上述示例,可以发现当用FTP远程登录本地账户时,除了查看ftp服务器的共享目录的文件外,还可以查看服务器的其他目录,甚至进行其他操作,很容易造成各种风险;所以,针对这种问题,我们可以采取虚拟用户的方式进行解决;

2、FTP虚拟用户
2.1> 虚拟用户的本地用户映射;

LINUX部署CODESYS RUNTIME_客户端_15

2.2> 建立虚拟用户的数据库文件;

LINUX部署CODESYS RUNTIME_客户端_16


LINUX部署CODESYS RUNTIME_客户端_17

2.3> 虚拟用户身份认证文件;
  • [root@root vsftpd]# cd /etc/vsftpd/
  • [root@root vsftpd]# vim vsftpd.vu
  • [root@root vsftpd]# vim vsftpd.vu

虚拟用户身份认证文件:
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required //lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login

LINUX部署CODESYS RUNTIME_服务器_18

2.4> 修改配置文件并重启服务;

修改配置文件

  • [root@root pam.d]# cd /etc/vsftpd
  • [root@root vsftpd]# vim vsftpd.conf

LINUX部署CODESYS RUNTIME_客户端_19

重启服务:

LINUX部署CODESYS RUNTIME_虚拟用户_20

2.5> 虚拟用户的配置文件如下所示,我们先不做任何配置,可以用建立的虚拟用户进行测试;

LINUX部署CODESYS RUNTIME_虚拟用户_21

LINUX部署CODESYS RUNTIME_服务器_22

2.6> 猜想:能否用虚拟账户远程登录进去的默认目录为vsftp?

为了将猜想得到验证,所以在vsftp建立一个文件guest,用虚拟用户yaoyao远程连接进行测试,查看是否可以看到新建立的文件;

LINUX部署CODESYS RUNTIME_服务器_23

2.7> 通过下图可以看到,切换到根目录时,依然还是默认的登陆进去的目录,说明虚拟账户建立成功,但是并没有像猜想到的那样看到guest文件,这是由于虚拟用户的权限没有配置;所以看不到guest文件;

LINUX部署CODESYS RUNTIME_服务器_24

2.8> 在如下目录下,配置虚拟用户的权限,tom用户不做任何配置,jack、rose,yaoyao用户的配置分别如下所示:

LINUX部署CODESYS RUNTIME_虚拟用户_21


LINUX部署CODESYS RUNTIME_虚拟用户_21

LINUX部署CODESYS RUNTIME_虚拟用户_27

2.9> 分别用四个虚拟账户进行登录,查看各自的权限;
  • tom账户登录;默认没有权限;

LINUX部署CODESYS RUNTIME_服务器_28

  • rose账户登录;读、写、上传权限;

LINUX部署CODESYS RUNTIME_客户端_29

  • jack账户登录;读、写、上传、创建文件夹权限;

LINUX部署CODESYS RUNTIME_服务器_30

  • yaoyao账户登录;读、写、上传,建文件夹、删除、更名权限;

LINUX部署CODESYS RUNTIME_虚拟用户_31