Samba

本文详细介绍了Samba服务的安装、配置、用户建立、服务共享目录以及访问控制,包括在Linux系统中如何通过smbclient访问Windows共享文件,如何配置Samba服务的端口、安全上下文,以及设置用户访问权限等关键步骤。
摘要由CSDN通过智能技术生成

主题:samba

  • 运维的思想:遇到问题想办法解决掉,而不是没有这个问题,为什么不经理李这个步骤,达到解决问题的目的再好不过了!
  • 不懂的问题,百度查询

一、引入

  • 在windows中,不同的主机之间是如何进行文件的传输呢?
  • 微信qq这种是基于用户的文件传输,对于企业而言不适用。我阿里员工主机之间要传输文件,难不成还要借助qq呀
  • ftp、http是文件传输协议,是传输文件时的约定
  • 我们现在要讲的是,文件网络系统,值直接使用进行文件传输东西
  • 文件传输系统和文件传输协议是不同的哦~ 系统更略胜一筹,开放的权利更多

下面我来讲讲windows下文件是怎么进行传输的吧
实验效果:若主机之间处于同一个公网,那么可以访问分享文件目录的主机获取资源!
实验思路:
1.windows先共享文件
2.win+r //真机IP地址(分享文件的主机地址ip)进行访问
实验过程:
1.文件共享
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2.windows下文件访问
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
3.Linux下文件访问
(一)
1.配置yum源
2.下载安装包
dnf install samba-client -y
3.浏览页面共享的内容
smbclient -L //192.168.43.33
默认为访问root用户,访问失败!
应当访问kiosk用户,windows用户在控制面板中用户账号查询
smbclient -L //192.168.43.33 -U Kiosk
在这里插入图片描述
在这里插入图片描述
4.smbclient //192.168.43.33/共享的素材 -U Kiosk,并输入密码
使用 smb:> ls 查看远程的资源:显示内容和windows共享目录内容一模一样
使用smb:> !ls 查看本地的资源:
在这里插入图片描述
5.(1)搞点新鲜的,在linux主机内上传文件到windows中
smb:> put 文件名称注意只能是上传文件
在windows中可以看到文件上传成功
在这里插入图片描述
(2)在linux主机内删除windows中共享目录的文件
smb:> del 共享目录中的内容
windows同步删除
6.smb:> ?查看到可以使用的命令,可以看到没有touch命令,用起来不方便
7.smb:> quit 退出,回到原模式
在这里插入图片描述
(二)共享文件的好处是可以挂载 (用户:Kiosk)
mount //192.168.43.33/jcq /mnt -o username=Kiosk,password=redhat
挂载的意思是:在linux内操作,但是效果是在windows服务器上(windows的共享目录中)
(1)cd /mnt
(2)建立文件 touch file{1…10},在windows共享目录中多出10个文件
(3)rm -fr file* 远程操作删除文件,远程服务器直接被搞定
挂载操作服务器,键里删除文件,挂载点和共享目录jcq内容都会变化
在这里插入图片描述
在这里插入图片描述

二、samba服务及基本信息

1.作用:windows系统共享文件时用到的协议smb
2.

  • 服务名称:smb.service
  • 配置目录:/etc/samba
  • 主配置文件:/etc/samba.conf
  • 安全上下文:samba_share_t
  • 端口号:139(tcp) 445(udp)
  • 安装包:samba samba-common samba-client三个
    3.vim /etc/samba/smb.conf.example 配置文件的说明

三、samba的安装与启用

实验在rhel7_node1中完成
0.配置yum仓库
在这里插入图片描述
在这里插入图片描述
1.windows共享资源的时候“傻瓜化”的操作,点点ok,但是实际上后台操作很多,我们就会不了解系统
2.linux(服务器)如何共享资源,所有事情自己去做(更了解linux)
3.rhel7_node1主机ip:192.168.43.20
4.在rhel7_node1主机进行samba的安装
5.samba的安装: dnf install samba samba-common samba-client -y
(samba:主体部分; samba-common:涉及到的配置文件安装包;samba-client:客户端;客户端是如果需要做测试的话,需要安装客户端)
在这里插入图片描述
6.在安装之前yum源一定要配置好
7.samba的启动:systemctl enable --now smb
或者**systemctl start smb.service
8.netstat -anltupe | grep smb 查看smb的端口号(139/445)
在这里插入图片描述
9.火墙允许服务(samba的启用)
(1)火墙查看允许所有的服务
firewall-cmd --get-service
(2)火墙允许samba firewall-cmd --permanent --add-service=samba
(3)重启火墙firewall-cmd --reload
(4)查看火墙允许的服务firewall-cmd --list-all
在这里插入图片描述
在这里插入图片描述
9.测试:rhel7_node1中,rhel7_node1主机ip是:192.168.43.10
smbclient -L //192.168.43.10,当需要输入root密码时,直接回车
在这里插入图片描述

三、samba用户的建立

  • 在linux中,不同于windows给出用户和密码就可以直接使用
  • samba用户必须是本地存在的用户(也就是必须id 用户名 可以查看到的用户)
  • 设置RHEL7_node1:192.168.43.10
    在这里插入图片描述
    (一)samba用户的建立
    0.用户 id westos ; id lee ;可以查到
    如果本地用户不存在,useradd lee建立本地用户
    id lee 查询本地用户是否建立成功;
    在这里插入图片描述
    1.建立两个用户 westos lee,建立命令如下:
    smbpasswd -a westos 密码:westos
    smbpasswd -a lee 密码:lee
    在这里插入图片描述
    2.用户的查询 pdbedit -L
    3.删除已经存在的用户 pdbedit -X westos(其中 westos为已经存在的用户)
    4.用户建立完成后,可以直接使用
    smbclient -L //192.168.43.10 -U westos客户端访问服务器192.168.43.10的westos用户,可以访问到家目录
    5.在windows中,//192.168.43.10访问这个虚拟机,输入用户名和密码,可以看到共享的家目录。但是双击打开访问时,被拒绝了。访问被限制,怎么办呢?
    在这里插入图片描述
    6.两种解决访问被限制的方法:
    方式一:rhel7_node1中 getenforce为enforcing,设置setenforce 0改为警告模式
    在这里插入图片描述
    方式二:在selinux开启时,开启samba_enable_home_dirs
    (1)getsebool -a | grep samba 可以看到samba_create_home_dirs—>off是关闭状态
    samba_enable_home_dirs—>off是关闭状态
    (2)setsebool -P samba_enable_home_dirs on 开启状态
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    7.windows中更改samba用户
    (1)net use 查看记录
    (2)net use * /del 输入y
    (3)再次net use 查看记录,列表为空
    在这里插入图片描述
    8.windows再次访问,全新的输入用户和密码在这里插入图片描述
    在这里插入图片描述

四、samba服务共享目录

实验思路:
1.建立目录
2.服务端设定共享目录的安全上下文,并刷新
3.主配置文件/etc/samba/smb.conf文件下进行配置
4.重启smb服务
5.客户端测试可以访问该目录
实验过程:
1.建立目录 mkdir /westosdir
2.为了验证是这个目录,建立文件;touch /westosdir/westosfile{1…5}
ls /westosdir/ 验证建立文件成功
在这里插入图片描述
3.为了共享这个目录,编写主配置文件
vim /etc/samba/smb.conf
(1)为什么家目录可以看到呢?这是因为家目录在主配置文件中已经被共享出去!
在这里插入图片描述
(2)

  • global 全局设定,其中workgroup是工作组
  • homes 家目录
  • printers 打印机
    (3)更改workgroup=westos,更改工作组,相当于更改组织机构
    4.想共享目录,如何实现共享呢?
    vim /etc/samba/smb.conf
    追加内容为:
    [westosdir]
    comment = westosdir (说明可以自定义)
    path = /westosdir (路径要写绝对路径)
    在这里插入图片描述
    5.重启samba服务
    systemctl restart smb.service
    在这里插入图片描述
    6.smbclient -L //192.168.43.10 匿名访问的时候已经被共享出了westosdir目录
    7.smbclient //192.168.43.10/westosdir -U westos
    (1)在命令6中你看到的共享目录叫什么名字,直接访问目录就可以。访问后可以进行上传和查看目录!
    (2)注意呀,访问素材的时候一定要加参数-U 进入smb:>模式,可以进行上传和删除命令
    (3)但是访问是失败的,这是因为服务器主机开了selinux
    在这里插入图片描述
    在这里插入图片描述
    8.但是访问是失败的,这是因为服务器主机开了selinux
    (1)更改安全上下文:
    semanage fcontext -a -t samba_share_t ‘/westosdir(/.*)?’
    (2)刷新selinux
    restorecon -RvvF /westosdir/
    在这里插入图片描述
    9.再次访问可以访问到内容
    在这里插入图片描述
    上述的实验在以rhel7_node1既是客户端又是服务端,现在我们用rhel8_node1为客户端
    (1)首先rhel8_node1配置yum源,并安装客户端samba-client
    (2)rhel8_node1访问目录,可以看到目录里的内容
    在这里插入图片描述
    在这里插入图片描述
    但是这里有一个问题:不管是访问哪一个用户,westos或者lee,都能访问到目录的内容嘞~~

五、samba的访问控制

此访问控制只是针对/westoosdir目录而言的!
1 服务端
(1)vim /etc/samba/smb.conf
追加内容为:
[westosdir]
comment = westosdir (说明可以自定义)
path = /westosdir (路径要写绝对路径)
hosts allow = 192.168.43.10(当前客户端的IP,只允许30来访问)
(2)重启服务
2 客户端(ip不是192.168.43.10的客户端主机),访问失败
smbclient //192.168.43.10/westosdir -U westos
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3.此访问控制只是针对/westoosdir目录而言的,其他的ip可以看其他共享的内容
在这里插入图片描述
4.主配置文件中[westosdir]添加白名单,白名单多个ip都可以允许访问!
白名单允许多个写法
==hosts allow = 192.168.43.10 192.168.43.20 ==(中间空空格隔开)
在这里插入图片描述在这里插入图片描述
5.全局设定
hosts allow = 192.168.43.10写在全局设定中,全局生效,不能列出共享的资源。
在这里插入图片描述
全局生效,不能列出共享资源
在这里插入图片描述
总结:
(1)当hosts allow/deny 写到单独共享时,对次共享有效
(2)当写到global时,对samba整体生效

六、samba的常用配置参数

writeable = yes是否可写
write list = westos指定用户可写
write list = +westos指定组可写
write list = @westos指定组可写
valid users = lee指定访问用户
valid users = +lee指定访问组
valid users = @lee
browseable = yes/no是否隐藏共享
guest ok = yes匿名用户使用

(一)writeable = yes
0.df 查看挂载情况,并删除已经在/mny下挂载的内容
umount /mnt
1.mount //192.168.43.10/westosdir /mnt -o username=westos,password=westos
实现了把192.168.43.10/westosdir挂载到/mnt目录下
2.cd /mnt 并ls 可以看到/mt目录里的内容,但是不能删除/mnt里面的文件
这是因为挂载的时候,使用到的用户是westos用户,而/westosdir目录本身是对root可写。(挂载的意思是在可以远程操作服务器,在本机操作/192.168.43.10/westosdir,但是使用挂载的时候,是用的服务器的westos用户挂载的,权限上有限制)
ls -ld /westosdir 可看看到读写权限
3.若要/westosdir 对westos用户可写,更改用户和用户组
chown westos.westos. /westosdir/
chmod 777 /westosdir/
权限改为777,在做实验的时候保证不会受到本地文件(服务器上文件)的影响
4.设置/westosdir/具有可写的功能,并重smb服务
[westosdir]
comment = westosdir (说明可以自定义)
path = /westosdir
writeable = yes
5.测试:可以在客户端的/mnt 挂载点进行文件的删除和新建(可写功能)
rm -fr westosfile1 成功!
(二)write list = westos
1.两个用户westos lee,并且设置只westos可写
2.umount /mnt 卸掉挂载
3.使用lee进行挂载
mount //192.168.43.10/westosdir /mnt -o username=lee,password=lee
4.mount 可查看挂载的时候使用的哪个用户身份
5.可以看到使用lee用户身份不能再进行写操作
完成了实验效果,使用lee挂载,lee不能进行写操作,因为设置只westos可写
(三)write list = +westos
1.lee不属于westos组,测试不能写操作
2.设置lee属于westos组,测试能不能可写
usermod -G westos lee
id lee 可以看到lee用户属于westos组
3.编写主配置文件,对组可写
4.重启服务
5.可以进行写操作
6.清处组westos,usermod -G " " lee
id 查看到不再属于westos组
7.重启就不能进行写操作
注意:每一次更改都要重启服务(实际上是挂载更新)
(四)valid users = lee 指定访问用户(只可以访问lee)
含义:在访问服务器的时候,指定哪个用户可以访问,哪个用户不能访问
注销掉之前的设置,使用;或者#都可以注销
1.更改配置文件,追加valid users = lee
2.只有lee可以挂载了
(五)browseable = yes/no 是否隐藏目录
1.更改配置文件browseable = no
2.smbclient -L //192.168.43.10/ 可以看到目录看不到了,不用重启,即改即生效
3.browseable = yes 可以看到共享内容列表
(六)guest ok = yes , 匿名用户访问
1.在主配置文件中,全局global中写:
map to guest = bad user (含义:把没有用户的身份都应设为匿名用户)
2.[/westosdir]中追加guest ok = yes (允许匿名用户访问)
3.重启服务
4.当匿名用户访问/westosdir时,可以访问
smbclient //192.168.43.10/westosdir
之前的时候,访问共享的素材,如果不加用户参数-U 访问失败
(六)
环境:设置可写+不显示
1.使用lee挂载
2.建立文件,ll 查看发现文件的所有人是lee,这是因为挂载的时候,用到的身份用户是lee
3.挂载的时候,不管你的客户端是谁,都是用你访问的名称去挂载
4.怎么去转换用户身份
[/westosdir]中追加admin users = lee
含义:当我使用lee进行挂载时,使用的用户身份是超级用户
注意:提升的是用不身份,和组没有关系,并没有提升组!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值