Centos系统部署samba共享存储

一、samba存储服务简介

#服务简介
SMB(Server Messages Block)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务

#服务端口
ss -ltnup | grep smbd
tcp     LISTEN   0        50               0.0.0.0:445            0.0.0.0:*      users:(("smbd",pid=2504,fd=38))                              
tcp     LISTEN   0        50               0.0.0.0:139            0.0.0.0:*      users:(("smbd",pid=2504,fd=39))                                
tcp     LISTEN   0        50                  [::]:445               [::]:*      users:(("smbd",pid=2504,fd=36))                                                
tcp     LISTEN   0        50                  [::]:139               [::]:*      users:(("smbd",pid=2504,fd=37)) 

#NetBIOS协议
通过NetBIOS协议可以读取windows主机用户名列表、共享目录名列表、级名列表、时间服务类型、MAC地址
windows系统在局域网中共享文件的功能就是利用NetBIOS协议实现的

#应用场景
文件和打印机共享
身份认证和权限认证
名称解析(通过NetBIOS协议实现)

二、samba服务端部署

  • 安装软件
yum install -y samba  
  • 配置文件示例
cat /etc/samba/smb.conf.example
[global]   #全局配置
workgroup = example.com  #Samba服务器所要加入的工作组或者域

server string = Samba Server Version %v  #Samba服务器描述信息(默认输出版本信息)

netbios name = DavidSamba  #Samba服务器计算机名称

interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24  #Samba服务器监听地址

hosts allow = 192.168.1.   #Samba服务器访问白名单(允许192.168.1.0/24网段访问)

hosts deny = 192.168.1.20  #Samba服务器访问黑名单(不允许192.168.1.20访问)

log file = /var/log/samba/log.%m  #Samba服务器日志文件 

max log size = 50  #Samba服务器日志文件切割大小50k

security = user  #Samba服务器安全模式(四种验证方式)                
#share  不需要提供用户名和密码认证(samba3.0以后无效)
#user   基于用户和密码认证
#server 基于Windows NT认证
#domain 基于域控服务器认证

map to guest = bad user  #开启匿名用户访问(samba3.0以后)

passdb backend = tdbsam  #Samba服务器用户后台(三种用户后台)
#smbpasswd                    使用smbpasswd命令为系统用户设置Samba服务程序的密码
#tdbsam                       使用一个数据库文件来建立用户数据库(需要指定密码数据库文件)
#ldapsam:ldap://LDAP Server   使用LDAP的账户管理方式来验证用户

smb passwd file = /etc/samba/smbpasswd  #指定密码数据库文件

username map = /etc/samba/smbusers  #指定用户映射文件(root = administrator admin)


[homes]   #用户目录共享设置
comment = Home Directories
browseable = no
writable = yes
valid users = %S
valid users = MYDOMAIN\%S


[printers] #打印机共享设置
comment = All Printers
path = /var/spool/samba
browseable = no
guest ok = no
writable = no
printable = yes


#自定义配置一个共享资源
[public]             #设置共享名称
comment = public     #备注信息
browseable = yes     #是否允许游览共享内容(no选项可以通过绝对路径URL查看)
path = /public       #设置共享路径(绝对路径)
writable = yes       #是否允许目录读写
write list = user    #设置写入用户(多个用户使用逗号相隔)
write list = @group  #设置写入用户组(多个用户组使用逗号相隔)
public = yes         #是否允许匿名访问(等同于guest ok = yes)
valid users = user   #设置访问用户(多个用户使用逗号相隔)
valid users = @group #设置访问用户组(多个用户组使用逗号相隔)

#testparm命令可以测试smb.conf配置是否正确

#testparm -v命令可以详细的列出smb.conf支持的配置参数
  • 匿名用户访问
#修改配置文件
vim /etc/samba/smb.conf
[global]
workgroup = example.com
security = user
map to guest = bad user

[public]
comment = public 
path = /public
public = yes
writable = yes
browseable = yes

#设置共享目录权限
mkdir /public 
chown nobody -R /public/
chmod 755 -R /public/

#重启共享服务
systemctl restart smb

#实现匿名用户访问共享资源
  • 通过用户名和密码访问
#修改配置文件
vim /etc/samba/smb.conf
[global]
workgroup = example.com
security = user
passdb backend = smbpasswd
smb passwd file = /etc/samba/smbpasswd  #指定密码数据库文件

[public]
comment = public 
path = /public
public = yes
valid users = @smb #使用用户组访问
writable = yes
browseable = yes

#重启共享服务
systemctl restart smb

ll /etc/samba/smbpasswd  #重启服务后会自动创建密码数据库文件
-rw------- 1 root root 0 Feb 19 21:27 /etc/samba/smbpasswd

#管理smb用户相关命令
smbpasswd -a username  #添加用户
smbpasswd -x username  #删除用户
smbpasswd -d username  #禁止用户
smbpasswd -e username  #恢复用户
smbpasswd username     #重置用户密码
pdbedit -L             #列出smb用户(会读取smb密码数据库文件)
pdbedit -Lv            #列出smb用户详细信息

#创建系统用户和用户组
groupadd smb
useradd user1 -g smb -M -s /sbin/nologin
useradd user2 -g smb -M -s /sbin/nologin

#将系统用户添加为smb用户
smbpasswd -a user1
smbpasswd -a user2

cat /etc/samba/smbpasswd #密码信息也是加密的
user1:1001:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:32ED87BDB5FDC5E9CBA88547376818D4:[U          ]:LCT-602FBF25:
user2:1002:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:32ED87BDB5FDC5E9CBA88547376818D4:[U          ]:LCT-602FBF59:

#设置共享目录权限
mkdir /public 
chown :smb -R /public/
chmod g+wr -R /public/

#实现通过user1和user2用户访问共享资源
  • 设置用户映射
#修改配置文件
vim /etc/samba/smb.conf
[global]
workgroup = example.com
security = user
passdb backend = smbpasswd
smb passwd file = /etc/samba/smbpasswd  #指定密码数据库文件
username map = /etc/samba/smbusers      #指定用户映射文件

[public]
comment = public 
path = /public
public = yes
valid users = public #使用用户访问
writable = yes
browseable = yes

#编辑用户映射文件
vim /etc/samba/smbusers
public = test1 test2 

#重启共享服务
systemctl restart smb

#创建系统用户和用户组
useradd public -M -s /sbin/nologin

#将系统用户添加为smb用户
smbpasswd -a public

#设置共享目录权限
mkdir /public 
chown public -R /public/
chmod 755 -R /public/

#实现通过虚拟用户test1和test2访问共享资源(密码使用用户public的)

三、Linux客户端访问samba服务端

  • 使用smbclient命令访问
#安装软件
yum install -y samba-client

#需要验证用户密码
smbclient -L 192.168.1.10 -U test1
Enter EXAMPLE.COM\test1's password: 
	Sharename       Type      Comment
	---------       ----      -------
	print$          Disk      Printer Drivers
	public          Disk      public
	IPC$            IPC       IPC Service (Samba 4.12.3)
SMB1 disabled -- no workgroup available

#不需要验证密码(密码在%后方)
smbclient -L 192.168.1.10 -U test1%1 
	Sharename       Type      Comment
	---------       ----      -------
	print$          Disk      Printer Drivers
	public          Disk      public
	IPC$            IPC       IPC Service (Samba 4.12.3)
SMB1 disabled -- no workgroup available
  • 使用mount命令挂载访问
#安装软件
yum install -y cifs-utils

#参数-t指定挂载类型为cifs
mount -t cifs //192.168.1.10/public /mnt -o user=test1,pass=1 

#mount命令自动选择挂载类型(推荐)
mount -o user=test1,pass=1 //192.168.1.10/public /mnt       

#验证挂载是否成功
df -h
Filesystem             Size  Used Avail Use% Mounted on
devtmpfs               979M     0  979M   0% /dev
tmpfs                  991M     0  991M   0% /dev/shm
tmpfs                  991M  9.6M  981M   1% /run
tmpfs                  991M     0  991M   0% /sys/fs/cgroup
/dev/mapper/vg1-root    18G  2.7G   14G  17% /
/dev/sda1              477M  110M  338M  25% /boot
tmpfs                  199M     0  199M   0% /run/user/0
//192.168.1.10/public  197G   20G  178G  11% /mnt
  • 写入/etc/fstab文件实现永久挂载
#安装软件
yum install -y cifs-utils

#修改配置文件
vim /etc/fstab
//192.168.1.10/public  /mnt   cifs   defaults,user=test1,pass=1,_netdev 0 0  #_netdev声明网络设备(先开启网络服务后再进行挂载本设备)

#验证挂载是否成功
mount -a
  • 使用autofs服务实现自动挂载
#安装软件
yum install -y cifs-utils autofs

#修改主配置文件
vim /etc/auto.master
-    /etc/auto.samba

#修改子配置文件
vim /etc/auto.samba
/mnt  -fstype=cifs,username=test1,password=1  ://192.168.1.10/public

#启动autofs服务
systemctl enable --now autofs.service

四、Windows客户端访问samba服务端

#使用运行访问smb共享资源
\\192.168.1.10

#在文件资源管理器访问smb共享资源
\\192.168.1.10

#Windows清空连接缓存(使用CMD运行下方命令)
net use * /delete   

image-20210220004119191

五、其他博文

Centos系统部署nfs共享存储

猜你喜欢

转载自blog.csdn.net/qq_41938046/article/details/113898374
今日推荐