当前位置: 首页 > news >正文

Samba共享服务搭建

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

目录

文章目录

前言:

一、配置Samba共享目录

Samba账号管理

lab设计(一)

lab设计(二)

SELinux预设策略的开关控制(布尔值):

二、访问Samba共享目录

lab(三)

三、multiuser多用户访问支持

lab(四)

前言:

Samba 是 Linux/Unix 系统中用来实现 文件共享和打印共享 的服务,它能让 Linux 和 Windows 像在同一个局域网里一样互相访问共享目录。 下面给你讲清楚最实用的内容:  

一、Samba 的作用

✔ Linux ↔ Windows 之间共享文件/文件夹
✔ Linux 服务器作为局域网共享中心
✔ Windows 用户可以像访问共享盘一样访问 Linux
✔ 可设置账户验证、权限控制

一、配置Samba共享目录

发布Samba共享目录

用途:为客户机提供共享文件夹、共享打印机资源

软件包(S):samba

软件包(C):samba-client、cifs-utils

协议和端口:

    CIFS,Common Internet File System,通用网际文件系统 —— TCP 445

    SMB,Server Message Block,服务消息块 —— TCP 139

系统服务:smb

关于配置文件 /etc/samba/smb.conf: 【man  smb.conf】

[global]

      共享服务器的全局设置。。。

      workgroup  =  工作组名

[homes]

      本地用户家目录的隐藏共享。。。

      browseable = no

[printers]

      打印机共享设置

[printer$]

      打印机共享设置

[共享名]

     配置语句 =  值

     path  =  文件夹路径

     comment = 说明文字

     browseable = yes|no

     public = no|yes

     read only = yes|no

     valid  users =  用户1  用户2  @组名3 .. ..

     write list = 用户1  用户2  @组名3 .. ..

     hosts  allow  =  客户机1  网段1  .. ..

     hosts  deny  =  客户机1  网段1  .. ..

Samba账号管理

系统账号:/etc/passwd记录的用户账号

共享账号:存放在独立的账号数据库文件里的用户账号,必须有同名的系统账号(方便给权限)

pdbedit  -a  用户名         //启用xx用户

pdbedit  -L  [用户名]       //查看/列出xx用户

pdbedit  -x  用户名         //删除xx用户

smbpasswd  用户名        //为xx用户设置密码

lab设计(一)

在servera上配置Samba共享,将目录/public3共享为common

    !!!! smb服务器属于TEDU工作组

    !!!! 只允许lab.example.com域的客户端访问common共享

    !!!! 用户zhsan可以使用redhat密码,以只读权限访问common共享

    !!!! 禁止其他用户访问此共享

    !!!! 为SMB通信提供加密支持,支持的最低协议版本是SMB3

   

1)装包

[root@servera ~]# dnf  -y  install  samba        //装包

2)配置资源

[root@servera ~]# useradd  -r -s /sbin/nologin  zhsan  //准备同名的系统用户

[root@servera ~]# pdbedit  -a  zhsan      //启用xx共享用户(必须先有同名的系统用户),

new password:     //设置共享访问密码(比如redhat)

retype new password:    //重复一次共享访问密码

[root@servera ~]# mkdir  /public3      //准备目录

[root@servera ~]# vim  /etc/samba/smb.conf    //配置共享

[global]

        workgroup = STAFF          //设置工作组名

        security = user            //设置安全级别(share、user、server、domain)

        passdb backend = tdbsam           //账号数据库类型

       smb encrypt  =  required        //要求访问共享时采用加密方式

       server min protocol = SMB3      //设置服务端支持的最低版本为SMB3

.. ..

[common]

        path = /public3

        valid users = zhsan

        hosts allow = 172.25.250.0/24         //只允许xx客户机访问(推荐使用网段地址,对应lab.example.com 域的)

3)起服务

[root@servera ~]# firewall-cmd --permanent --add-service=samba

[root@servera ~]# firewall-cmd --reload

[root@servera ~]# systemctl  enable  smb  --now

4)检查本机的共享配置,确认smb服务在运行

[root@servera ~]# systemctl  status  smb      //确认服务已经是running运行状态

.. ..

[root@servera ~]# testparm      //查看配置内容

.. ..

lab设计(二)

在servera上配置Samba共享,将目录/public4共享为data

!!!! 只有lab.example.com域的客户端可以访问data共享

!!!! 用户lisi可以只读访问data共享,密码为bluehat

!!!! 用户wangwu可以读写访问data共享,密码为whitehat

1)配置资源

[root@servera ~]# useradd  -r -s /sbin/nologin  lisi    //准备用户

[root@servera ~]# useradd  -r -s /sbin/nologin  wangwu      //准备用户

[root@servera ~]# pdbedit  -a  lisi    //启用lisi用户,根据提示设置共享访问密码(比如bluehat)

[root@servera ~]# pdbedit  -a  wangwu     //启用wangwu用户,根据提示设置共享访问密码(比如whitehat)

[root@servera ~]# mkdir  /public4      //准备目录

[root@servera ~]# chown  -R  wangwu   /public4  //确保wangwu有写入权限

[root@servera ~]# vim  /etc/samba/smb.conf    //配置共享

.. ..

[data]

        path = /public4

        valid users = lisi, wangwu        //只允许lisi、wangwu作为有效用户

        write list = wangwu               //只允许wangwu有写入权限

        hosts allow = 172.25.250.0/24         //只允许xx客户机访问(推荐使用网段地址,对应lab.example.com 域的)

2)重起服务

[root@servera ~]# systemctl  restart  smb

SELinux预设策略的开关控制(布尔值):

# getsebool  -a  | grep  samba_ex

# setsebool  -P  samba_export_all_rw=on

Samba共享目录的SELinux标签:

# semanage  fcontext  -a  -t  samba_share_t  '/smbshare(/.*)?'

# ls  -ldZ /smbshare/

drwxrwsr-x. 2 root marketing unconfined_u:object_r:default_t:s0 6 Sep 17 14:28 /smbshare/

++ 启用SELinux的情况下,目录安全策略的调整:

[root@servera ~]# semanage  fcontext  -a  -t samba_share_t  '/public3(/.*)?'

[root@servera ~]# semanage  fcontext  -a  -t samba_share_t  '/public4(/.*)?'

[root@servera ~]# restorecon  -Rv  /public3  /public4

二、访问Samba共享目录

1. 测试Samba共享资源(需要软件包samba-client)

    !!!! 列出目标主机提供了哪些Samba共享

# smbclient  -U  用户名  -L  服务器地址

比如:

[root@serverb ~]# smbclient  -U  zhsan  -L  //servera

Enter SAMBA\zhsan's password: 验证密码

        Sharename       Type      Comment

        ---------       ----      -------

        print$          Disk      Printer Drivers

        common          Disk

        data            Disk

        IPC$            IPC       IPC Service (Samba 4.11.2)

        zhsan           Disk      Home Directories

SMB1 disabled -- no workgroup available

    !!!! 连接目标主机的某个Samba共享目录

# smbclient  -U  用户名  //服务器地址/共享名 【需要密码】

比如:

[root@serverb ~]# smbclient -U zhsan //servera/common

Enter SAMBA\zhsan's password:

Try "help" to get a list of possible commands.

smb: \> ls

  .                                   D        0  Fri Sep 17 14:28:04 2021

  ..                                  D        0  Fri Sep 17 15:11:47 2021

                49087060 blocks of size 1024. 47202756 blocks available

smb: \> quit

2. 挂载Samba共享资源(需要软件包cifs-utils)

    !!!! 临时将Samba共享目录挂载到本地的目录

# mount  //服务器地址/共享名    挂载点目录

    !!!! 配置Samba共享目录的开机挂载

# vim  /etc/fstab

//服务器地址/共享名         挂载点目录   cifs       _netdev,username=用户名,password=密码    0  0

#### 为了提高安全性,也可以把账号密码拿出来放到独立的文件,

#### 然后在/etc/fstab文件中通过credentials=/etc/samba/creds.txt方式调用

比如:

[root@serverb ~]# vim  /etc/samba/creds.txt

username=zhsan

password=redhat

[root@serverb ~]# chmod  600  /etc/samba/creds.txt

[root@serverb ~]# vim  /etc/fstab

//servera.lab.example.com/common  /mnt/smbdir     cifs    _netdev,credentials=/etc/samba/creds.txt 0 0

[root@serverb ~]#

lab(三)

在serverb上访问Samba共享

    !!!! 在serverb上,检查servera上提供了哪些Samba共享目录

    !!!! 以用户zhsan的凭据永久挂载servera提供的common共享,挂载到serverb的/mnt/smbdir目录

1)装包

[root@serverb ~]# dnf  -y  install  samba-client  cifs-utils

2)测试Samba资源(按需,可选)

[root@serverb ~]# smbclient  -U  zhsan  -L  //servera       //列出共享资源项

Enter SAMBA\zhsan's password: //验证密码

        Sharename       Type      Comment

        ---------       ----      -------

        print$          Disk      Printer Drivers

        common          Disk

        data            Disk

.. ..

[root@serverb ~]# smbclient  -U  zhsan  //servera/common           //连接common共享

Enter SAMBA\zhsan's password:

Try "help" to get a list of possible commands.

smb: \> ls

  .                                   D        0  Fri Sep 17 16:32:11 2021

  ..                                  D        0  Fri Sep 17 15:11:47 2021

  a.txt                               N        5  Fri Sep 17 16:32:19 2021

                49087060 blocks of size 1024. 47220228 blocks available

smb: \> quit

3)配置挂载

[root@serverb ~]# mkdir /mnt/smbdir

[root@serverb ~]# vim  /etc/fstab

//servera.lab.example.com/common  /mnt/smbdir     cifs    _netdev,username=zhsan,password=redhat 0 0

.. ..

[root@serverb ~]#mount  -a

[root@serverb ~]# df  -hT  /mnt/smbdir/       //确认结果

Filesystem     Type  Size  Used Avail Use% Mounted on

//servera.lab.example.com/common cifs   47G  1.8G   46G   4% /mnt/smbdir

三、multiuser多用户访问支持

#### 客户端multiuser挂载技术

    !!!! 在客户端访问Samba共享的挂载点目录时,可以切换不同的共享账号/密码,以便获得不同的权限

    !!!! 切换用户不需要重新挂载共享资源

    !!!! 客户机的root用户对多用户挂载点有读权限

    !!!! 客户机的普通用户对多用户挂载点无权限

    !!!! 客户机的普通用户设置了Samba访问凭据以后,拥有对应共享用户的权限

#### 挂载参数:

username=共享用户名,password=密码,multiuser,sec=ntlmssp,_netdev

#### 普通用户在访问Samba挂载点时,临时切换用户的方法

$ cifscreds  add  -u  共享用户名  服务器地址

....Password:输入正确密码

lab(四)

以multiuser方式挂载、访问Samba共享

    !!!! 以用户lisi的凭据永久挂载servera提供的data共享,挂载到serverb的/mnt/smbdata目录

    !!!! 在serverb上,任何普通用户(baicai)采用lisi的凭据可以获取/mnt/smbdata这个目录的读取权限

    !!!! 在serverb上,任何普通用户(luobo)采用wangwu的凭据可以获取/mnt/smbdata这个目录的写入权限

1)配置开机挂载

[root@serverb ~]# mkdir  /mnt/smbdata

[root@serverb ~]# vim  /etc/fstab         //以低权限用户lisi挂载

//servera.lab.example.com/public4    /mnt/smbdata        cifs    _netdev,username=lisi,password=bluehat,multiuser,sec=ntlmssp  0 0

.. ..

[root@serverb ~]# mount  -a

2)测试多用户访问

[root@serverb ~]# useradd  luobo       //在客户机上创建一个普通用户

[root@serverb ~]# su  -  daluobo

[luobo@serverb ~]$ cifscreds  add   -u wangwu  servera.lab.example.com       //设置访问凭据(使用wangwu验证)

Password: 共享账号wangwu的密码

[luobo@serverb ~]$ touch  /mnt/smbdata/a.txt            //可以写入文档(有写权限)

[luobo@serverb ~]$ ls  -lh  /mnt/smbdata/     //可以列出资源(有读权限)

.. ..

[root@serverb ~]# useradd  baicai          //在客户机上换一个其他的普通用户

[root@serverb ~]# su  -  baicai

[baicai@serverb ~]$ cifscreds  add   -u lisi  servera.lab.example.com        //设置访问凭据(使用lisi验证)

Password: 共享账号lisi的密码

[baicai@serverb ~]$ touch  /mnt/smbdata/a.txt        //不可以写入文档(没有写权限)

[baicai@serverb ~]$ ls  -lh  /mnt/smbdata/   //可以列出资源(有读权限)

http://www.dtcms.com/a/486514.html

相关文章:

  • k8s 持久化存储方案-NFS
  • 建一个网站都需要什么开发软件用什么编程软件
  • 北京网站设计优刻如何将网站上传到空间
  • 大模型嵌入 vs ES:语义搜索与关键字搜索
  • 仓颉编程(1)环境配置变量
  • 我们来学AI编程 -- vscode开发java
  • HTML之table表格经典CSS(可用它做简单的数据看板)
  • 石家庄学做网站建设培训班安卓手机怎么做网站
  • 温州专业微网站制作电话夜聊
  • Vue的Axios介绍【9】
  • CMP (类ClouderaCDP7.3(404次编译) )华为鲲鹏Aarch64(ARM)信创环境多个mysql数据库汇聚的操作指南
  • C++ 中的类型转换:深入理解 static_cast 与 C风格转换的本质区别
  • [tile-lang] 语言接口 | `T.prim_func` `@tilelang.jit` | 底层原理
  • 个人网站 不用备案wordpress 修改站点
  • 服务器可以吧网站做跳转吗甘南网站设计公司
  • 100GbE to 4x25GbE (QSFP28 to 4xSFP28) Direct Attach Copper Splitter Cable
  • 亚马逊云渠道商:AWS管理安全策略指南
  • 整车——动力电池安全预警
  • 主流神经网络快速应用指南
  • 【Linux系统】系统编程
  • 前端html基础标签
  • 名宿预定系统
  • -rpath-link的用法
  • 创建数据表修改数据表和删除数据表
  • 做设计及免费素材网站有哪些wordpress创建专题
  • 数据结构与算法(串)
  • 《PLECS仿真与实战:从建模到高端应用》-文章目录--点击蓝色目录可跳转到博文
  • 中国开头的网站怎么做网线水晶头接法
  • linux 做网站服装网站首页设计
  • iOS 应用加固与苹果软件混淆全解析 IPA 文件防反编译、混淆加密与无源码加固策略