• kali 服务篇Linux存储 学习笔记


    存储分为三类

    1. 单机版存储                 # 采用的方案如NFS、SMB等服务
    2. 类私有网盘存储          # 采用FreeNAS、owncloud等方案
    3. 分布式存储                  # 采用ceph、TFS等

    NFS服务

    NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。

    NFS服务搭建

    dnf -y install rpcbind nfs-utils

    所以在NFS的服务的启动中,启动rpcbind后再启动nfs服务。

    systemctl start rpcbind
    systemctl start nfs-server
    systemctl enable rpcbind
    systemctl enable nfs-server
    关于rpcbind的作用
    
    The rpcbind utility is a server that converts RPC program numbers into universal addresses. It must be running on the host to be able to make RPC calls on a server on that machine.
    
    When an RPC service is started, it tells rpcbind the address at which it is listening, and the RPC program numbers it is prepared to serve. When a client wishes to make an RPC call to a given program number, it first contacts rpcbind on the server machine to determine the address where RPC requests should be sent.
    
    The rpcbind utility should be started before any other RPC service. Normally, standard RPC servers are started by port monitors, so rpcbind must be started before port monitors are invoked.
    
    When rpcbind is started, it checks that certain name-to-address translation-calls function correctly. If they fail, the network configuration databases may be corrupt. Since RPC services cannot function correctly in this situation, rpcbind reports the condition and terminates.
    
    The rpcbind utility can only be started by the super-user.

    译文:
    rpcbind实用程序是一个服务器,它将RPC程序编号转换为通用地址。它必须在主机上运行,才能在该机器上的服务器上进行RPC调用。当一个RPC服务启动时,它告诉rpcbind它正在监听的地址,以及它准备服务的RPC程序编号。当客户端希望对给定的程序号进行RPC调用时,它首先联系服务器机器上的rpcbind,以确定应该将RPC请求发送到的地址。rpcbind实用程序应该在任何其他RPC服务之前启动。通常,标准RPC服务器

    查看rpc服务的注册情况,可使用rpcinfo的指令进行查看。

    rpcinfo -p localhost

    NFS的配置文件

    NFS服务的配置文件为/etc/exports

    建立分享的文件下
    
    mkdir /share1
    mkdir /share2
    编辑/etc/exports,输入如下内容:
    # 输出"/share1"目录,对所有主机可读,对IP地址为192.168.0.50的主机可读可写。

    /share1 *(sync,ro) 192.168.0.50(sync,rw)


      # 输出"/share2"目录,对192.168.0.0/24网络内的所有主机可读。

    /share2 192.168.0.0/24(sync,ro)

    编辑完成后,需要运行exportfs重新发布所共享的目录。(exportfs -r 重新读取配置文件)

    配置文件每行分为两段:第一段为共享的目录,使用绝对路径,第二段为客户端地址及权限。
    
    地址可以使用完整IP或网段,例如10.0.0.8或10.0.0.0/2410.0.0.0/255.255.255.0当然也可以地址可以使用主机名,DNS解析的和本地/etc/hosts解析的都行,支持通配符,例如:*.fsec.io  
     权限有:  
    ·  rw:read-write,可读写; 
    ·  ro:read-only,只读;  
    ·  sync:文件同时写入硬盘和内存;  
    ·  async:文件暂存于内存,而不是直接写入内存;  
    ·  no_root_squash:NFS客户端连接服务端时如果使用的是root的话,那么对服务端分享的目录来说,也拥有root权限。  
    ·  root_squash:NFS客户端连接服务端时如果使用的是root的话,那么对服务端分享的目录来说,拥有匿名用户权限,通常他将使用nobody或nfsnobody身份;  
    ·  all_squash:不论NFS客户端连接服务端时使用什么用户,对服务端分享的目录来说都是拥有匿名用户权限;  
    ·  anonuid:匿名用户的UID值,通常是nobody或nfsnobody,可以在此处自行设定;  
    ·  anongid:匿名用户的GID值。

    客户端的访问

    showmount命令

    showmount -e 显示本地NFS服务器中的共享列表

    showmount -e IP 显示指定NFS服务器中的共享列表


    PS: 如果kali中没有showmount的指令,可通过如下指令进行查询与安装:

    apt-cache search showmount
    apt-get install nfs-common

    mount命令

    mount命令用于挂载磁盘,在nfs的服务中,需要使用mount -t nfs 或者mount.nfs的指令进行指定挂载的类型。

    使用挂载前先在客户端创建挂载点。

    mkdir /mnt/share1
    mkdir /mnt/share2

    当我们进入到挂载好的目录中,分别进行创建文件的测试,会发现虽然同时失败,但报错的信息却分别为权限不够只读文件系统

    但我们所配置的权限中,特定的IP已经给予rw的权限,却提示权限不够。换言之,share2的权限是对的,share1的写入权限为错误状态。

    随后使用mount指令将远程主机的目录挂载至本机的目录。

    mount -t nfs 192.168.0.33:/share1 /mnt/share1
    mount.nfs 192.168.0.33:/share2 /mnt/share2

    PS:exports目录权限中,有这么一个参数no_root_squash。

    其作用是:登入 NFS 主机使用分享目录的使用者,如果是 root 的话,那么对于这个分享的目录来说,他就具有root 的权限!。默认情况使用的是相反参数root_squash:在登入 NFS 主机使用分享之目录的使用者如果是 root 时,那么这个使用者的权限将被压缩成为匿名使用者,通常他的UID 与 GID 都会变成 nobody 那个身份。


    显示当前主机挂载的NFS共享目录

    mount |grep nfs 

    命令卸载NFS 文件系统(不要在挂载的目录中进行操作)

    umount 

    客户端自动挂载NFS

    通过如下的命令,我们重新调整NFS的配置。
    
    mkdir /backup
    vi /etc/exports
    cat /etc/exports
    /backup 192.168.0.0/24(sync,rw,no_root_squash)
    exportfs -r
    exportfs

    在客户机中,可通过使用rc.local的方式实现开机自动挂载。

    在/etc/rc.local文件中添加如下内容:

    mount.nfs 192.168.0.33:/backup /mnt/backup/

    随后创建挂载点,并给/etc/rc.local执行权限。

    mkdir /mnt/backup
    chmod +x /etc/rc.local

    通过计划任务自动挂载

    首先我们先编写备份的脚本,以备份passwd文件为例:
    
    #!/bin/bash
    date="$(date +%F)"
    cp /etc/passwd /mnt/backup/pass_$date

    随后可通过计划任务进行配置周期性的运行脚本即可。由于前文已讲述完crontab的使用,为此不在赘述。

    学习内容均参考Farmsec:http://book.fsec.io/101-%E5%9F%BA%E7%A1%80%E7%AF%87/101-B-linux%E6%9C%8D%E5%8A%A1/101-B7-Linux%E5%AD%98%E5%82%A8.html

  • 相关阅读:
    1.2基础--对象属性操作检测遍历
    C语言概览
    测试博客园字体
    c语言指针理解,指针的概念和演示指针的简单操作2
    c语言指针理解代码示例_函数返回指针变量_解除运算符获取指针的值
    c语言指针理解,指针的概念和演示指针的简单操作
    c语言指针概念解释_初步
    项目对文件分目录的感想
    visual studio快捷键
    java开源项目RuoYi若依管理系统
  • 原文地址:https://www.cnblogs.com/Cong0ks/p/16260822.html
Copyright © 2020-2023  润新知