《Linux就该这么学》培训笔记_ch12_使用Samba或NFS实现文件共享

文章最后会post上书本的笔记照片。

文章主要内容

SAMBA文件共享服务

FTP协议的本质是传输文件,而非共享文件。

Samba是一款开源的文件共享软件,经过简单配置就能够实现Linux系统与Windows系统之间的文件共享工作。

安装Samba服务程序:yum install -y samba。

Samba服务的主配置文件:/etc/samba/smb.conf。

实例1:配置Samba服务前,先删掉Samba服务主配置文件中的注释和空行。

通过grep命令,添加-v参数(反向选择),分别去掉所有以井号(#)和分号(;)开头的注释信息行,对于剩余的空白行可以使用^$参数来表示并进行反选过滤,最后把过滤后的可用参数信息通过重定向符覆盖写入到原始文件名称中。

  1. cd /etc/samba
  2. cat smb.conf #过滤注释行和空行前,查看samba主配置文件,有300多行
  3. mv smb.conf smb.conf_bak #将samba主配置文件smb.conf重命名为smb.conf_bak
  4. grep -v "#" smb.conf_bak | grep -v ";" | grep -v "^$" > smb.conf #过滤掉smb.conf_bak文件的注释行和空行,再把剩余的信息重定向到smb.conf
  5. cat smb.conf #查看过滤注释行和空行后的smb.conf文件,只有20行。

Samba服务程序中的参数以及作用:

[global]   #全局参数。
  workgroup = MYGROUP #工作组名称
  server string = Samba Server Version %v #服务器介绍信息,参数%v为显示SMB版本号
  log file = /var/log/samba/log.%m #定义日志文件的存放位置与名称,参数%m为来访的主机名
  max log size = 50 #定义日志文件的最大容量为50KB
  security = user #安全验证的方式,总共有4种
  #share:来访主机无需验证口令;比较方便,但安全性很差
  #user:需验证来访主机提供的口令后才可以访问;提升了安全性
  #server:使用独立的远程主机验证来访主机提供的口令(集中管理账户)
  #domain:使用域控制器进行身份验证
  passdb backend = tdbsam #定义用户后台的类型,共有3种
  #smbpasswd:使用smbpasswd命令为系统用户设置Samba服务程序的密码
  #tdbsam:创建数据库文件并使用pdbedit命令建立Samba服务程序的用户
  #ldapsam:基于LDAP服务进行账户验证
  load printers = yes #设置在Samba服务启动时是否共享打印机设备
  cups options = raw #打印机的选项
[homes]   #共享参数
  comment = Home Directories #描述信息
  browseable = no #指定共享信息是否在“网上邻居”中可见
  writable = yes #定义是否可以执行写入操作,与“read only”相反
[printers]   #打印机共享参数
  comment = All Printers  
  path = /var/spool/samba #共享文件的实际路径(重要)。
  browseable = no  
  guest ok = no #是否所有人可见,等同于"public"参数。
  writable = no  
  printable = yes

配置共享资源

Samba服务程序的主配置文件包括全局配置参数和区域配置参数。全局配置参数用于设置整体的资源共享环境,对里面的每一个独立的共享资源都有效。区域配置参数则用于设置单独的共享资源,且仅对该资源有效。

用于设置Samba服务程序的参数以及作用

参数 作用
[share_dir] 共享文件夹的名称。share_dir
comment = heheda 共享文件夹的备注内容。heheda
path = /home/niubi 共享文件夹在Linux中的实际目录。/home/niubi
public = no 关闭“所有人可见”
writable = yes 允许写入操作

在RHEL 7系统中,Samba服务程序默认使用的是用户口令认证模式(user)。这种认证模式可以确保仅让有密码且受信任的用户访问共享资源,而且验证过程也十分简单。

要使用用户口令认证模式,必须建立账户信息数据库,且这些账户必须在当前系统中已经存在,不过密码不一定要与系统对应账户的密码一致(可以为空),否则日后创建文件时将导致文件的权限属性混乱不堪,由此引发错误。

pdbedit命令:用于管理SMB服务程序的账户信息数据库,格式:pdbedit [选项] 账户。在第一次把账户信息写入到数据库时需要使用-a参数,以后在执行修改密码、删除账户等操作时就不再需要该参数了。

pdbedit命令中使用的参数以及作用:

参数 作用
-a 用户名 建立Samba用户
-x 用户名 删除Samba用户
-L 列出用户列表
-Lv 列出用户详细信息的列表

实例2:在实例1基础上,配置samba服务共享文件夹。

  1. #.创建用于访问共享资源的账户信息。账户必须在当前系统已经存在
  2. id linuxprobe #确认用户linuxprobe是否存在
  3. pdbedit -a -u linuxprobe #生成账户信息数据库,添加一名用户,以供samba共享文件夹的登录验证
  4. new password:此处输入该账户在Samba服务数据库中的密码
  5. retype new password:再次输入密码进行确认
  6. #.创建用于共享资源的文件目录。在创建时,不仅要考虑到文件读写权限的问题,还需要考虑应用于该目录的SELinux安全上下文所带来的限制。
  7. mkdir /home/niubi chown -Rf linuxprobe:linuxprobe /home/niubi
  8. semanage fcontext -a -t samba_share_t /home/niubi
  9. restorecon -Rv /home/niubi
  10. #。设置SELinux服务与策略,使其允许通过Samba服务程序访问普通用户家目录。
  11. getsebool -a | grep samba
  12. setsebool -P samba_enable_home_dirs on
  13. #.在Samba服务程序的主配置文件中,追加共享文件夹配置参数信息。
  14. vim /etc/samba/smb.conf
  15. ...
  16. [share_dir]
  17. comment = heheda
  18. path = /home/niubi
  19. public = no
  20. writable = yes
  21. #.重启Samba服务并加入开机启动项。为避免防火墙妨碍,清空iptables防火墙。
  22. systemctl restart smb
  23. systemctl enable smb
  24. iptables -F
  25. service iptables save

Windows挂载共享

要在Windows系统中访问共享资源,只需在Windows的“运行”命令框中输入两个反斜杠,然后再加服务器的IP地址即可。输入上面实例用于samba验证的帐号密码,登录进去后的共享文件夹的效果:

在RHEL 7系统中,Samba服务程序使用的是独立的账户信息数据库。所以,即便Samba服务程序使用的账户名字必须是Linux系统中已存在的用户,但两者的帐号密码是独立的,要分清楚各自所对应的密码。

Linux挂载共享

Samba服务程序还可以实现Linux系统之间的文件共享。

Linux客户端需要安装支持文件共享服务的软件包:yum install -y cifs-utils

实例3:在实例2基础上,实现Linux客户端挂载Samba服务的共享文件夹。

  1. #.按照Samba服务的用户名、密码、共享域的顺序将相关信息写入到一个认证文件中,降低文件权限提高安全性。
  2. vim /root/auth.smb
  3. username=linuxprobe #samba账户
  4. password=redhat #samba账户密码
  5. domain=MYGROUP #与samba主配置文件中的对应参数要一致
  6. chmod -Rf auth.smb
  7. #.创建一个用于挂载Samba服务共享资源的目录,并把挂载信息写入到/etc/fstab文件中以永久挂载。
  8. mkdir /liwh
  9. vim /etc/fstab
  10. ...
  11. //192.168.10.10/share_dir /liwh cifs credentials=/root/auth.smb 0 0 #把服务端的共享文件夹挂载到客户端的/liwh目录里,共享文件夹格式为cifs,权限设置为以认证文件进行验证
  12. mount -a

客户端进入到挂载目录/liwh后就可以对目录里的文件进行增删改操作了。


NFS网络文件系统

凡是Linux之间的文件共享都涉及到挂载步骤。

NFS(网络文件系统)服务专用于Linux系统主机之间的文件共享,它可以将远程Linux系统上的文件共享资源挂载到本地主机的目录上,从而使得本地主机(Linux客户端)基于TCP/IP协议,像使用本地主机上的资源那样读写远程Linux系统上的共享文件。

RHEL 7系统中默认已经安装了NFS服务,安装nfs:yum install -y nfs-utils。

NFS服务程序的配置文件为/etc/exports,默认情况下里面没有任何内容。可以按照“共享目录的路径 允许访问的NFS客户端(共享权限参数)”的格式,定义要共享的目录与相应的权限。

用于配置NFS服务程序配置文件的参数:

参数 作用
ro 只读
rw 读写
root_squash 当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户
no_root_squash 当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员
all_squash 无论NFS客户端使用什么账户访问,均映射为NFS服务器的匿名用户
sync 同时将数据写入到内存与硬盘中,保证不丢失数据
async 优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据

服务端192.168.10.10配置:

  1. #.清空iptables防火墙策略,永久保存。
  2. iptables -F
  3. service iptables save
  4. #.建立用于NFS文件共享的目录,并设置足够的权限确保其他人也有写入权限。
  5. mkdir /nfsfile
  6. chmod -Rf /nfsfile
  7. echo "welcome to linuxprobe.com" > /nfsfile/test.txt
  8. #.编辑NFS服务程序的配置文件/etc/exports,把/nfsfile目录共享给192.168.10./24网段内的所有主机,让这些主机都拥有读写权限。
  9. vim /etc/exports
  10. /nfsfile 192.168..*(rw,sync,root_squash) #NFS客户端地址与权限之间没有空格
  11. #.重启rpcbind和nfs服务程序,并将它们加入开机启动项。(在使用NFS服务进行文件共享之前,需要使用RPC服务将NFS服务器的IP地址和端口号等信息发送给客户端)
  12. systemctl restart rpcbind
  13. systemctl enable rpcbind
  14. systemctl start nfs-server
  15. systemctl enable nfs-server

客户端192.168.10.20配置:

  1. showmount -e 192.168.10.10 #使用showmount命令查询NFS服务器的远程共享信息,输出结果:/nfsfile 192.168.10.*
    mkdir /liwh
    vim /etc/fstab
    ...
    192.168.10.10:/nfsfile /liwh nfs defaults 0 #留意共享文件夹目录的书写格式和Samba是不同的,目录格式也不同。
    ...
    mount -a

showmount命令:用于查询NFS服务器的远程共享信息。格式:showmount [选项] [ip地址]输出格式为“共享的目录名称 允许使用客户端地址”。

showmount命令中可用的参数以及作用

参数 作用
-e 显示NFS服务器的共享列表
-a 显示本机挂载的文件资源的情况NFS资源的情况
-v 显示版本号

AutoFs自动挂载服务

无论是Samba服务还是NFS服务,都要把挂载信息写入到/etc/fstab中,这样远程共享资源就会自动随服务器开机而进行挂载。虽然方便,但是如果挂载的远程资源太多,则会给网络带宽和服务器的硬件资源带来很大负载。如果在资源挂载后长期不使用,也会造成服务器硬件资源的浪费。

autofs自动挂载服务与mount命令不同,autofs服务程序是一种Linux系统守护进程,当检测到用户试图访问一个尚未挂载的文件系统时,将自动挂载该文件系统。

mount命令与autofs服务的区别:

  • 将挂载信息填入/etc/fstab文件后,系统在每次开机时都自动将其挂载;
  • autofs服务程序在用户需要使用该文件系统时才去动态挂载,从而节约网络资源和服务器的硬件资源。

安装autofs自动挂载服务:yum install -y autofs。

autofs服务的主配置文件:/etc/auto.master。记录要自动挂载的目录和对应的子配置文件。更加详细具体的挂载目录内的挂载设备信息则记录在用户自定义的子配置文件中。子配置文件后缀必须为.misc。

autofs服务的子配置文件应按照“挂载目录 挂载文件类型及权限 主机ip地址:设备名称”的格式进行填写。

例如:iso   -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom

把本机光盘设备挂载到/media/iso目录中,可将挂载目录写为iso(上级目录写在主配置文件中),而-fstype为文件系统格式参数,iso9660为光盘设备格式,ro、nosuid及nodev为光盘设备具体的权限参数,/dev/cdrom则是定义要挂载的设备名称。

实例4:在实例3基础上,在客户端安装autofs服务,实现对服务端的nfs共享目录的自动挂载。

  1. #.编辑autofs主配置文件,指定设备挂载位置的上一级目录和对应的子配置文件。
  2. vim /etc/auto.master
  3. ...
  4. /nice /etc/test.misc
  5. ...
  6. #.编辑自定义的autofs子配置文件test.misc。
  7. vim /etc/test.misc
  8. nice -fstype=nfs,rw,nosuid,nodev 192.168.10.10:/nfsfile
  9. #.重启autofs服务并加入开机启动项
  10. systemctl restart autofs
  11. systemctl enable autofs

当用df -h查看设备挂载情况时,确认共享目录没有被挂载上,而且/nice目录里根本不存在test目录,但却可以使用cd命令进入test目录中,说明autofs服务配置成功。


书本笔记

《Linux就该这么学》培训笔记_ch12_使用Samba或NFS实现文件共享的更多相关文章

  1. Linux笔记16 使用Vsftpd服务传输文件;使用Samba或NFS实现文件共享。

    FTP协议有下面两种工作模式. 1.主动模式:FTP服务器主动向客户端发起连接请求. 2.被动模式:FTP服务器等待客户端发起连接请求(FTP的默认工作模式).Vsftpd服务程序vsftpd作为更加 ...

  2. LInux 就该这么学 笔记分享

    看了Linux就该这么学的前部分书,觉得写的还可以,就在网上找了下面这个同学写的笔记,觉得很详细,所以保存地址,供以后查阅参看.这里对作者表示感谢!!! 博客地址: https://www.cnblo ...

  3. Linux就该这么学笔记

    https://www.linuxprobe.com/========================================================================= ...

  4. linux-RHEL7.0 —— 《Linux就该这么学》阅读笔记

    目录 linux-RHEL7.0 安装部署 修改root密码 RPM(红帽软件包管理器) YUM(软件仓库) Systemd初始化进程 总结 linux命令 帮助命令 man 系统工作命令 echo ...

  5. 《Linux就该这么学》

    参加了第19期课程的培训,感谢刘老师的辛苦付出,课程讲的很好,真心推荐老刘的这本书真是<Linux就该这么学>!!! 本书是由全国多名红帽架构师(RHCA)基于最新Linux系统共同编写的 ...

  6. 《Linux就该这么学》第二期视频

    Linux就该这么学--第二期学习笔记... ------------- 你的未来取决于你现在点点滴滴的努力 需要用到的一些工具: Vm11激活码 ---------- root在Linux系统中相当 ...

  7. 《Linux就该这么学》day3

    ps:原谅我的书法出自鲁迅的<野草> <Linux就该这么学>书本介绍: 本书是由全国多名红帽架构师(RHCA)基于最新Linux系统共同编写的高质量Linux技术自学教程,极 ...

  8. 《Linux就该这么学》day1-day2

    ps:原谅我的书法出自鲁迅的<野草> <Linux就该这么学>书本介绍: 本书是由全国多名红帽架构师(RHCA)基于最新Linux系统共同编写的高质量Linux技术自学教程,极 ...

  9. 今天我给你们推荐一本书《Linux就该这么学》!!!

    本书是由全国多名红帽架构师(RHCA)基于最新Linux系统共同编写的高质量Linux技术自学教程,极其适合用于Linux技术入门教程或讲课辅助教材,目前是国内最值得去读的Linux教材,也是最有价值 ...

随机推荐

  1. MVC+Ninject+三层架构+代码生成 -- 总结(六、邏輯層)

    1.邏輯層的方法應該與數據層的方法一一對應.邏輯層返回的結果都是用接口IResult封裝,用於項目轉換時,能減少變化的代碼量. 2.邏輯層都需要繼承 BaseLogic 類 public class ...

  2. php xdebug的配置、调试、跟踪、调优、分析

    xdebug 的 profiler 是一个强大的工具,它能分析 PHP 代码,探测瓶颈,或者通常意义上来说查看哪部分代码运行缓慢以及可以使用速度提升.Xdebug 2 分析器输出一种兼容 cacheg ...

  3. vue+element拖动排序功能

    项目中老大心血来潮设计了一可以拖动达到排序的功能,感觉没什么用,但是没办法,实现吧! 这功能肯定不会手撸了,直接上插件 使用Sortable.js,对vue不友好,拖拽有时候乱跳;改用vuedragg ...

  4. Bugku 代码审计

    0x01.extract变量覆盖 代码: <?php$flag='xxx';extract($_GET);if(isset($shiyan)){$content=trim(file_get_co ...

  5. 设计模式之代理模式(proxy pattern)

    代理模式的本质是一个中间件,主要目的是解耦合服务提供者和使用者.使用者通过代理间接的访问服务提供者,便于后者的封装和控制.是一种结构性模式. 1.目的 为外部调用者提供一个访问服务提供者的代理对象. ...

  6. Mysql 主从报错:1141

    主从同步,从库报错代码:1141 ,错误信息如下: Master_Port: 3306 Connect_Retry: 60 Master_Log_File: binlog.000086 Read_Ma ...

  7. Python从零开始——基础语法

  8. mysql 忘记密码,赋予用户权限,两台服务器的数据库之间快速导入

    mysql 忘记密码: 1.首先service mysql stop mysqld --skip-grant-tables &  开启数据库 然后就可以mysql -uroot 直接进数据库, ...

  9. Nacos 1.1.0发布,支持灰度配置和地址服务器模式

    https://nacos.io/zh-cn/blog/nacos%201.1.0.html

  10. yum lockfile is held by another process

    使用yum安装软件报错 yum lockfile is held by another process 解决方法 rm -f /var/run/yum.pid