共享资源库系统
案例目标
(1)了解FTP工作原理,客户端工具,FTP状态码以及vsftp服务的安装。
(2)了解FTP虚拟用户配置以及黑白名单规则使用限制。
(3)FTP客户端安装以及使用FTP客户端测试。
(4)熟悉NFS工作原理,服务部署安装,以及配置文件中参数的使用。
(5)了解showmount命令的使用,熟练挂载共享目录以及永久挂载的操作。
(6)了解crond命令使用,shell脚本备份资源库编写。
FTP服务
什么是FTP
FTP(FileTransferProtocol)是一个非常古老并且应用十分广泛的文件传输协
议,FTP协议是现今使用最为广泛的网络文件共享协议之一,我们现在也一直有
在用着FTP协议来进行各种文件的传输,FTP为我们提供了一种可靠的方式在
网络上进行文件的共享。
FTP原理
FTP是C/S架构的服务,拥有一个服务器端和一个客户端,FTP底层通过
TCP协议来作为传输协议,所以FTP协议是一种可靠的文件传输方式,FTP提
供了两个端口号,20和21号端口,20号是数据接口,提供数据之间的传输,21
号是命令接口,提供命令之间的传输。
FTP服务端与客户端连接一般有两种模式:主动模式和被动模式
主动模式
在主动模式下,FTP客户端随机开启一个大于1024的端口N向服务器的21
号端口发起连接,发送FTP用户名和密码,然后开放N+1号端口进行监听,并
向服务器发出PORTN+1命令,告诉服务端客户端采用主动模式并开放了端口。
FTP服务器接收到PORT命令后,会用其本地的FTP数据端口(通常是20)来
连接客户端指定的端口N+1,进行数据传输
被动模式
在被动模式下,FTP客户端随机开启一个大于1024的端口N向服务器的21
号端口发起连接,发送用户名和密码进行登陆,同时会开启N+1端口。然后向
服务器发送PASV命令,通知服务器自己处于被动模式。服务器收到命令后,会
开放一个大于1024的端口P(端口P的范围是可以设置的,后面会说到这个是
很重要的)进行监听,然后用PORTP命令通知客户端,自己的数据端口是P。
客户端收到命令后,会通过N+1号端口连接服务器的端口P,然后在两个端口之
间进行数据传输。
FTP客户端
ftp命令程序:是最简单的FTP客户端工具,Windows和Linux都拥有ftp
命令程序,可以连接到FTP服务器进行交互式的上传、下载通信。
配置主机名
# hostnamectl set-hostname ftp
vsftp部署安装
通过yum源安装vsftp:
# yum -y install vsftpd telnet
# systemctl start vsftpd #启动服务
# netstat -ntpl |grep 21
# systemctl stop firewalld
# setenforce 0
# cd /etc/vsftpd/
# cp vsftpd.conf{,.bak}
# egrep -v '^#|^$' vsftpd.conf.bak
#egrep-v'^#|^$' vsftpd.conf.bak>vsftpd.conf
# cat vsftpd.conf
主配置文件:/etc/vsftpd/vsftpd.conf
主程序:/usr/sbin/vsftpd
虚拟用户配置
在vsftpd服务器中,使用虚拟用户的主要好处在与:可以将FTP登录的账
号与系统登录账号区分开,用户名、密码都不相同,从而进一步增强了FTP服
务器的安全性
创建账号数据
1创建文本格式的用户名、密码列表。
奇数行:账号名,偶数行:密码(即上一行中账号的密码)
2转化为BerkeleyDB格式的数据文件
需要db_load转换工具,默认已安装。
“-f”用于指定数据源文件
“-T”表示允许非BerkeleyDB的应用程序使用从文本格式转换的DB数据
文件
“-thash”用于指定读取数据文件的基本方法
3为了提高虚拟用户账号文件的安全性,应将文件权限设置为600,以免数据外泄。
# vi /etc/vsftpd/users.conf
zhangsan
1234
zhaogao
5678
# db_load -T -t hash-f/etc/vsftpd/users.conf/etc/vsftpd/users.db
#chmod600users.db
创建FTP根目录及虚拟用户映射的系统用户(此账号无需设置密码及
登录shell)
[root@ftp~]# useradd vsftpd -d /home/vsftpd-s /sbin/nologin
[root@ftp~]# mkdir -p /home/vsftpd/xmcsxy
[root@ftp~]# chmod -R 755 /home/vsftpd
建立支持虚拟用户的PAM认证文件
[root@ftp~]# vi /etc/pam.d/vsftpd
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/users
account sufficient /lib64/security/pam_userdb.sodb=/etc/vsftpd/users
添加虚拟用户支持
在 vsftpd.conf 文件中添加虚拟用户支持配置
[root@ftp~]# vi/etc/vsftpd/vsftpd.conf
anonymous_enable=NO #禁止匿名用户登录
增加下面配置参数:
chroot_local_user=YES #禁止用户访问除主目录以外的目录
guest_enable=YES #启用虚拟用户
allow_writeable_chroot=YES #允许写入用户主目录
为不同的虚拟用户建立独立的配置文件
[root@ftp~]# vi /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/vsftpd_user_conf
有了上述配置以后,就可以在/etc/vsftpd/vsftpd_user_conf目录中为每个
虚拟用户分别建立配置文件了
[root@ftp~]# mkdir -p /etc/vsftpd/vsftpd_user_conf
[root@ftp~]# cd /etc/vsftpd/vsftpd_user_conf/
[root@ftpvsftpd_user_conf]# vi zhangsan
local_root=/home/vsftpd/xmcsxy #当本地用户登入时,将被更换到定义
的目录下。默认值为各用户的家目录。
anon_upload_enable=YES #是否允许登陆用户有上传权限。
write_enable=YES #是否允许登陆用户有写权限。
#vi zhaogao
local_root=/home/vsftpd/xmcsxy
anon_upload_enable=YES
write_enable=YES
# chmod -R 755*
**
重启服务并测试
重启服务生效配置文件:
[root@ftp~]# systemctl restart vsftpd
[root@ftp~]# systemctl enable vsftpd
Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service
to /usr/lib/systemd/system/vsftpd.service.
使用虚拟FTP账户访问测试:
zhangsan用户可以登录,并可以浏览、下载,也可以上传。
测试之前:关闭防火墙以及安全规则;
[root@ftpvsftpd_user_conf]# systemctl stop firewalld
[root@ftpvsftpd_user_conf]# systemctl disable firewalld
Removed symlink /etc/systemd/syst em/multi-user.target.wants/firewalld.service.
Removed symlink
/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@ftpvsftpd_user_conf]# setenforce 0
先往家目录写入一个文件
[root@ftp~]# cd /home/vsftpd/xmcsxy/
[root@ftpxmcsxy]# touch a.txt
使用lftp工具访问
NFS节点上部署lftp客户端:(命令行ftp客户端)
[root@nfs~]# yum -y install lftp
# lftp zhangsan@192.168.63.131
尝试下载
> get a.txt
[root@localhost~]# ll
执行一个上传的操作
# chmod -R 777 /home/vsftpd/xmcsxy/
[root@ftp~]# tail -f /var/log/secure
lftpzhangsan@192.168.63.131:/> get a.txt
lftpzhangsan@192.168.63.131:/> e