文章目录

  • samba服务简介
  • samba服务基本信息
  • samba的安装与启用
  • samba用户的建立
  • samba用户访问加目录
  • samba服务共享目录
  • samba的访问控制
    • 黑名单
    • 白名单
  • samba的常用配置参数
    • writable 是否可写
    • write list 指定用户可写
    • @xng/+xng 指定组可写
    • valid users 指定用户可用
    • valid users = +haha/@haha 指定haha组可用
    • browseable = yes/no 是否隐藏共享
    • guest ok = yes 允许匿名用户访问
    • admin users = haha 指定此共享的超级用户身份
  • samba的多用户挂载

samba服务简介

Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。

window的网络邻居就是使用smb协议进行文件的共享。

samba可以实现linux与window之间的文件共享。(可以挂载)
比如,我在window里将文件夹共享给所有人,在window里,可以通过【window+r】输入
\ip的方式访问共享文件夹(winIP:192.168.0.106):


在linux中:安装samba-client(samba客户端)

dnf install samba-client -y

使用命令:[root@test ~]# smbclient -L//192.168.0.106 -U administrator

-U指定window用户,回车输入window里用户 administrator的密码即可访问共享文件夹(列出共享文件夹内容):

samba服务基本信息

服务启动脚本 smb.service
主配置目录 /etc/samba
主配置文件 /etc/samba.conf
安全上下文 samba_share_t
端口 139
445
安装包 samba
samba-common

samba的安装与启用

samba服务器安装:
samba (samba主服务)
samba-common(samba配置文件的安装包)
测试端安装:
samba-client (samba客户端)

[root@test ~]# dnf install samba samba-common samba-client -y


在samba服务器主机启动samba服务:

[root@test ~]# systemctl start smb.service 

将samba添加进火墙策略:

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

samba启用成功!

测试:

[root@test ~]# smbclient -L//192.168.0.100

当提示输入root密码时直接回车


访问成功!

samba用户的建立

.samba用户的建立 (samba用户必须是被地存在的用户 ):
现在在samba服务器中,用户xng存在:

使用smbpasswd -a 用户 新建立smb用户:
建立xng为samba用户:

haha用户在samba服务器中不存在:

使用新建samba用户haha失败:

所以,samba用户必须时在系统中真实存在的!
想要新建立samba用户haha:,须在系统中将haha用户建立:

再使用smbpasswd -a haha建立samba新用户haha:

使用pdbedit -L查看用户列表 :

可以看到刚才建立的两个新用户。

使用pdbedit -x 用户删除samba用户:
使用pdbedit -x haha删除samba的哈哈用户:

samba用户访问加目录

在window下访问samba服务器:192.168.0.100:


可以看到当输入用户和密码时,访问成功时,为当前用户的家目录。
但是,此时家目录无法访问:

造成这种现象的是samba服务器的selinux,将samba服务器selinux设置为警告模式:

再次在window端访问xng的家目录:

成功访问xng家目录!

使用getsebool -a | grep samba
列出目前系统上面的有关samba所有布尔值条款设置为开启或关闭值:

可以看到samba_enable_home_dirs 功能是关闭状态,使用 setsebool -P samba_enable_home_dirs=1将其打开:

将selinux设置为强制模式:

在window删除anmba连接记录:
net use 查看访问记录

net use * /del 删除访问记录

再次使用windows访问:


在selinux强制模式下成功访问家目录!

在linux下访问:

smbclient -L//192.168.0.100/xng -U xng 


访问成功!

samba服务共享目录

在samba服务端新建目录作为共享目录:

mkdir /TESTDIR
touch /TESTDIR/test{1..5}


编辑配置文件:/etc/samba/smb.conf:

在全局设定中可以更改工作组。

将共享信息添加进配置文件中:

编辑完成后保存退出,重启smb。

在客户端进行访问测试:

 smbclient -L//192.168.0.100 -U xngsmbclient -L//192.168.0.100/TESTDIR -U xng


TESTDIR共享目录成功建立,但是无法进入。 这里出现的问题原因在于selinux的安全上下文,
其安全上下文应为 samba_share_t,修改其安全上下文:

semanage fcontext -a -t samba_share_t '/TESTDIR(/.*)?'
restorecon -RvvF /TESTDIR/

修改完成后尝试在服务端访问共享目录/TESTDIR:

smbclient //192.168.0.100/TESTDIR -U xng


成功访问共享目录/TESTDIR !

samba的访问控制

客户主机ip:192.168.0.41

黑名单

当只禁止192.168.0.41客户主机访问:
在配置文件/etc/samba/smb.conf的[TESTDIR]下添加:
hosts deny = 192.168.0.41

编辑完成后保存退出,重启smb。

访问测试:在客户主机192.168.0.41访问共享目录:

smbclient //192.168.0.100/TESTDIR -U xng


访问失败!
在服务器主机192.168.0.100进行访问测试:
访问成功!
当在配置文件/etc/samba/smb.conf的[global]下添加:
hosts deny = 192.168.0.41时,为全局设定,全部的共享目录192.168.0.41主机不能访问。

白名单

在[TESTDIR]下添加
hosts allow = 192.168.0.41
为只允许192.168.0.41这台主机访问[TESTDIR]

测试:在192.168.0.41这台主机访问TESTDIR时:

访问成功!
在192.168.0.100主机访问TESTDIR:

访问失败!
当在配置文件/etc/samba/smb.conf的[global]下添加:
hosts allow = 192.168.0.41时,为全局设定,全部的共享目录只有192.168.0.41可以访问。

samba的常用配置参数

在客户端使用

[root@rhel8_node1 ~]# mount //192.168.0.100/TESTDIR -o username=xng,password=123 /mnt

可以将共享目录进行挂载:


挂载成功后,新建文件:

可以看到新建文件失败!会不会是权限问题导致不可写?

可以看到,在服务端/TESTDIR目录只对超级用户可写:

将/TESTDIR给予满权限:

再次返回客户端进行写测试:

依然是不可写!所以这是什么原因导致的呢?

不可写是因为在samba的配置文件中,对于/TESTDIR只是一个只读访问,不能写:

所以远程主机想要对/TESTDIR实现读写访问,必须在配置文件中添加参数,至于参数怎么书写,可以参照文件:/etc/samba/smb.conf.example

writable 是否可写

将writable添加到配置文件的【TESTDIR】:

编辑完成后保存退出,重启smb。

返客户主机进行写测试:
在/mnt下新建文件node1file:

建立成功!

删除node1file:

删除成功! 读写测试成功!

write list 指定用户可写

在 /etc/samba/smb.conf.example里还可以看到write list这个参数:

这个参数的功能为对于指定用户可写,在配置文件中,将刚才添加的writable参数注释停用,加上write list参数(指定xng用户可写):

编辑完成后保存退出,重启smb。
返客户主机进行写测试:

用户xng读写成功。
使用smb用户haha进行挂载:
在/mnt下新建文件:

新建失败,可见,write list参数功能生效!

@xng/+xng 指定组可写

上面的实验:
haha用户 和 xng用户:

haha用户属于haha组, xng用户属于xng组

在配置目录中添加 @xng/+xng指定xng组可写:

编辑完成后保存退出,重启smb。此时[TESTDIR]对于xng组可写。

此时haha用户属于haha组,使用haha用户挂载TESTDIR后进行写测试:

新建文件失败!

现在,在服务端将haha用户添加到xng组:

添加完成后,返回服务端再次使用smb用户haha进行写测试:

新建文件成功!
删除file:

删除成功!
注意:添加或者移除组后客户端不能立即识别,需要在客户端重新挂载或者在服务端重启smb服务才生效。

valid users 指定用户可用

将writable添加到配置文件的【TESTDIR】,指定用户可以用TESTDIR:
指定haha用户可用:

编辑完成后保存退出,重启smb。

返回客户主机进行挂载使用测试:
使用haha进行挂载:

用户haha可以成功挂载。

使用xng用户进行挂载使用:

使用xng用户挂载失败。

valid users = +haha/@haha 指定haha组可用

和指定组可写的使用方法相同。

browseable = yes/no 是否隐藏共享

将browseable添加到配置文件的【TESTDIR】,隐藏TESTDIR共享目录:
隐藏共享目录TESTDIR,browseable = no:

编辑完成后保存退出,重启smb。
在客户端进行访问测试:

可以看到共享目录TESTDIR已经看不到了,隐藏成功!

不隐藏TESTDIR目录,browseable = yes:

编辑完成后保存退出,重启smb。
在客户端再次进行访问测试:

此时TESTDIR又可以看到,成功取消隐藏。

guest ok = yes 允许匿名用户访问

注意: guest ok = yes 和 map to guest = bad user必须同时出现!
将 guest ok = yes添加到配置文件的【TESTDIR】,则共享目录TESTDIR允许匿名用户访问。
在设置允许匿名用户访问时,须在全局设定[global]中添加map to guest = bad user,将无身份用户指定为bed user。


编辑完成后保存退出,重启smb。
返回客户端进行匿名访问测试:

匿名访问成功!

将 guest ok = yes注释停用,重启smb:

返回客户主机再次匿名访问:

匿名访问失败!

admin users = haha 指定此共享的超级用户身份

在服务端将可写参数功能打开,保存后重启smb,在客户端使用haha用户进行挂载:


使用haha用户新建文件hahafile:

则haha用户新建的文件是属于谁呢? 返回服务端,查看/TESTDIR目录中文件权限:

ls -l /TESTDIR


可以看到,haha用户新建的hahafile是属于haha用户,那么,怎么将挂载时使用的haha用户指定为超级用户呢?

将admin users = haha 添加到配置文件的【TESTDIR】,则haha用户在共享目录TESTDIR中身份为超级用户:

编辑完成后保存退出,重启smb。

返回客户端进行新建文件hahafile1:

回到服务端再次查看/TESTDIR目录中文件权限:


可以看到,此时haha用户新建的文件所有者为root。

samba的多用户挂载

客户端在挂载samba共享目录存在的问题:

目前samba服务端samba用户有两个,xng和haha:

在客户端以root身份使用samba用户haha对共享目录TESTDIR进行挂载:

[root@rhel8_node1 Desktop]# mount -o username=\haha,password=123 //192.168.0.100/TESTDIR /mnt

在客户端切换用户后,还是可以访问挂载的TESTDIR:

westos没有实现挂载,也没有实现samba的用户认证,但是可以访问到贡献根目录的资源,这显然是不合理的!

所以要是实现westos用户通过samba的认证后才能对samba的资源进行挂载。这就是samba的多用户挂载。

首先在客户端安装cifs-utils.x86_64:


使用man mount.cifs查看cifs挂载方式:


首先指定认证文件。

指定认证方式,这里的使用的方式为sec=ntlmssp.

多用户挂载。


首先建立认证文件:/root/smbpass

剪辑完成后,修改其权限: chmod 600 /root/smbpass仅超级用户可查看。
此时root用户使用smb用户xng通过认证,成功挂载:

mount -o credentials=/root/smbpass,sec=ntlmssp,multiuser //192.168.0.100/TESTDIR /mnt


挂载成功!

在客户端切换到用户westos,对共享目录进行挂载:
挂载失败。

接下来要做的就是使westos用户通过认证:

使用命令cifscreds add -u xng 192.168.0.100使/westos用户以服务端samba用户xng身份通过认证,如果报错,尝试cifscreds cleanall后再次认证。

可以看到,用户westos成功通过认证!

samba服务的部署相关推荐

  1. 文件存储minio和samba服务的部署及使用

    1.minio的docker部署及使用 前提服务器安装了docker和docker-compose 1.1创建目录 mkdir -p /docker/middleware/minio cd /dock ...

  2. Samba服务+Samba实验

    Samba服务 1.概述: Samba服务程序现在已经成为在Linux系统与Windows系统之间共享文件的最佳选择 Samba是一组软件包,使Linxu支持SMB/CIFS协议 Samba可以在几乎 ...

  3. Linux系统之部署Samba服务

    Linux系统之部署Samba服务 一.Samba服务介绍 1.Samba服务简介 2.NFS和CIFS简介 3.Smaba服务相关包 4.samba监听端口 4.samba相关工具及命令 二.环境规 ...

  4. Linux中samba共享服务的部署及安全优化详解

    samba共享服务的部署及安全优化 文章目录 samba共享服务的部署及安全优化 1.samba服务简介 2.samba基本信息 3.samba的安装与启用 a)windows下文件系统的共享 b)L ...

  5. CentOS部署Samba服务

    Samba服务部署 环境准备与软件包安装 配置文件 share模式 在Windows下登录Samba网盘 "因为文件共享不安全,不能连接..."报错的解决方案 权限问题 user模 ...

  6. 简单认识Samba服务以及Linux操作系统下部署案例解析

    1.首先在介绍Samba服务之前我们先来简单的认识一下SMB协议.SMB(Server Message Block)通信协议是微软(Microsoft)和英特尔(Intel)在1987年制定的协议,主 ...

  7. samba共享服务的部署及安全优化

    =@TOC 1.samba服务简介 在构建主机时我们需要将主机系统的数据存储在存储服务器中(如下图所示),这样用户在需要访问系统数据资源时,可以通过不同的终端主机访问存储服务器,避免因客户端主机瘫痪导 ...

  8. [Openwrt 项目开发笔记]:Samba服务vsFTP服务(四)

    [Openwrt项目开发笔记]系列文章传送门:http://www.cnblogs.com/double-win/p/3888399.html 正文: 在上一节中,我们讲述了如何在路由器上挂载U盘,以 ...

  9. 第十七单元 Samba服务

    Samba的功能 Samba的安装 Samba服务的启动.停止.重启 Samba服务的配置 Samba服务的主配置文件 samba服务器配置实例 Samba客户端设置 windows客户端 Linux ...

最新文章

  1. 英国皇家学会院士樊文飞:把大数据变小,突破企业资源限制
  2. [CF1036C]Classy Numbers
  3. iOS- 如何改变section header
  4. ZOJ 1586 QS Network
  5. 归约归约冲突_JavaScript映射,归约和过滤-带有代码示例的JS数组函数
  6. Alpha 冲刺报告2
  7. 数据库每日一题 2020.05.21
  8. android安全权限管理,Android 11 中的权限更新
  9. 关于Python编码这一篇文章就够了
  10. SSM框架面试题总结
  11. 中公计算机岗位知识与技能,知识与技能的分类
  12. 高效能人士的七个习惯(一)由内而外全面造就自己
  13. RDS2016 Multipoint Role
  14. 优化Oracle数据库查询10个方法
  15. 糖尿病人食谱以及水果的食用
  16. 无线服务器网速加快,无线路由器网速慢怎么办?
  17. 使用git拉取项目、创建分支、提交代码教程
  18. iPhone XS系列降价一千元;Intel雷电接口将融合USB4;蔚来汽车收入、亏损均增长百分百 | 雷锋早报...
  19. java基础-类-抽象类-接口(自学笔记)
  20. 挑战最强大脑——来自全球的14个编码社区

热门文章

  1. [分享]《阿育王》电影原声音乐——尽情哭泣
  2. 达梦DCA培训笔记20220810-20220812
  3. CloudWatch Examples
  4. 人工蜂群算法性能比较
  5. 跟择善老师学习JAVA,线程五个状态
  6. html铺满整个页面_html表格铺满页面
  7. www的主要语言html,编写www页面所使用的语言是什么
  8. 蓝牙耳机什么牌子好?盘点便宜又好用的蓝牙耳机品牌
  9. VGG扫盲帖:利用pytorch实现VGG16网络架构
  10. CentOS 卸载软件方法