一、实验环境:
- FTP服务端(Linux) IP:192.168.100.1
- 客户端(Linux) IP:192.168.100.2
将FTP客户端和服务器端配置在同一网段下。
二、实验步骤:
1、前期测试:
FTP服务器端:
1.1> 关闭防火墙和setenforce服务;
1.2> 配置服务器端的IP地址,结果如下:
1.3> 首先在服务器上安装vsftp服务,并启动;
1.4> 查看服务器是否安装FTP服务器;
1.5> 在 /var/ftp 目录下,查看ftp服务的共享文件目录,可以看到 pub 目录;
FTP客户端:
1.6> 关闭客户端防火墙和setenforce服务;
1.7> 配置客户端端的IP地址,结果如下:
1.8> 启动服务;
1.9> 通过客户机端ping命令,测试与vsftpd服务器的网络联通性;
1.10> 在客户机上查看vsftpd服务器的文件;可以看到成功访问;
1.11> 在客户机上安装FTP客户机软件;
1.12> 在客户机的命令行界面尝试连接ftp服务,以匿名身份访问,可以成功访问到pub目录;由下图可以看出,匿名用户访问ftp服务,默认的根目录就是ftp服务器共享文件的目录 /var/ftp/,不能轻易访问服务器的其他目录;
1.13> 匿名用户不能访问服务器的其他目录,那么如果是本地用户账户呢?是否可以访问到服务器的其他目录呢?
首先,我们在服务器端创建一个本地账户:zhangsan,密码:123,并在zhangsan的家目录下创建一个文件:zhang;尝试用客户机进行远程连接;
1.14> 尝试用客户机远程登录连接zhangsan这个账户;
通过上述示例,可以发现当用FTP远程登录本地账户时,除了查看ftp服务器的共享目录的文件外,还可以查看服务器的其他目录,甚至进行其他操作,很容易造成各种风险;所以,针对这种问题,我们可以采取虚拟用户的方式进行解决;
2、FTP虚拟用户
2.1> 虚拟用户的本地用户映射;
2.2> 建立虚拟用户的数据库文件;
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
2.4> 修改配置文件并重启服务;
修改配置文件
- [root@root pam.d]# cd /etc/vsftpd
- [root@root vsftpd]# vim vsftpd.conf
重启服务:
2.5> 虚拟用户的配置文件如下所示,我们先不做任何配置,可以用建立的虚拟用户进行测试;
2.6> 猜想:能否用虚拟账户远程登录进去的默认目录为vsftp?
为了将猜想得到验证,所以在vsftp建立一个文件guest,用虚拟用户yaoyao远程连接进行测试,查看是否可以看到新建立的文件;
2.7> 通过下图可以看到,切换到根目录时,依然还是默认的登陆进去的目录,说明虚拟账户建立成功,但是并没有像猜想到的那样看到guest文件,这是由于虚拟用户的权限没有配置;所以看不到guest文件;
2.8> 在如下目录下,配置虚拟用户的权限,tom用户不做任何配置,jack、rose,yaoyao用户的配置分别如下所示:
2.9> 分别用四个虚拟账户进行登录,查看各自的权限;
- tom账户登录;默认没有权限;
- rose账户登录;读、写、上传权限;
- jack账户登录;读、写、上传、创建文件夹权限;
- yaoyao账户登录;读、写、上传,建文件夹、删除、更名权限;