Linux之NFS与SAMBA

Linux服务器安全

NFS
1 NFS应用场景
NFS(Network File System网络文件系统),场景中最少包含两台服务器。应用场景中通常是存储。

2 nfs为什么需要RPC?
因为NFS支持的功能很多,不同功能会使用不同程序来启动,
因此,NFS对应的功能所对应的端口无法固定。
端口不固定造成客户端与服务端之间的通信障碍,所以需要RPC来从中帮忙。
NFS启动时会随机取用若干端口,然后主动向RPC服务注册取用相关端口和功能信息,
RPC使用固定端口111来监听来自NFS客户端的请求,并将正确的NFS服务端口信息返回给客户端,
这样客户端与服务端就可以进行数据传输了。

3 NFS的工作流程
1、由程序在NFS客户端发起存取文件的请求,
客户端本地的RPC(rpcbind)服务会通过网络向NFS服务端的RPC的111端口发出
文件存取功能的请求。
2、NFS服务端的RPC找到对应已注册的NFS端口,通知客户端RPC服务。
3、客户端获取正确的端口,并与NFS daemon联机存取数据。
4、存取数据成功后,返回前端访问程序,完成一次存取操作。
所以无论客户端,服务端,需要使用NFS,必须安装RPC服务。

4 安装NFS

服务端配置:

1 关闭防火墙
	//停止防火墙
	systemctl stop firewalld.service
	//关闭防火墙
	systemctl disable firewalld.service

2 安装NFS,rpcbind
	yum install -y  nfs-utils rpcbind

3 启动rpcbind服务
	systemctl restart rpcbind.service

4 配置nfs配置文件
	1 创建一个文件夹
		mkdir data
	2 编辑nfs的配置文件
		vim /etc/exports
		
		编写内容:
		/root/data	客户端地址/24(rw,sync,no_root_squash)
		参数:
		•ro:目录只读
		•rw:目录读写
		•sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性
		•async:将数据先保存在内存缓冲区中,必要时才写入磁盘
		•all_squash:将远程访问的所有普通用户及所属组都映射为匿名用户或用户组(nfsnobody)
		•no_all_squash:与all_squash取反(默认设置)
		•root_squash:将root用户及所属组都映射为匿名用户或用户组(默认设置)
		•no_root_squash:与rootsquash取反
		•anonuid=xxx:将远程访问的所有用户都映射为匿名用户,并指定该用户为本地用户(UID=xxx)
		•anongid=xxx:将远程访问的所有用户组都映射为匿名用户组账户

	3 启动nfs服务
		systemctl start nfs.service

客户端配置:
	
1 关闭防火墙
	//停止防火墙
	systemctl stop firewalld.service
	//关闭防火墙
	systemctl disable firewalld.service
2 安装NFS,rpcbind
	yum install -y  nfs-utils rpcbind

验证一下是否安装成功
Linux之NFS与SAMBA_第1张图片

3 启动rpcbind服务
	systemctl start rpcbind.service

     4 启动NFS服务
	systemctl start nfs.service


5 建立同步文件夹
	mkdir nfstest

6 开始执行挂载
	mount -t nfs 服务端地址:/root/data /root/nfstest

	ps: 卸载挂载
		umount -t nfs 服务端地址:/root/data /root/nfstest


ps:
服务器端:
	1、先启动rpcbind,再启动nfs服务
	2、如果配置文件发生变化可以使用exportfs -rv重新加载配置无需重启服务。
	3、查看rpc服务器是否启动成功rpcinfo -p
	4、查看共享目录是否存在showmount -e localhost	
	5、如果开iptables防火墙的话可以使用rpcinfo -p命令查看都需要允许哪些端口。

客户端:
	错误1,:Stale NFS file handle的解决方法
		1、首先用umount卸载当前目录,如果卸载不了使用umount -f /root/nfstest强制卸载,
			然后再重新挂载即可。
	错误2:touch: cannot touch ‘test2’: Permission denied nfs
		1、这个是提醒你客户端挂载的nfs服务器的目录没有权限,
			你在nfs客户端给权限没用,要不就给nfs服务器目录777权限,
			要不就配置文件里面如上加上no_root_squash参数。

SAMBA

1 SAMBA
Linux和Windows系统之间的文件传输,使用FTP,相对较安全,但是有时还是会出现一些问题,
比如上传文件时,文件名莫名出现乱码,文件大小改变等问题。
相比较来说,使用Samba作为文件共享,就省事简洁多了。
Samba服务器通信协议(Server Messages Block)就是是为了解决局域网内的文件或打印机
等资源的共享服务问题,让多个主机之间共享文件变成越来越简单。

2 安装SAMBA

1 机器是否安装SAMBA
	rpm -qa|grep samba

2 安装SAMBA
	yum install -y samba

3 关闭selinux和防火墙(参考之前的FTP)

4 配置Samba配置文件
	
	1 原文件备份
		cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
	
	2 编辑文件
		vim /etc/samba/smb.conf

	3 追加内容
		//这个是共享文件夹标识,表示登录samba打开时显示的文件夹名称。
		//配置了多少个共享文件夹标识,登录samba时就会显示多少文件夹。                                           
		[durant]
		//comment是对该共享的描述,可以是任意字符串
		comment = this is the info   
		//共享的路径
		path= /home/durant      
		//是否可写入
		writable = yes    
		//是否公开
		public = no        
	
	4 设置为不予许登入系统,且用户的家目录为 /home/durant(相当于虚拟账号)的durant账号。
		useradd -d /home/durant -s /sbin/nologin durant
	
	5 将durant添加为samba用户
		 pdbedit -a -u durant

	6 启动Samba服务
		systemctl start smb //启动服务
		systemctl enable smb//设置为开机启动项
		systemctl restart smb//重新启动
		systemctl status smb//查看状态

	7 使用Windws进行连接
		
		1.”Win+E键"打开,右键“此电脑”选择“映射网络驱动器”

		2. \\服务器IP地址\共享文件夹名称(durant)

		3.无读取权限解决办法
                           1 编辑文件
				vim /etc/sysconfig/selinux
			2 修改内容
				SELINUX=permissive

3 pdbedit 命令说明
pdbedit 命令用于管理Samba服务的帐户信息数据库,格式为:“pdbedit [选项] 帐户”
第一次把用户信息写入到数据库时需要使用-a参数,以后修改用户密码、
删除用户等等操作就不再需要了。

pdbedit -L :查看samba用户
pdbedit -a -u user:添加samba用户
pdbedit -r -u user:修改samba用户信息
pdbedit -x -u user:删除samba用户

samba服务数据库的密码也可以用 smbpasswd 命令 操作
smbpasswd -a user:添加一个samba用户
smbpasswd -d user:禁用一个samba用户
smbpasswd -e user:恢复一个samba用户
smbpasswd -x user:删除一个samba用户

你可能感兴趣的:(LInux)