1. samba服务简介

作用:
windows系统共享文件时用到的协议smb
smb是由miscrosoft+sun联合开发的,
在linux中称为 cifs文件系统

在Windows中共性一个文件,

windows下samba关闭共享 windows samba共享服务_centos


在linux机中安装samba-client 后执行以下命令可以看到Windows共享的内容:

windows下samba关闭共享 windows samba共享服务_运维_02


-L列出 -U指定用户

windows下samba关闭共享 windows samba共享服务_运维_03


直接执行可得到一个类似于lftp的界面,里面可以上传删除文件,但是不可以建立文件,这样就是不同系统的文件传输。由于这样的界面操作的命令太少,我们将它挂载到/mnt下使用,进行操作时更改的不是linux主机目录,而是Windows主机目录下的内容。

windows下samba关闭共享 windows samba共享服务_samba_04


在里面建立文件,

windows下samba关闭共享 windows samba共享服务_linux_05


windows下samba关闭共享 windows samba共享服务_centos_06


建立到Windows主机上去了。

2.samba基本信息

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

3.samba的安装与启用

samba的安装:

dnf install samba samba-common samba-client -y

samba服务启动:

systemctl enable --now smb

samba服务启用

firewall-cmd --permanent --add-service=samba

firewall-cmd --reload

测试:

smbclient -L //192.168.0.20      ##当要输入root密码时请直接回车

windows下samba关闭共享 windows samba共享服务_centos_07

4.samba用户的建立

1.samba用户必须是本地存在的用户

2.samba用户的建立

smbpasswd -a thermal        ##添加用户

pdbedit -L            ##查看用户列表

pdbedit -x thermal          ##删除用户

windows下samba关闭共享 windows samba共享服务_运维_08


windows下samba关闭共享 windows samba共享服务_centos_09

5.samba用户访问家目录

当selinux开启时:

setsebool -P samba_enable_home_dirs on         开启功能后才能访问用户家目录中的内容

windows下samba关闭共享 windows samba共享服务_centos_10


windows下,搜索栏搜索

windows下samba关闭共享 windows samba共享服务_windows下samba关闭共享_11


\192.168.0.20         ##访问

windows下samba关闭共享 windows samba共享服务_samba_12


net use            ##查看访问记录

windows下samba关闭共享 windows samba共享服务_运维_13


net use * /del          ##删除访问记录

windows下samba关闭共享 windows samba共享服务_centos_14


在linux下:

smbclient //192.168.0.20/lee -U lee

windows下samba关闭共享 windows samba共享服务_运维_15

6.samba服务共享目录

mkdir /westosdir                       建立目录
touch /westosdir/westosfile{1..5}                   建立文件
semanage fcontext -a -t samba_share_t '/westosdir(/.*)?'       更改安全上下文
restorecon -RvvF /westosdir/                   刷新安全上下文

windows下samba关闭共享 windows samba共享服务_samba_16

vim /etc/samba/smb.conf

windows下samba关闭共享 windows samba共享服务_linux_17


[westosdir]                ##共享名称

comment = westosdir            ##共享说明

path = /westosdir             ##共享路径

systemctl restart smb

测试:

smbclient //192.168.0.20/westosdir -U westos

windows下samba关闭共享 windows samba共享服务_windows下samba关闭共享_18

7.samba的访问控制

hosts allow 192.168.0.30  192.168.0. #192.168.0. 是一个网段,代表一个网段的ip都可以访问

hosts deny 192.168.0.30        #作用和allow相反           

windows下samba关闭共享 windows samba共享服务_windows下samba关闭共享_19


当写到单独共享目录时只对此共享目录生效,当写到【GLOBAL】底下时对samba整体生效。

windows下samba关闭共享 windows samba共享服务_linux_20


30主机访问时成功。

windows下samba关闭共享 windows samba共享服务_linux_21


10主机访问westosdir目录被拒绝,但可以访问其它的目录,如下:

windows下samba关闭共享 windows samba共享服务_samba_22


当写到global下时:

windows下samba关闭共享 windows samba共享服务_windows下samba关闭共享_23


windows下samba关闭共享 windows samba共享服务_运维_24


10主机访问所有目录都被拒绝。

8.samba的常用配置参数

windows下samba关闭共享 windows samba共享服务_centos_25


讲samba服务器主机的 /westosdir 挂载到30主机的/mnt/下,

windows下samba关闭共享 windows samba共享服务_samba_26


无法删除或建立内容,因为这些文件只对root可写。

cmod 777 /westosdir           更改权限后仍然无法删除。

因为samba不允许我们做出这样的操作。

vim /etc/samba/smb.conf

windows下samba关闭共享 windows samba共享服务_运维_27


writable = yes                ## 可写

windows下samba关闭共享 windows samba共享服务_samba_28


windows下samba关闭共享 windows samba共享服务_samba_29


write list = westos              ## 指定用户可写

windows下samba关闭共享 windows samba共享服务_samba_30


由于挂载时使用的是lee用户,所以不可写


windows下samba关闭共享 windows samba共享服务_centos_31


write list = +westos              

write list = @westos             ## 指定组可写,@,+相同

windows下samba关闭共享 windows samba共享服务_centos_32


将lee加入到westos组中,

windows下samba关闭共享 windows samba共享服务_samba_33


则可写。


windows下samba关闭共享 windows samba共享服务_samba_34


valid users = lee               ## 指定访问用户

windows下samba关闭共享 windows samba共享服务_运维_35


windows下samba关闭共享 windows samba共享服务_windows下samba关闭共享_36


lee用户可以访问和挂载,westos用户则不行。


valid users = +lee|@lee            ## 指定访问组,用法同上


windows下samba关闭共享 windows samba共享服务_linux_37


默认可以看见westosdir目录;

windows下samba关闭共享 windows samba共享服务_centos_38


browseable = yes|no             ## 是否隐藏共享

windows下samba关闭共享 windows samba共享服务_运维_39


被隐藏


windows下samba关闭共享 windows samba共享服务_windows下samba关闭共享_40


windows下samba关闭共享 windows samba共享服务_samba_41


map to guest = bad user          ## 写到全局设定中,所有匿名用户映射到guest,

                  因为guest是windows中的匿名用户,linux下为anonymous

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

windows下samba关闭共享 windows samba共享服务_windows下samba关闭共享_42


则匿名用户可以访问,当:

windows下samba关闭共享 windows samba共享服务_windows下samba关闭共享_43


windows下samba关闭共享 windows samba共享服务_centos_44


则匿名用户不可以访问。


当我们在客户机上的挂载点建立文件时,实际上实在服务器上建立;

windows下samba关闭共享 windows samba共享服务_运维_45


test为客户机

windows下samba关闭共享 windows samba共享服务_linux_46


dns为服务器,可以看出建立的文件时lee建立的。

windows下samba关闭共享 windows samba共享服务_centos_47


admin users = lee     ##指定此共享的超级用户身份,当我们以lee建立文件时root身份执行

windows下samba关闭共享 windows samba共享服务_centos_48


windows下samba关闭共享 windows samba共享服务_运维_49

9.samba的多用户挂载

本实验全部在客户端主机中进行。

在客户端如果用普通的挂载方式,没有用过用户验证的人也可以访问samba服务

windows下samba关闭共享 windows samba共享服务_centos_50


我们用root用户挂载samba的内容,可以看到目录下的内容,当我们切换至thermal用户时,他没有经过挂载认证,仍然可以看到挂载到 /mnt/ 下的内容。这就是系统的安全漏洞。

客户机安装 cifs
dnf

vim /root/smbpass          用户认证文件

windows下samba关闭共享 windows samba共享服务_运维_51


password=     我没设置密码。所以为空

mount -o credentials=/root/smbpass,sec=ntlmssp,multiuser //192.168.0.20/westosdir /mnt

#credentials=/root/smbpass               指定认证文件

#sec=ntlmssp                     指定认证类型

#multiuser                       支持多用户

windows下samba关闭共享 windows samba共享服务_运维_52


此时客户端主机的thermal 用户就不可以访问mnt 目录下的内容了,因为thermal用户没有通过认证

此时我们可以用cifscreds 命令对 thermal 用户进行认证

[thermal@test ~]$ cifscreds add -u lee 192.168.0.20

windows下samba关闭共享 windows samba共享服务_windows下samba关闭共享_53


通过认证可以显示。

[westos@test /]$ cifscreds add -u lee 192.168.0.20
 Key search failed: Key has expired           
 当遇到此报错信息
 [westos@test /]$ cifscreds add -u lee -d 192.168.0.20
 Password:
 [westos@test ~]$ cifscreds clearall
 执行以上两条命令解决报错。

这就是samba的多用户挂载,不仅仅只使用挂载时使用的服务器上的westos用户,还可以使用服务器上的lee用户