NFS和Samba服务


一、 前言

NFS一种网络文件系统,它允许网络中的计算机通过TCP/IP网络共享资源。客户端可以像访问本地文件系统一样访问NFS文件系统。

节点:

ip address hostname nfs服务
192.168.8.32 nfs01 服务端
192.168.8.33 nfs02 客户端

二、安装nfs

  • 所有主机操作
# 1.查看系统版本
cat /etc/redhat-release
# 2.查看并关闭防火墙
systemctl status firewalld
systemctl stop firewalld
systemctl disable firewalld
# 3.永久关闭
setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config

安装 NFS 和 RPC

  • 所有主机操作
rpm -qa | grep nfs
rpm -qa | grep rpcbind
yum install -y nfs-utils rpcbind

三、服务端配置

  • 192.168.8.32
mkdir  /data
echo "/data *(rw,sync,no_root_squash,fsid=0)" >> /etc/exports
  • “rw” 表示将目录以可读写的方式导出。
  • “sync” 表示将数据同步写入到磁盘,确保写入的一致性。
  • “no_root_squash” 表示允许 root 用户以 root 身份访问导出的目录。
  • “fsid=0” 表示将此导出的文件系统标识符设为0,用于标识整个文件系统。
# 1.生效配置
exportfs -r
# 2.启动
systemctl enable rpcbind 
systemctl restart rpcbind
systemctl enable nfs
systemctl restart nfs
# 3.服务器注册端口:111
rpcinfo -p
# 4.查看是否成功
showmount -e localhost

Export list for localhost:
/data *

# 5.查看启动挂载
cat /var/lib/nfs/etab
/data       *(rw,sync,wdelay,hide,nocrossmnt,secure,no_root_squash,no_all_squash,no_subtree_check,secure_locks,acl,no_pnfs,fsid=0,anonuid=65534,anongid=65534,sec=sys,rw,secure,no_root_squash,no_all_squash)

四、客户端

  • 192.168.8.33
# 1.创建挂载目录
mkdir  /data
# 2.查看挂载ip
showmount -e 192.168.8.32
# 3.挂载
mount -t nfs 192.168.8.32:/data /data
# 4.查看磁盘
df -h
# 5.配置启动挂载
vim /etc/fstab
192.168.8.32:/data  /data  nfs  defaults  0  0

五、测试同步

# 1.客户端
cd /data
touch 1.txt

# 2.服务端
cd /data
ls

autofs

自动按需挂载nfs、光盘、磁盘。在用户需要使用该文件系统时才去动态挂载,从而节约了网络资源和服务器的硬件资源

nfs客户端安装配置。

主配置文件/etc/auto.master

子配置文件/etc/auto.nfs

(autofs默认自动卸载时间为300s即5分钟)

# 查看当前服务开发的端口号
status -lnutp
ss -lnutp
[root@Clinet ~]#mkdir -p /data/nfs1
[root@Clinet ~]#yum install autofs -y
[root@Clinet ~]#systemctl start autofs
[root@Clinet ~]#grep -Ev "^$|^#" /etc/auto.master
/misc   /etc/auto.misc
# 添加配置,nfs挂载的所有父目录
/data   /etc/auto.nfs   --timeout=60
#####################################
/net    -hosts
+dir:/etc/auto.master.d
+auto.master

# 子配置文件,具体的nfs服务链接信息
[root@Clinet ~]#vim /etc/auto.nfs 
nfs1  -fstype=nfs  192.168.8.12:/data

[root@Clinet ~]#systemctl restart autofs
# 触发自动挂载
[root@Clinet ~]#cd /data/nfs1

Samba 服务

Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。

SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。

前置操作

# 1.查看并关闭防火墙
systemctl status firewalld
systemctl stop firewalld
systemctl disable firewalld
# 2.永久关闭SELinux
setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config

安装服务

yum -y install samba samba-client

启动服务

systemctl start smb nmb 

新建一个用户,用于文件共享

useradd -s /sbin/nologin  test 

创建smb共享密码

smbpasswd -a  test

设置访问权限

chmod -R 755 /home/test/

修改配置文件

vim /etc/samba/smb.conf

配置文件类似如下

[test]  # 共享名
comment = "samba test"   # 描述信息
path = /home/test     # 共享目录
browseable = yes      # 所有人可见
public = yes          # 是否公开
writable = yes        # 是否允许修改

重启服务

systemctl restart smb nmb

配置文件解释

[global]
        workgroup = MYGROUP           #工作组名称
        server string = Samba Server Version %v         #服务器描述

#netbios名称

;       netbios name = MYSERVER      

#设置允许侦听的本地网络接口

;       interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24  

                   #指定允许连接samba服务器的网段和IP

;       hosts allow = 127. 192.168.12. 192.168.13.

                   #禁止对应网段的访问,这些也可以单独设置在共享中  

                   hosts deny = 192.168.80.20

# --------------------------- Logging Options ---------------



        #日志存放路径

        log file = /var/log/samba/log.%m

        #每个日志文件的最大容量

        max log size = 50



# ----------------------- Standalone ServerOptions-----------------

#安全级别分五种:

#share: 共享级别,服务器不对客户机进行身份验证,不推荐使用。

#user: 用户级别,服务器对客户机进行身份验证,默认使用这个。

#server: 服务器级别,Samba服务器必须通过另一台服务器对客户机进行身份验证。如果设置为此值,需另加一行:password Server = IP才行。

#domain: 域级别,Samba服务器要通过windows server的域控制器对客户机进行身份验证,需另加一行:password Server = IP才行。

        security = user 

#指定Samba服务器对用户帐户和密码的管理方式。一般默认即可,不推荐使用smbpasswd文件保存密码。
        passdb backend = tdbsam



#============================ Share Definitions===================

#这里定义的是家目录的共享,共享是的文件夹名称为用户名

[homes]
        comment = Home Directories  #注释信息

        browseable = no  #文件夹是否可以被其它用户浏览

        writable = yes   #用户是否可以写入

;       valid users = %S  #设置允许访问的用户

                   #允许访问的域用户,%S是一个samba变量,代表当前服务器名

                   #%u代表当前服务器的用户

;       valid users = MYDOMAIN\%S



#打印共享

[printers]

        comment = All Printers

        path = /var/spool/samba

        browseable = no

        guest ok = no

        writable = no

        printable = yes

#常用选项

comment = 备注信息

path = 绝对路径

public = yes/on 是否允许显示给所有人

valid users = 用户名/@用户组      设置允许访问的用户或用户组,默认为yes。

readonly = yes/on 是否为只读

writable = yes/on 是否允许读写

write list = 用户/@用户组 允许读写的用户名单

guest ok = yes/on 是否允许匿名访问

guest only = 只允许匿名访问

creat mask = 权限掩码

directory mask = 目录掩码

常见通配符

%S = 当前服务名(如果有的话)

%P = 当前服务的根目录(如果有的话)

%u = 当前服务的用户名(如果有的话)

%g = 当前用户说在的主工作组

%U = 当前对话的用户名

%G = 当前对话的用户的主工作组

%H = 当前服务的用户的Home目录

%v = Samba服务的版本号。

%h = 运行Samba服务机器的主机名

%m = 客户机的NETBIOS名称

%L = 服务器的NETBIOS名称

%M = 客户机的主机名

%N = NIS服务器名

%p = NIS服务的Home目录

%R = 说采用的协议等级(值可以是CORE, COREPLUS, LANMAN1, LANMAN2,NT1)

%d = 当前服务进程的ID

%a = 客户机的结构(只能识别几项:Samba,WfWg,WinNT,Win95)

%I = 客户机的IP

%T = 当前日期和时间