samba简介

Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。

在此之前我们已经了解了NFS,NFS与samba一样,也是在网络中实现文件共享的一种实现,但不幸的是,其不支持windows平台,而本章要提到的samba是能够在任何支持SMB协议的主机之间共享文件的一种实现,当然也包括windows。

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

SMB协议是C/S型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。

Samba监听端口有:

TCP

UDP

139

445

137

138

tcp端口相对应的服务是smbd服务,其作用是提供对服务器中文件、打印资源的共享访问。
udp端口相对应的服务是nmbd服务,其作用是提供基于NetBIOS主机名称的解析。

samba进程:

进程

对应

nmbd

对应netbios

smbd

对应cifs协议

winbindd + ldap

对应Windows AD活动目录

samba用户:

帐号

密码

都是系统用户

/etc/passwd

Samba服务自有密码文件

通过smbpasswd -a USERNAME命令设置

//smbpasswd命令:
    -a Sys_User     //添加系统用户为samba用户并为其设置密码
    -d              //禁用用户帐号
    -e              //启用用户帐号
    -x              //删除用户帐号
[root@localhost ~]# smbpasswd -a mei
New SMB password:
Retype new SMB password:
Added user mei.

 

Samba安全级别:
Samba服务器的安全级别有三个,分别是user,server,domain

安全级别

作用

user

基于本地的验证

server

由另一台指定的服务器对用户身份进行认证

domain

由域控进行身份验证

以前的samba版本支持的安全级别有四个,分别是share,user,server,domain
share是用来设置匿名访问的,但现在的版本已经不支持share了,但是还是可以实现匿名访问的
只是配置方式变了

samba配置文件:

  • /etc/samba/smb.conf(主配置文件)

samba三大组成

作用

[global]

全局配置,此处的设置项对整个samba服务器都有效

[homes]

宿主目录共享设置,此处用来设置Linux用户的默认共享,对应用户的宿主目录。

当用户访问服务器中与自己用户名同名的共享目录时,通过验证后将会自动映射到该用户的宿主目录中

[printers]

打印机共享设置

常用配置文件参数:

参数

作用

workgroup

表示设置工作组名称

server string

表示描述samba服务器

security

表示设置安全级别,其值可为share、user、server、domain

passdb backend

表示设置共享帐户文件的类型,其值可为tdbsam(tdb数据库文件)、ldapsam(LDAP目录认证)、smbpasswd(兼容旧版本samba密码文件)

comment

表示设置对应共享目录的注释,说明信息,即文件共享名

browseable

表示设置共享是否可见

writable

表示设置目录是否可写

path

表示共享目录的路径

guest ok

表示设置是否所有人均可访问共享目录

public

表示设置是否允许匿名用户访问

write list

表示设置允许写的用户和组,组要用@表示,例如 write list = root,@root

valid users

设置可以访问的用户和组,例如 valid users = root,@root

hosts deny

设置拒绝哪台主机访问,例如 hosts deny = 192.168.72.1

hosts allow

设置允许哪台主机访问,例如 hosts allow = 192.168.72.2

printable

表示设置是否为打印机

//测试配置文件是否有语法错误,以及显示最终生效的配置:使用testparm命令
[root@localhost ~]# testparm
Load smb config files from /etc/samba/smb.conf
Loaded services file OK.
Server role: ROLE_STANDALONE

 

 

配置用户认证共享:

 

先装samba服务器
[root@localhost ~]# yum -y install samba-*

 

映射共享目录:

 

//创建用户mei:
[root@localhost ~]# useradd -M mei
[root@localhost ~]# id mei
uid=1000(mei) gid=1000(mei) groups=1000(mei)

//为mei用户创建smb共享密码:
[root@localhost ~]# smbpasswd -a mei
New SMB password:
Retype new SMB password:
Added user mei.



映射wangqing用户为share用户

[root@localhost ~]# echo 'mei = share' > /etc/samba/smbusers

//在全局配置中添加如下内容:
[root@localhost ~]# vim /etc/samba/smb.conf


[global]
        workgroup = SAMBA
        security = user
        username map = /etc/samba/smbusers      //添加此行内容


//创建一个共享目录mei
[root@localhost ~]# mkdir /opt/mei
[root@localhost ~]# chown -R mei.mei /opt/mei/
[root@localhost ~]# ll /opt/
total 0
drwxr-xr-x. 2 mei mei 6 Apr 5 21:26 mei

 

//配置共享
[root@localhost ~]# cat >> /etc/samba/smb.conf <<EOF
> [mei]
> comment = mei
> path = /opt/mei
> browseable = yes
> guest ok = yes
> writable = yes
> write list = share
> public = yes
> EOF
[root@localhost ~]# tail -8 /etc/samba/smb.conf
[mei]
comment = mei
path = /opt/mei
browseable = yes
guest ok = yes
writable = yes
write list = share
public = yes

 

//启动smb服务
[root@localhost ~]# systemctl start smb nmb
[root@localhost ~]# ss -antl
State       Recv-Q       Send-Q               Local Address:Port               Peer Address:Port       
LISTEN      0            128                        0.0.0.0:22                      0.0.0.0:*          
LISTEN      0            50                         0.0.0.0:445                     0.0.0.0:*          
LISTEN      0            50                         0.0.0.0:139                     0.0.0.0:*          
LISTEN      0            128                           [::]:22                         [::]:*          
LISTEN      0            50                            [::]:445                        [::]:*          
LISTEN      0            50                            [::]:139                        [::]:*

 

关闭防火墙
[root@localhost ~]# systemctl stop firewalld.service 
[root@localhost ~]# setenforce 0

 

 

//在客户机查看samba服务器有哪些共享资源
[root@node2 ~]# smbclient -L 192.168.170.156 -U share
Enter SAMBA\share's password: 

    Sharename       Type      Comment
    ---------       ----      -------
    print$          Disk      Printer Drivers
    mei             Disk      mei
    IPC$            IPC       IPC Service (Samba 4.12.3)
SMB1 disabled -- no workgroup available


//将samba服务器的共享资源mei挂载到客户机本地
[root@node2 ~]# mount -t cifs //192.168.170.156/mei /opt/mmm/ -o username=share,password=123
[root@node2 ~]#  df -h
Filesystem             Size  Used Avail Use% Mounted on
devtmpfs               886M     0  886M   0% /dev
tmpfs                  904M     0  904M   0% /dev/shm
tmpfs                  904M  8.6M  895M   1% /run
tmpfs                  904M     0  904M   0% /sys/fs/cgroup
/dev/mapper/cl-root     17G  2.1G   15G  12% /
/dev/sda1              976M  136M  774M  15% /boot
tmpfs                  181M     0  181M   0% /run/user/0
//192.168.170.156/mei   17G  1.7G   16G  10% /opt/mmm


[root@node2 ~]# cd /opt/mmm/
[root@node2 mmm]# touch 123
[root@node2 mmm]# mkdir hehehe
[root@node2 mmm]# ls
123  hehehe

 

 

//到服务器上验证
[root@localhost ~]# cd /opt/mei/
[root@localhost mei]# ls
123  hehehe

 

 

 

 

 

 

 

配置匿名共享:

//使用yum命令安装samba服务器:
[root@localhost ~]# yum -y install samba-*

//在全局配置中添加如下内容:
[root@localhost ~]# vim /etc/samba/smb.conf
# See smb.conf.example for a more detailed config file or
# read the smb.conf manpage.
# Run 'testparm' to verify the config is correct after
# you modified it.

[global]
        workgroup = SAMBA
        security = user
        map to guest = Bad User      //添加此行内容


//创建一个共享目录biao

[root@localhost ~]# mkdir /opt/biao
[root@localhost ~]# chmod 777 /opt/biao/
[root@localhost ~]# ll /opt/
total 0
drwxrwxrwx. 2 root root  6 Apr  5 22:04 biao
drwxr-xr-x. 3 mei  mei  31 Apr  5 21:41 mei



//配置共享

[root@localhost ~]# cat >> /etc/samba/smb.conf <<EOF
> [biao]
> comment = biao
>  path = /opt/biao
> browseable = yes
> guest ok = yes
> writable = yes
> public = yes
> EOF
[root@localhost ~]#  tail -7 /etc/samba/smb.conf
[biao]
comment = biao
 path = /opt/biao
browseable = yes
guest ok = yes
writable = yes
public = yes




启动服务
[root@localhost ~]# systemctl start smb

 

 

在客户端查看samba服务器有哪些共享资源

[root@node2 ~]#  smbclient -L 192.168.170.156 -U 'Bad User'
Enter SAMBA\Bad User's password:       #这里直接回车,不需要密码

    Sharename       Type      Comment
    ---------       ----      -------
    print$          Disk      Printer Drivers
    mei             Disk      mei
    biao            Disk      biao
    IPC$            IPC       IPC Service (Samba 4.12.3)
SMB1 disabled -- no workgroup available


[root@node2 ~]# mkdir /opt/AAA
[root@node2 ~]# mount -t cifs //192.168.170.156/biao /opt/AAA/ -o username='Bad User'
[root@node2 ~]# df -h
Filesystem              Size  Used Avail Use% Mounted on
devtmpfs                886M     0  886M   0% /dev
tmpfs                   904M     0  904M   0% /dev/shm
tmpfs                   904M  8.6M  895M   1% /run
tmpfs                   904M     0  904M   0% /sys/fs/cgroup
/dev/mapper/cl-root      17G  2.1G   15G  12% /
/dev/sda1               976M  136M  774M  15% /boot
tmpfs                   181M     0  181M   0% /run/user/0
//192.168.170.156/mei    17G  1.7G   16G  10% /opt/mmm
//192.168.170.156/biao   17G  1.7G   16G  10% /opt/AAA

[root@node2 ~]# cd /opt/AAA/
[root@node2 AAA]# ls
[root@node2 AAA]# touch 123
[root@node2 AAA]# mkdir 456
[root@node2 AAA]# ls
123  456

 

在服务端上查看

[root@localhost ~]# cd /opt/biao/
[root@localhost biao]# ls
123  456