Linux Samba服务

Strong 2020年05月08日 477次浏览

Samba服务

1、Samba简介

Samba是著名的开源软件项目之一,它在Linux/UNIX系统中实现了微软的SMB/CIFS网络协议,从而使得跨平台的文件共享变得更加容易。在部署Windows、Linux/UNIX混合平台的企业环境时,选用Samba可以很好地解决不同系统之间的文件互访问题。

SMB协议(Server Message Block 服务消息块协议),它能被用于Web连接和客户端与服务器之间的信息沟通。SMB最初是IBM的贝瑞·费根鲍姆(Barry Feigenbaum)研制的,其目的是将DOS操作系统中的本地文件接口“中断13”改造为网络文件系统。

CIFS协议(Common Internet File System 通用互联网文件系统协议),CIFS是SMB的另一种实现;CIFS 是一个新提出的协议,它使程序可以访问远程Internet计算机上的文件并要求此计算机提供服务。CIFS 使用客户/服务器模式。

在Samba项目出现之前,Windows并不能直接与Linux/UNIX系统进行文件系统共享;Linux中Samba服务使用NetBIOS(网络的基本输入输出系统),来提供浏览服务显示网络上的共享资源列表的功能。

2、Samba服务组成

Samba服务器提供smbd、nmbd两个服务程序,分别完成不同的功能。
smbd:其主要功能就是用来管理Samba服务器上的共享目录、打印机等,主要是针对网络上的共享资源进行管理的服务。当要访问服务器时,要查找共享文件,这时我们就要依靠smbd这个进程来管理数据传输。
nmbd:其功能是进行NetBIOS名解析,并提供浏览服务显示网络上的共享资源列表。

进程对应协议
smbd对应smb/cifs协议
nmbd对应netbios协议
winbindd+ldap对应Windows AD活动目录

3、Samba监听端口

TCPUDP
139137
445138

smbd服务程序负责监听TCP协议的139端口(SMB协议)、445端口(CIFS协议);
nmbd服务程序负责监听UDP协议的137、138端口(NetBIOS协议)。

4、Samba服务配置文件

Samba服务的配置文件位于/etc/samba/目录,其中smb.conf是主配置文件。

smb.conf配置文件分分为三个部分:

  • [global] 全局设置:这部分配置项的内容对整个samba服务器都有效。
  • [homes] 宿主目录共享设置:设置Linux用户的默认共享,对应用户的宿主目录。当用户访问服务器中与自己用户名同名的共享目录时,通过验证后将会自动映射到该用户的家目录中。
  • [printers] 打印机共享设置:若需要共享打印机设备,可以在这部分进行配置。

若需要在smb.conf文件中设置新的共享目录,只需要增加一段如“[myshare]”添加共享设置即可,其中“myshare”为用户自定义的共享名。新的共享文件夹设置可以参考“[homes]”和“[printers]”部分的内容。

4.1 smb.conf常用配置参数

参数作用
workgroup表示设置工作组名称
server string表示描述samba服务器
comment表示设置对应共享目录的注释,说明信息,即文件共享名
path表示共享目录的路径
security表示设置安全级别,其值可为share、user、server、domain
passdb backend表示设置共享帐户文件的类型,其值可为tdbsam(tdb数据库文件)、ldapsam(LDAP目录认证)、smbpasswd(用户名密码,兼容旧版本samba密码文件)
browseable表示是否允许用户看到此共享
public表示设置是否允许匿名用户访问
guest ok表示设置是否所有人均可访问共享目录
valid users设置可以访问的用户和组,例如 valid users = root,@root
hosts deny设置拒绝哪台主机访问,例如 hosts deny = 192.168.72.1
hosts allow设置允许哪台主机访问,例如 hosts allow = 192.168.72.2
read only表示设置目录只读
writable表示设置目录是否可写
write list表示设置允许写的用户和组,组要用@表示,例如 write list = root,@root
printable表示设置是否为打印机

4.2 Samba共享用户

samba服务在使用时需要配置用户名和密码来进行认证,认证的用户可使用系统中的用户也就是/etc/passwd中的用户,为了安全起见并不会使用系统中用户的密码作为认证密码;Samba服务自有密码文件通过smbpasswd -a USERNAME命令设置.

//smbpasswd命令:
    -a Sys_User     //添加系统中的用户为samba用户并为其设置密码
    -d              //禁用samba用户
    -e              //启用samba用户
    -x              //删除samba用户

[root@server ~]# yum -y install samba    //安装samba之后才会有smbpasswd命令
[root@server ~]# useradd hzz
[root@localhost ~]# smbpasswd -a hzz
New SMB password:
Retype new SMB password:
Added user hzz.

5、Samba服务配置

5.1 服务端配置

//关闭防火墙,关闭selinux,永久关闭selinux则修改/etc/selinux/config配置文件
[root@server ~]# systemctl stop firewalld
[root@server ~]# systemctl disable firewalld
[root@server ~]# setenforce 0

//服务端安装samba服务
[root@server ~]# yum - y install samba

//开启服务并设置开机自启
[root@server ~]# systemctl start smb nmb
[root@server ~]# systemctl enable smb nmb
Created symlink from /etc/systemd/system/multi-user.target.wants/smb.service to /usr/lib/systemd/system/smb.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/nmb.service to /usr/lib/systemd/system/nmb.service.

//创建一个共享目录
[root@server ~]# mkdir /hzz

//编辑smb.conf配置文件实现/hzz目录共享
[root@server ~]# vim /etc/samba/smb.conf
[hzz]
        comment = hzz
        path = /hzz
        security = user
        passdb backend = smbpasswd
        browseable = yes
        guest ok = no
        valid users = hzz
        writable = no
        write list = hzz

//配置结束后用testparm命令测试配置文件是否有语法错误
[root@server ~]# testparm 
Load smb config files from /etc/samba/smb.conf
Global parameter security found in service section!
Global parameter passdb backend found in service section!
Loaded services file OK.
Server role: ROLE_STANDALONE

//创建hzz用户,添加至samba共享用户
[root@server ~]# useradd hzz
[root@server ~]# smbpasswd -a hzz
New SMB password:
Retype new SMB password:
Added user hzz.

//给共享目录设置权限
[root@server ~]# setfacl -m u:hzz:rwx /hzz/

//重启服务
[root@server ~]# systemctl restart smb nmb

5.2 客户端配置

//使用交互式数据访问
smbclient -L HOST -U USERNAME                //查询共享资源
smbclient //SERVER/shared_name -U USERNAME   //访问共享资源

//在客户机安装samba-client包
[root@client ~]# yum -y install samba-client

//查看samba服务器有哪些共享资源
[root@client ~]# smbclient -L 172.16.12.128 -U hzz
Enter SAMBA\hzz's password:
Domain=[LOCALHOST] OS=[Windows 6.1] Server=[Samba 4.6.2]

        Sharename       Type      Comment
        ---------       ----      -------
        print$          Disk      Printer Drivers
        IPC$            IPC       IPC Service (Samba 4.6.2)
        tom             Disk      Home Directories
Domain=[LOCALHOST] OS=[Windows 6.1] Server=[Samba 4.6.2]

        Server               Comment
        ---------            -------

        Workgroup            Master
        ---------            -------

//交互式访问某共享资源
[root@client ~]# smbclient //192.168.52.156/hzz -U hzz
Enter SAMBA\hzz's password:
Domain=[LOCALHOST] OS=[Windows 6.1] Server=[Samba 4.6.2]
smb: \> ls
  .                                   D        0  Sat Aug  4 13:52:14 2020
  ..                                  D        0  Sat Aug  4 12:59:42 2020

                17811456 blocks of size 1024. 16665456 blocks available
smb: \> quit    //quit退出


//基于挂载的方式访问
mount -t cifs //SERVER/shared_name /挂载到本地的什么目录 -o username=USERNAME,password=PASSWORD

//安装cifs
[root@client ~]# yum -y install cifs-utils

//创建挂载点,挂载
[root@client ~]# mkdir /mnt/hzz
[root@client ~]# mount -t cifs //192.168.52.156/hzz /mnt/hzz -o username=hzz,password=1

//挂载完成之后查看
[root@client ~]# df -h
文件系统               容量  已用  可用 已用% 挂载点
/dev/mapper/rhel-root   17G  1.1G   16G    6% /
devtmpfs               478M     0  478M    0% /dev
tmpfs                  489M     0  489M    0% /dev/shm
tmpfs                  489M  6.8M  482M    2% /run
tmpfs                  489M     0  489M    0% /sys/fs/cgroup
/dev/sda1             1014M  125M  890M   13% /boot
tmpfs                   98M     0   98M    0% /run/user/0
/dev/sr0               3.8G  3.8G     0  100% /mnt
//192.168.52.156/hzz    17G  5.1G   12G   30% /mnt/hzz/

//永久挂载
[root@client ~]# vim /etc/fstab
//192.168.52.156/hzz /mnt/hzz/ cifs multiuser,username=hzz,password=1,sec=ntlmssp,_netdev 0 0

//挂载查看
[root@client ~]# mount -a
[root@client ~]# df -h
文件系统               容量  已用  可用 已用% 挂载点
/dev/mapper/rhel-root   17G  1.2G   16G    7% /
devtmpfs               901M     0  901M    0% /dev
tmpfs                  912M     0  912M    0% /dev/shm
tmpfs                  912M  8.6M  904M    1% /run
tmpfs                  912M     0  912M    0% /sys/fs/cgroup
/dev/sda1             1014M  143M  872M   15% /boot
tmpfs                  183M     0  183M    0% /run/user/0
//192.168.52.156/hzz    17G  5.1G   12G   30% /mnt/hzz/

5.3 测试

//在客户端进入挂载点,创建文件
[root@client ~]# cd /mnt/hzz
[root@client hzz]# touch a b
[root@client hzz]# ls
a  b

//在服务端查看,文件存在
[root@server ~]# cd /hzz/
[root@server hzz]# ls
a  b