Samba
Samba是一个能让Linux系统应用Microsoft网络通讯协议的软件,而SMB是Server Message Block的缩写,即为服务器消息块 ,SMB主要是作为Microsoft的网络通讯协议,后来Samba将SMB通信协议应用到了Linux系统上,就形成了现在的Samba软件。而 CIFS(Common Internet File System)为SMB的跨平台版本,即公共 Internet 文件系统,并且加入了许多新的功能,这样一来,使得Samba具有了更强大的功能。
SMB的版本:
SMB 1.0 (or SMB1) – The version used in Windows 2000, Windows XP, Windows Server 2003 and Windows Server 2003 R2
SMB 2.0 (or SMB2) – The version used in Windows Vista (SP1 or later) and Windows Server 2008
SMB 2.1 (or SMB2.1) – The version used in Windows 7 and Windows Server 2008 R2
SMB 3.0 (or SMB3) – The version used in Windows 8 and Windows Server 2012
samba服务的进化:
smb协议:
server message block 服务消息块
cifs协议 :
common internet file system 通用互联网文件系统
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服务启动,才能实现文件的共享,监听TCP 139端口;而NMB服务是负责解析用的,类似与DNS实现的功能,NMB可以把Linux系统共享的工作组名称与其IP对应起来,如果NMB服务没有启动,就只能通过IP来访问共享文件,NMB监听UDP的137和138 端口
安装挂载配置
[root@localhost ~]# rpm -qa |grep samba
#检查是否安装Samba 如果是红色说明没安装
samba-libs-4.2.3-10.el7.x86_64
samba-client-4.2.3-10.el7.x86_64
samba-common-libs-4.2.3-10.el7.x86_64
samba-common-4.2.3-10.el7.noarch
samba-4.2.3-10.el7.x86_64
samba-client-libs-4.2.3-10.el7.x86_64
samba-common-tools-4.2.3-10.el7.x86_64
[root@localhost ~]# mount /dev/cdrom /mnt
mount: /dev/sr0 写保护,将以只读方式挂载
[root@localhost ~]# rpm -ivh /mnt/Packages/samba-4.2.3-10.el7.x86_64.rpm
[root@localhost ~]# rpm -ivh /mnt/Packages/samba-libs-4.2.3-10.el7.x86_64.rpm
[root@localhost ~]# rpm -ivh /mnt/Packages/samba-client-libs-4.2.3-10.el7.x86_64.rpm
[root@localhost ~]# rpm -ivh /mnt/Packages/samba-common-tools-4.2.3-10.el7.x86_64.rpm
[root@localhost ~]# rpm -ivh /mnt/Packages/samba-common-4.2.3-10.el7.noarch.rpm
chkconfig --level 345 smb on #####centos7.0 以上不能用
[root@localhost samba]# grep -v “^#” smb.conf > smb.conf1
#过滤#号开头的行 然后保存为smb.conf1文件
[root@localhost samba]# grep -v “^$” smb.conf1 > smb.conf2
#过滤空行 然后保存为smb.conf2文件
[root@localhost samba]# grep -v “^;” smb.conf2 > smb.conf3
#过滤;
[root@localhost samba]# mv smb.conf smb.conf.2017.11.24bak
#备份原来是smb文件,必须有时间有提示(线网操作格式)
[root@localhost samba]# mv smb.conf3 smb.conf
#将过滤号的配置文件 命名为smb.conf
######开启匿名共享share#####
[root@localhost samba]# cd /opt
[root@localhost opt]# mkdir share
##进入opt 创建share 文件夹
cd -
[root@localhost samba]# vi smb.conf
#编辑smb.conf
[global]
workgroup = MYGROUP
server string = Samba Server Version %v
log file = /var/log/samba/log.%m
max log size = 50
security = user
map to guest = bad user
load printers = yes
cups options = raw
[homes]
comment = Home Directories
browseable = no
writable = yes
[printers]
comment = All Printers
path = /var/spool/samba
browseable = no
guest ok = no
writable = no
printable = yes
[share]
comment = Samba
path = /opt/share
public = yes
writable = yes
###############上述修改地方####
security = user
map to guest = bad user
[share]
comment = Samba
path = /opt/share
public = yes
writable = yes
#################################
修改后 :wq 保存
[root@localhost samba]# service smb stop
关闭 SMB 服务: [确定]
[root@localhost samba]# service smb start
启动 SMB 服务: [确定]
#重启保存
systemctl stop firewalld.service
systemctl status firewalld.service
那如何在防火墙开启的时候,如何放通某些端口呢?smb必须放通139、445端口
#####验证SMB服务器 在微软的电脑上在运行中输入 \192.168.11.119 看共享是否开启 --成功
######开启匿名共享share 能上传东西#####
[root@localhost opt]# cd /opt
[root@localhost opt]# chmod 757 share
#进入opt目录修改share权限 将其他权限改为7
setenforce 0
#注意一定要关闭内核核心保护,不然开了权限,也不能写数据
[root@localhost samba]# vi smb.conf
#在[share]下加入
writable = yes
修改后 :wq 保存
#####验证SMB服务器 在微软的电脑上在运行中输入 \192.168.11.119 上传文件看是否成功
[root@localhost opt]# cd share/
[root@localhost share]# ll
总用量 0
-rwxr–r--. 1 nobody nobody 0 11月 24 23:01 新建文本文档.txt
##通过这个可以发现上传的文本文档是有属主和所组的 都是nobody
如果在不改权限的情况,我们可以这样优化,对share改下主和组就可以了
[root@localhost opt]# chmod 751 share
#share改回原来的751
chown nobody:nobody share
#share的主和组改为nobody
#####验证SMB服务器 在微软的电脑上在运行中输入 \192.168.11.119 上传文件看是否成功
测试成功没问题
######用户登录验证SMB##
useradd -s /sbin/nologin tom
useradd -s /sbin/nologin jack
###加-s 增加安全性 即使黑客拿到用户有不能登录
pdbedit -a -u tom
pdbedit -a -u jack
###输入tom 密码 这边是smb密码
vi /etc/samba/smb.conf
security = user
[music]
path = /opt/music
public = no
valid users = tom
write list = tom
##############################
security = user 用户名访问
valid users = tom,jack 谁可以访问
write list = tom 谁可以写
##############################
service smb restart
mkdir /opt/music
chown tom:tom music
##############如何新建的文件和文件夹让别人看不见 设置权限
[music]
path = /opt/music
public = no
valid users = tom
write list = tom
directory mask = 0700
create mask =0600
service smb reload
#######tom 新建文件600 文件夹测试(700)
smbclient -L
#扫描
#########
[root@localhost ~]# mount -o username=tom //192.168.11.119/music /opt
Password for tom@//192.168.11.119/music: ******
####################客户机挂载music#####
mount -o username=tom //192.168.11.119/music /opt
mount -o username=“tom” //192.168.30.100/music /opt
输入密码
#挂载进来
mount -t cifs -o username=tom,password=Abc123 //192.168.30.100/ /opt
mount -v -t cifs //192.168.30.100/musci /opt/1 -o username=tom,password=Abc123,iocharset=utf8,sec=ntlm
###########Linux核心防护关闭#######
vi /etc/sysconfig/selinux
把里边的一行改为
SELINUX=disabled
改了之后保存,然后重启就可以了