基本

MB 是在会话层(session layer)和表示层(presentation layer)以及小部分应用层(application layer)的协议。SMB使用了NetBIOS的应用程序接口 (Application Program Interface,简称API),一般端口使用为139,445。

SMB协议

  • SMB(服务信息模块)协议是一个高层协议、它提供了在网络上的不同计算机之间共享文
    件,打印机和不同通信资料的手段
  • SMB使用NetBIOS API实现面向连接的协议,该协议为Window是客户程序和服务提供了一个
    通过虚链路按照请求——响应方式进行通信的机制
  • SMB的工作原理就是让NetBIOS与SMB协议运行在TCP/IP上,并且使用NetBIOS的名字解释
    器让Linux机器可以在Windows的网络邻居中被看到,从而在Windows的网络邻居中被看到,从而和Windows9x/NT/200X进行相互沟通,共享文件和打印机

CIFS:

  • 通用网际文件系统是微软服务器消息块协议(SMB)的增强版
  • 提供计算机用户在企业内部网和因特网上共享文件的标准方法
  • CIFS在TCP/IP运行,利用英特网上的全球域名服务系统(DNS)增强其可扩展性,同时为因
    特网上普遍存在的慢速拨号连接优化

NetBIOS协议

  • NetBIOS是Network Basic Input/Output System的简称,网络基本输入输出协议。协议,一般指能用于局域网通信的一套API,是由IBM公司开发的。主要作用,通过NetBIOS协议获得计算机名称,然后把计算机名称解析为对应的IP地址

    配置及概念

相关配置

/etc/sysconfig/samba:用于设置守护进程的启动参数。 
/etc/samba/smb.conf:主配置文件。 
/etc/samba/smbusers:用于映射Linux用户和Windows用户。 
/etc/samba/lmhosts:用于设置NetBIOS名字与IP地址的对应关系表。
/etc/pam.d/samba:Samba的PAM配置文件 
/etc/rc.d/init.d/smb:Samba的INIT启动脚本

相关工具

服务端工具: 
  /usr/bin/smbpasswd:用于设置Samba用户账号及口令 
  /usr/bin/testparm:用于检测配置文件的正确性 
  /usr/bin/smbstatus:用于查找网络中的Samba服务器 

客户端工具: 
  /usr/bin/findsmb:用于查找网络中的Samba服务器 
  /usr/bin/smbclient:Linux下的Samba客户端 
  /usr/bin/smbget:基于SMB/CIFS的类似于wget的下载工具 
  /usr/bin/smbtar:类似于tar的归档工具,用于将SMB/CIFS的共享打包备份到Linux主机

安全等级

Samba安全等级: 
  User:由本地Samba服务器负责账户验证,使用smbpasswd 设置账号(默认的安全等级) 
  Domain:账户验证账户及口令的工作由其他的Windows,或Samba域控制器负责,需要使用“password server”指令指定验证服务器 
  Ads:验证账户及口令的工作由支持Kerberos验证的Windows活动目录服务器负责。需要使用“realm”指令指定Kerberos领域 
  Share:匿名共享 
  
Samba账户及口令数据库 
1.Samba使用的账户文件/数据库是与系统账户文件分离的 
2.当设置了user的安全等级后(默认),将由本地系统对问Samba共享资源的用户进行认证 
3.用.tdb格式的口令数据库,初始情况下口令数据库文件并不存在 
4.为了创建Samba的口令数据库文件,管理员可以在添加Samba账户的同时创建它 
5.管理员可以使用smbpasswd命令配置Samba账号并设置其口令

主配置文件

avatar

实验

通过用户名设置共享目录

共享销售部 /xsb 这个目录,只有知道用户名和密码的同时可以看这个共享,在/xsb目录中存放销售部重
要的数据。需要将security设置为user级别,这样可以启用samba身份验证机制,然后在共享目录 /xsb
下设置valid user 字段,配置只允许销售部员工能访问这个共享目录


[root@server1 ~]# vim /etc/samba/smb.conf 
[global]
    workgroup = SAMBA 
    security = user 
    passdb backend = smbpasswd
    smb passwd file = /etc/samba/smbpasswd
    # passdb backend = tdbsam

[root@server1 ~]# systemctl restart smb.service
重启后,会自动生成/etc/samba/smbpasswd文件

添加用户和组,该用户禁止登录,不生成登录目录

[root@server1 ~]# groupadd xsb
[root@server1 ~]# useradd -g xsb -M -s /sbin/nologin xsb001
[root@server1 ~]# useradd -g xsb -M -s /sbin/nologin xsb002
[root@server1 ~]# useradd jsb001

添加对应的samba账户

[root@server1 ~]# smbpasswd -a xsb001
New SMB password:
Retype new SMB password:
Added user xsb001.
[root@server1 ~]# smbpasswd -a xsb002
New SMB password:
Retype new SMB password:
Added user xsb002.

修改配置文件,重启服务

[root@server1 ~]# mkdir /xsb [root@server1 ~]# cp /etc/hosts /xsb [root@server1 ~]# vim /etc/samba/smb.conf 
[xsb] 
    comment = Xsb Data 
    path = /xsb 
    valid user = xsb01,xsb02


[root@server1 ~]# systemctl restart smb.service
[root@server1 ~]# systemctl restart nmb.service
#nmb是做ip与主机名映射用的

检查139和445

[root@server1 ~]# ss -tanl
State       Recv-Q Send-Q Local Address:Port               Peer Address:Port
LISTEN      0      50                *:139                           *:*
LISTEN      0      128               *:22                            *:*
LISTEN      0      100       127.0.0.1:25                            *:*
LISTEN      0      50                *:445                           *:*
LISTEN      0      50               :::139                          :::*
LISTEN      0      128              :::22                           :::*
LISTEN      0      100             ::1:25                           :::*
LISTEN      0      50               :::445                          :::*

验证

linux

[root@server1 ~]# yum install samba-client -y


[root@server1 ~]# smbclient -L //192.168.226.148/xsb -U xsb001
Enter SAMBA\xsb001's password:

        Sharename       Type      Comment
        ---------       ----      -------
        print$          Disk      Printer Drivers
        xsb             Disk      Xsb Data
        IPC$            IPC       IPC Service (Samba 4.10.16)
        xsb001          Disk      Home Directories
Reconnecting with SMB1 for workgroup listing.

windows

win+r 输入\\ip

dos窗口用net user * /delete可以清空用户缓存信息

avatar

巨慢无比....一时半会儿不出来别急

挂载

[root@server1 ~]# mkdir /xsbdata
[root@server1 ~]# yum install cifs-utils -y
vim auth.smb

username=某用户
password=某用户smb密码

vim /etc/fstab
//ip/xsb /xsbdata cifs defaults,credentials=/root/auth.smb 0 0

[root@server1 ~]# mount -a
[root@server1 ~]# df
文件系统                   1K-块    已用     可用 已用% 挂载点
/dev/mapper/centos-root 17811456 1267400 16544056    8% /
devtmpfs                  485792       0   485792    0% /dev
tmpfs                     497960       0   497960    0% /dev/shm
tmpfs                     497960    7852   490108    2% /run
tmpfs                     497960       0   497960    0% /sys/fs/cgroup
/dev/sda1                1038336  135376   902960   14% /boot
tmpfs                      99596       0    99596    0% /run/user/0
//192.168.226.148/xsb   17811456 1267400 16544056    8% /xsbdata

不同账户访问不同目录

创建三个无家目录不能登陆的用户

[root@server1 ~]# useradd -s /sbin/nologin -r smb1
[root@server1 ~]# useradd -s /sbin/nologin -r smb2
[root@server1 ~]# useradd -s /sbin/nologin -r smb3
[root@server1 ~]# smbpasswd -a smb1
New SMB password:
Retype new SMB password:
Added user smb1.
[root@server1 ~]# smbpasswd -a smb2
New SMB password:
Retype new SMB password:
Added user smb2.
[root@server1 ~]# smbpasswd -a smb3
New SMB password:
Retype new SMB password:
Added user smb3.

查看smb账号

[root@server1 ~]# pdbedit -L
xsb001:1000:
xsb002:1001:
smb1:997:
smb2:996:
smb3:995:

修改配置文件

[root@server1 ~]# vim /etc/samba/smb.conf
在workgroup下加一行
config file= /etc/samba/conf.d/%U 说明:%U表示用户名 

[share] #共享文件夹在最后添加 
Path=/data/dir #指定分享文件夹的路径 
Read only= NO #不仅仅是只读 
Guest ok = yes 
write list=@admin 

创建目录,对smb1和smb2创建单独的配置文件


[root@server1 ~]# mkdir /data
[root@server1 ~]# mkdir /data/dir
[root@server1 ~]# mkdir /data/dir1
[root@server1 ~]# mkdir /data/dir2
[root@server1 ~]# mkdir /data/dir/share.txt
[root@server1 ~]# mkdir /data/dir1/smb1.txt
[root@server1 ~]# mkdir /data/dir2/smb2.txt


[root@server1 ~]# mkdir /etc/samba/conf.d

[root@server1 ~]# vim /etc/samba/conf.d/smb1
[share] 
Path=/data/dir1
Read only= NO 等价于writable = yes 
Create mask=0644

[root@server1 conf.d]# vim /etc/samba/conf.d/smb2
[share] 
path=/data/dir2

[root@server1 conf.d]# systemctl restart smb nmb

在客户机上测试

[root@server2 ~]# yum -y install samba-client samba-common cifs-rtils samba

[root@server2 ~]# smbclient //192.168.226.148/share -U smb1%123
Try "help" to get a list of possible commands.
smb: \> ls
  .                                   D        0  Tue Jan 18 15:41:33 2022
  ..                                  D        0  Tue Jan 18 15:41:15 2022
  smb1.txt                            D        0  Tue Jan 18 15:41:33 2022

                17811456 blocks of size 1024. 16543616 blocks available
smb: \> exit
[root@server2 ~]# smbclient //192.168.226.148/share -U smb2%123
Try "help" to get a list of possible commands.
smb: \> ls
  .                                   D        0  Tue Jan 18 15:41:38 2022
  ..                                  D        0  Tue Jan 18 15:41:15 2022
  smb2.txt                            D        0  Tue Jan 18 15:41:38 2022

                17811456 blocks of size 1024. 16543616 blocks available
smb: \> exit
[root@server2 ~]# smbclient //192.168.226.148/share -U smb3%123
Try "help" to get a list of possible commands.
smb: \> ls
  .                                   D        0  Tue Jan 18 15:41:24 2022
  ..                                  D        0  Tue Jan 18 15:41:15 2022
  share.txt                           D        0  Tue Jan 18 15:41:24 2022

                17811456 blocks of size 1024. 16543596 blocks available
smb: \> exit

标签: none

评论已关闭