SMB
基本
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账号并设置其口令
主配置文件
实验
通过用户名设置共享目录
共享销售部 /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可以清空用户缓存信息
巨慢无比....一时半会儿不出来别急
挂载
[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
评论已关闭