Samba是一个能让Linux系统应用Microsoft网络通讯协议的软件,而SMB是Server Message Block的缩写,即为服务器消息块 ,SMB主要是作为Microsoft的网络通讯协议,后来Samba将SMB通信协议应用到了Linux系统上,就形成了现在的Samba软件。后来微软又把 SMB 改名为 CIFS(Common Internet File System),即公共 Internet 文件系统,并且加入了许多新的功能,这样一来,使得Samba具有了更强大的功能。

  Samba最大的功能就是可以用于Linux与windows系统直接的文件共享和打印共享,Samba既可以用于windows与Linux之间的文件共享,也可以用于Linux与Linux之间的资源共享,由于NFS(网络文件系统)可以很好的完成Linux与Linux之间的数据共享,因而 Samba较多的用在了Linux与windows之间的数据共享上面。

  SMB是基于客户机/服务器型的协议,因而一台Samba服务器既可以充当文件共享服务器,也可以充当一个Samba的客户端,例如,一台在Linux 下已经架设好的Samba服务器,windows客户端就可以通过SMB协议共享Samba服务器上的资源文件,同时,Samba服务器也可以访问网络中 其它windows系统或者Linux系统共享出来的文件。
Samba在windows下使用的是NetBIOS协议,如果你要使用Linux下共享出来的文件,请确认你的windows系统下是否安装了NetBIOS协议。

  组成Samba运行的有两个服务,一个是SMB,另一个是NMB;SMB是Samba 的核心启动服务,主要负责建立 Linux Samba服务器与Samba客户机之间的对话, 验证用户身份并提供对文件和打印系统的访问,只有SMB服务启动,才能实现文件的共享,监听139 TCP端口;而NMB服务是负责解析用的,类似与DNS实现的功能,NMB可以把Linux系统共享的工作组名称与其IP对应起来,如果NMB服务没有启动,就只能通过IP来访问共享文件,监听137和138 UDP端口。

环境准备
确认Linux上安装了Samba,CentOS上都是以rpm包的形式安装的,所以先检查一下:

[root@mihaoyun ~]#  rpm -qa | grep samba
samba-client-libs-4.9.1-10.el7_7.x86_64
samba-common-4.9.1-10.el7_7.noarch
samba-common-libs-4.9.1-10.el7_7.x86_64
samba-common-tools-4.9.1-10.el7_7.x86_64
samba-4.9.1-10.el7_7.x86_64
samba-client-4.9.1-10.el7_7.x86_64
samba-libs-4.9.1-10.el7_7.x86_64
————————————————
如果没有安装,就没有输出结果。使用下面的命令安装

[root@mihaoyun ~]# yum install samba

设置开机启动

[root@mihaoyun ~]# systemctl enable smb

启动服务

[root@mihaoyun ~]# systemctl start smb

共享目录
为了方便寻找,我在根目录下创建了我的共享文件夹 mihaoyun 。
在 /etc/samba/smb.conf 中添加要共享的文件系统以及权限:

[mihaoyun]
    comment = Share files between my win10 and centos 
    path = /mihaoyun/
    writable = yes
    public = yes
    guest ok = yes
    browseable = yes
保存后需要重启smb.service:

[root@mihaoyum.com ~]# systemctl restart smb.service

给samba创建一个用户,用户名需要在系统上已经存在:

[root@mihaoyum.com ~]# useradd mihaoyum
[root@mihaoyum.com ~]# pdbedit -a -u mihaoyum
new password:
retype new password:
Unix username:        mihaoyum
NT username:
Account Flags:        [U          ]
User SID:             S-1-5-21-3939207639-918327093-2640217915-1000
Primary Group SID:    S-1-5-21-3939207639-918327093-2640217915-513
Full Name:
Home Directory:       \mihaoyum\mihaoyum
HomeDir Drive:
Logon Script:
Profile Path:         \mihaoyum\mihaoyum\profile
Domain:               mihaoyum
Account desc:
Workstations:
Munged dial:
Logon time:           0
Logoff time:          三, 06 2月 2036 07:06:39 PST
Kickoff time:         三, 06 2月 2036 07:06:39 PST
Password last set:    五, 22 5月 2020 07:39:36 PDT
Password can change:  五, 22 5月 2020 07:39:36 PDT
Password must change: never
Last bad password   : 0
Bad password count  : 0
Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
[root@mihaoyum.com ~]# pdbedit -L
mihaoyum.com:1001:

[root@centos7-64 manager]# smbstatus

Samba version 4.10.4

PID     Username     Group        Machine                                   Protocol Version  Encryption           Signing              

2185    mihaoyum     mihaoyum      192.168.30.1 (ipv4:192.168.30.1:3761)     SMB3_11           –                    partial(AES-128-CMAC)

Service      pid     Machine       Connected at                     Encryption   Signing     

manager      2185    192.168.30.1  六 7月 18 21时04分36秒 2020 CST –            –           

Locked files:

Pid          User(ID)   DenyMode   Access      R/W        Oplock           SharePath   Name   Time

2185         1000       DENY_NONE  0x100081    RDONLY     NONE             /home/manager   .   Sat Jul 18 21:04:36 2020
2185         1000       DENY_NONE  0x100081    RDONLY     NONE             /home/manager   .   Sat Jul 18 21:04:53 2020
2185         1000       DENY_NONE  0x100081    RDONLY     NONE             /home/manager   .   Sat Jul 18 21:05:15 2020

在“此电脑”上右键“映射网络驱动器”或者“Windows徽标键+R”直接输入\mihaoyun\mihaoyun ,提示“您可能没有权限访问网络资源”。
需要关闭Linux的防火墙,Linux上使用firewalld代替iptables,所以把firewalld给stop掉就可以。(systemctl stop firewalld)

这条命令只开放SMB的端口

firewall-cmd –permanent –zone=public –add-service=samba

如果还是这个提示需要,修改SELinux的访问控制策略

[root@mihaoyum.com ~]# getenforce
enforcing
[root@mihaoyum.com ~]# setenforce permissive

[root@mihaoyum.com ~]# vi /etc/selinux/config
将SELINUX=enforcing改为SELINUX=disabled
重启
查看selinux状态
[root@mihaoyum.com~]# sestatus
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: enforcing
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed

给目录加上写权限,可以把共享的目录的属组和属主都改成前面创建的用户。同时把权限改成只允许同组的有写权限。

chmod 774 -R /mihaoyun/
chown -R mihaoyum:mihaoyum /mihaoyum/

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注