学习运维——网络文件协议-CIFS与NFS

网络文件协议

前言:

当今最主要的两大网络文件系统是Sun提出的NFS(Network File System)以及由微软、EMC和NetApp提出的CIFS(Common Internet File System),前者主要用于各种Unix平台,后者则主要用于Windows平台,我们熟悉的“网上邻居”的文件共享方式就是基于CIFS系统的。其他著名的网络文系统还有Novell公司的NCP(网络控制协议)、Apple公司的AFP以及卡内基-梅隆大学的Coda等,NAS的主要功能之一便是通过各种网络文件系统提供存储服务。


访问网络共享的三个基本步骤
– 1. 识别要访问的远程共享
– 2. 确定挂载点, 并创建挂载点的空目录
– 3. 通过相应的名利或配置更改挂载网络文件系统


一、CIFS

CIFS: 通用网络文件系统


•CIFS 是针对 Microsoft Windows 操作系统的本地网络文件系统。
Linux 系统可以挂载和访问 CIFS 文件共享 , 如同常见的网络文件系
统一样。然而 , 由于 CIFS 是基于 NTFS 文件系统权限模型及其自身
的身份验证系统来构建的 , 因而 CIFS 协议中的所有内容并不能很好

地映射到 Linux 中


• samba-client RPM 软件包所包含的 smbclient 实用程序可用来识别
由 Windows 或 Samba 文件服务器提供的 CIFS 共享。该实用程序
工作起来犹如在 Microsoft Windows 中单击网上邻居。然后 mount
命令可用于挂载共享。访问 CIFS 共享的命令
– 1 . 识别 :# smbclient -L instructor.example.com
– 2. 确定挂载点 :# mkdir /remote2
– 3. 挂载 :# mount //instructor.example.com/ftp /remote2



1.Linux怎么访问Windows共享的文件?
1>安装samba-client
    Samba:可以实现linux和windows能互相访问共享文件
    Samba的主要功能:
    1)提供windows风格的文件和打印机共享
    2)在Windows网络中解析NetBios的名字
    3)提供SMB客户端,linux用户可以利用smbclient利用类似于ftp的形式访问windows资源.
    4)提供命令行工具,利用该工具可以有限制地支持windows的某些管理功能

2>smbclient -L //172.25.254.250/westos1    ##识别共享目录

3>mount //172.25.254.250/westos1 /mnt -o username=guest    ##以匿名用户的身份将共享目录挂载到/mnt

设置开机挂载vim /etc/fstab
//172.25.254.250/westos1 /mnt/ cifs difaults,username=guest 0 0


smbclient 命令:用来存取远程 samba 服务器上的资源

smb:\>
用户在该提示符下输入各种命令。其命令和 ftp 相似,如 cd、lcd、get、mget、put、mput 等,其他比较常用的命 令如下所示:
1>?[comand]
显示有关command的帮助信息,若无command参数,则列出所有可能的命令。
2> ![shell command]
在本地执行shell命令,如果没有给出shell command,则在本地运行一个shell。用户可以在该shell中执行各种命令,用exit回到smbclient。
3>lowercase
关闭或者打开文件名小写转换。如果打开,smbclient 会自动将 get 和 mget 命令取回的文件以相应的小写文件名命名。
4> print
在远程服务器上打印文件 filename。
5> queue
显示打印队列。
6> quit 或者 exit
退出 smbclient。




二、NFS

NFS : 网络文件系统

• NFS ( Network File System ) 是由 Linux 、 UNIX 及其他类似操作系统使用的互联网标准协议 , 可作为它们的本地网络文件系统。它是一种活动扩展之下的开放标准 , 可支持本地 Linux 权限和文件系统功能

• Red Hat Enterprise Linux 7 在默认情况下支持 NFSv4 ( 该协议的版本 4 ), 并在该版本不可用的情况下自动回退到NFSv3 和NFSv2 。对于在客户端上运行的所有版本的 NFS , 均应启用两种服务 : rpcbind 和 nfslock 。 NFSv4 使用 TCP 协议与服务器进行通信 , 而较早版本的 NFS 则可能使用 TCP 或 UDP

• 有两种方法用来确定由服务器提供的 NFS 导出 , 或叫做文件共享。如果服务器支持 NFSv3 或 NFSv2 , 您可以使用 showmount -eserver 命令来获取导出项列表。如果服务器支持 NFSv4 , 则可以将 / 导出项挂载到一个空目录并浏览所有导出文件系统的内容


访问 NFS 导出的命令
• 1. 识别
– # showmount -e instructor.example.com
• 2. 确定挂载点
– # mkdir /remote1
• 3. 挂载
– # mount
instructor.example.com:/var/ftp/pub /remote1


怎么访问NFS共享的东西:
1.安装nfs-utils

#yum install nfs-utils -y

2.识别

#showmount -e 172.25.254.250


showmount命令用于查询NFS服务器的相关信息
# showmount --help
 Usage: showmount [-adehv]
        [--all] [--directories] [--exports]
        [--no-headers] [--help] [--version] [host]
-a或--all
    以 host:dir 这样的格式来显示客户主机名和挂载点目录。
 -d或--directories
    仅显示被客户挂载的目录名。
 -e或--exports
    显示NFS服务器的输出清单。
 -h或--help
    显示帮助信息。
 -v或--version
    显示版本信。
 --no-headers
    禁止输出描述头部信息。
 
显示NFS客户端信息
 # showmount
 
显示指定NFS服务器连接NFS客户端的信息
 # showmount 192.168.1.1  #此ip为nfs服务器的
 
显示输出目录列表
 # showmount -e
 
显示指定NFS服务器输出目录列表(也称为共享目录列表)
 # showmount -e 192.168.1.1
 
显示被挂载的共享目录
 # showmount -d 
 
显示客户端信息和共享目录
 # showmount -a
 
显示指定NFS服务器的客户端信息和共享目录
# showmount -a 192.168.1.1



3.挂载

#mount 172.25.254.250:/nfsshare/nfs1 /mnt

   开机挂载/etc/fstab文件
   172.25.254.250:/nfsshare/nfs1 /mnt nfs defaults 0 0
    mount -a(自动挂载 /etc/fstab 里面的东西)
不用的时候:卸载:umount /mnt,删除/etc/fstab中增加的东西


NFS服务器的配置:


场景
NFS服务器:172.25.254.191
NFS客户端:172.25.254.190
关闭火墙:
#service iptables stop
#chkconfig iptables off
#vim /etc/sysconfig/selinux  ##关闭selinux
SELINUX=disables
#reboot

1.服务器端

1)安装NFS服务组件
#yum install nfs-utils


2) 启动NFS服务:
# systemctl start nfs-server

#systemctl enable nfs-server


2) 创建共享目录并设置权限:
# showmount -e localhost 查看当前共享的 NFS 信息
#mkdir /nfsshare    创建共享目录
#chown  nfsnobody nfsnobody /nfsshare 或 chomd 777 /nfsshare


3) 编辑/etc/exports。例如:

#vim /etc/export

/nfsshare/read 172.25.0.0/24(ro,sync)
/nfsshare/write 172.25.0.0/24(rw,sync) 127.0.0.1(rw,sync)

/nfsshare *(rw,root_squash,no_all_squash,sync)

这里的意思是说,需要共享/nfsshare这个目录,对所有客户端(*)都是可读写的(rw),并且是异步方式来访问。 因为不设置其他参数, 客户端创建文件或目录时默认的属主和组就是nfsnobody,即使客户端使用的账号是root。

# exportfs -r         导出共享
# showmount -e localhost 


4) 从客户端查看并挂载NFS pseudo-root共享:
[root@desktop0 ~]# showmount -e server0
[root@desktop0 ~]# mkdir /mnt/nfsshare
[root@desktop0 ~]# mount -t nfs server0.example.com:/ /mnt/nfsshare






自动挂载网络存储

如果一个NFS服务器上有许多的客户端一直连接的话,NFS服务器会承受很大的带宽压力,这对NFS服务器的正常使用会造成很大的影响,因此,为了解决这一弊端,我可以这样做:让NFS客户端在获取数据时与NFS服务器进行连接,而在没有获取数据的时间内,自动的断开与NFS服务器之间的连接,这就是NFS的自动挂载技术。需要注意的是,配置方法是在NFS客户端方面进行配置的。

•使用 mount 命令 , 需要具有 root 用户权限以连接到网络共享。或者 , 我们可以向 /etc/fstab 添加条目 , 但是随后与网络服务器的连接将始终处于活动状态。当某一程序试图访问网络共享中的文件时 , 可以将 automounter ( 或 autofs )服务配置为 “ 按需 ” 挂载网络共享。当共享不再使用并处于不活动状态一定时间以后 ,automounter 会对共享解除挂载
• 不活动状态的时间间隔默认为五分钟 , 但该时间间隔可在/etc/sysconfig/autofs 中进行全局更改
• [root@instructor ~]# grep TIMEOUT /etc/sysconfig/autofs
# TIMEOUT - set the default mount timeout (default 600).
TIMEOUT=300
...output omitted....
通常 , 我们需要使用网络共享在不活动状态下保持挂载一小段时间 , 从而防止在段时间内对其进行再次使用。这能够避免不必要的挂载 / 解除挂载的周期



第一种方法

使用特殊的 /net 自动挂载挂载点 , 然后手动配置间接自动挂载映射。

特殊映射 /net
• 默认情况下 , autofs 服务运行时 , 存在一个名为 /net 的特殊目录 , 但是该目录将显示为空
• 访问不存在的目录 /net/instructor.example.com 会使自动挂载器创建该子目录 , 并显示该 NFS 服务器上的所有NFS 导出项。这有时称为 “ 浏览 ” 共享
– # cd /net/instructor.example.com
– # ls
– home kickstart var
• 在 /net/instructor.example.com 之下的所有文件和目录停止使用且超时期满子后 ,autofs 将共享解除挂载并删除空的 /net/instructor.example.com 子目录

具体操作:

在客户端操作:

1.#yum install autofs -y

2.#systemctl start autofs              ##服务开启后就会生成/net/

3.#cd /net/172.25.254.250           ##进入NFS服务器共享目录

修改退出等待时间:
#vim /etc/autofs.conf

怎么让nfs自动挂载,不用的时候自动卸载,来解决服务器的负载过重:
1.安装autofs,开启autofs服务
2.进到nfs1才会自动挂载到nfs1,退到nfsshare就会自动退出

怎么修改默认的退出等待时间
1.#vim /etc/autofs.conf

timeout = 5

2.#systemctl restart autofs




第二种方法:间接映射
• 除了使用 /net 映射 , 系统管理员也可以手动配置任意目录, 以便访问时在其子目录上 “ 按需 ” 挂载特定共享。示例:
• 间接映射使用两层配置文件语法。在顶级文件/etc/auto.master 中 , 每个管理的 “ 父 ” 目录和包含子目录挂载点与网络共享的单独的第二个配置文件的名称占一行

具体操作:

在客户端:
1.#yum install autofs
#vim /etc/auto.master    编辑autofs的主配置文件
/mnt    /etc/auto.mnt
挂载点的上层父目录        子策略文件,最好用规范性命名,让别人好懂
#vim /etc/auto.mnt

westos    172.25.254.250:/nfsshare/nfs1      ##挂载到/mnt/westos

*              172.25.254.250:/nfsshare/&          ##直接以共享目录子目录挂载,访问所有服务器的所有共享信息

                                                                          例如:cd /mnt/nfs1  cd /mnt/nfs2


测试:
#cd /mnt/westos
#df
当/mnt/westos是挂载点,已经挂上,则不能对/mnt进行操作,因为/mnt被autofs占用





LDAP认证:
LDAP认证是通过WSS3.0加上轻量目录LDAP协议搭建的种认证方式,使用https加密传输,主要用于做文档管理。LDAP认证就是把用户数据放在LDAP服务器上,通过LDAP服务器上的数据对用户进行认证处理,好比采用关系型数据库存储用户信息数据进行用户认证的道理样。

1.#yum install sssd krb5-workstation -y


SSSD简介:

是自红帽企业版Linux6起新加入的一个守护进程,该进程可以用来访问多种验证服务器,如LDAP,Kerberos等,并提供授权。SSSD是
介于本地用户和数据存储之间的进程,本地客户端首先连接SSSD,再由SSSD联系外部资源提供者(一台远程服务器)。 

这样做有一些几点优势:

1.避免了本地每个客户端程序对认证服务器大量连接,所有本地程序仅联系SSSD,由SSSD连接认证服务器或SSSD缓存,有效的降低了负载。

2.允许离线授权。SSSD可以缓存远程服务器的用户认证身份,这允许在远程认证服务器宕机是,继续成功授权用户访问必要的资源。

SSSD无需特殊设置即可运行,当你配置完system-configure-authentication后该服务会自己运行。

SSSD默认配置文件位于/etc/sssd/sssd.conf,你可以通过命令使得SSSD以指定的配置文件运行:


  1. # sssd --c /etc/sssd/customfile.conf

配置文件格式如下:


  1. 关键字=键值
  2. #####################################################
  3. ## [section] ##
  4. ## key1 = value1 ##
  5. ## key2 = value2,value3 ##
  6. #####################################################

管理SSSD进程


  1. service sssd start 开启
  2. service sssd stop 关闭

使用authconfig命令开启SSSD: #authconfig  --enablesssd  --update

使用systemctl命令开启SSSD: # systemctl  enable  sssd

总结:简单来说现在在RHEL6中连接LDAP或Kerberos等认证服务器,都是先有SSSD连接认证服务器取得认证与授权信息,再交于本地客户端程序。

下面的链接介绍了Kerberos的相关内容:

Kerberos



2.开启LDAP用户认证

#authconfig-tui
学习运维——网络文件协议-CIFS与NFS_第1张图片

学习运维——网络文件协议-CIFS与NFS_第2张图片

学习运维——网络文件协议-CIFS与NFS_第3张图片

学习运维——网络文件协议-CIFS与NFS_第4张图片

学习运维——网络文件协议-CIFS与NFS_第5张图片

学习运维——网络文件协议-CIFS与NFS_第6张图片


查看系统中是否有某个用户:
    1.grep root /etc/passwd
    2.getent passwd root

怎么在客户端上用到服务器端有的用户:


当全部做完没有ldapuser1时,就把example那个文件删掉重新下【图片】
systemctl status sssd服务看有无报错

到现在为止ldapuser1在登录时是没有家目录的
安装autofs服务
vim /etc/auto.mapper
    /home/guests    /etc/auto.ldap
vim /etc/auto.ldap
    *    172.25.29.254:/home/guests/&
重启autofs服务


三、CIFS与NFS的区别


1>CIFS面向网络连接的共享协议,对网络传输的可靠性要求高,常使用TCP/IP;NFS是独立于传输的,可使用TCP或UDP;

2>NFS缺点之一,是要求client必须安装专用软件;而CIFS集成在OS 内部,无需额外添加软件;

3>NFS属无状态协议,而CIFS属有状态协议;NFS受故障影响小,可以自恢复交互过程,CIFS不行;从传输效率上看,CIFS优于NFS,没用太多冗余信息传送;

4>两协议都需要文件格式转换,NFS保留了unix的文件格式特性,如所有人、组等等;CIFS则完全按照win的风格来作

你可能感兴趣的:(linux运维)