SAMBA的功能:

  • 共享文件和打印,实现在线编辑
  • 实现登录SAMBA用户的身份认证
  • 可以进行NetBIOS名称解析
  • 外围设备共享

samba服务端配置

PS:关闭防火墙和selinux

管理SAMBA用户

添加用户

[root@server ~]# useradd -r -s /sbin/nologin smb1
#添加系统用户
[root@server ~]# smbpasswd -a smb1
New SMB password:
Retype new SMB password:
Added user smb1.
#把系统账号加入samba账号
[root@server ~]# pdbedit -a -u smb1
# 这个是pdbedit工具的使用,与smbpasswd的用途相同

修改密码

[root@server ~]# smbpasswd smb1

删除用户和密码

[root@server ~]# smbpasswd -x smb1
[root@server ~]# pdbedit -x -u smb1

查看samba用户列表

[root@server ~]# pdbedit -L -v

下载samba

[root@server ~]# yum install -y samba
[root@server ~]# yum install -y samba-common-tools
[root@server ~]# smbstatus
#查看samba服务器状态

修改配置文件

[root@server ~]# vim /etc/samba/smb.conf
#最后追加

[share]
path = /app/dir    #此为共享的目录
vaild user=smb1,@smb1
writeable = no
#read only=no        #和writable=yes等价
browseable = yes

[root@server ~]# mkdir -p /app/dir
[root@server ~]# systemctl restart smb

在本机电脑中访问

想要在电脑中直接访问和创建文件

[root@server ~]# vim /etc/samba/smb.conf

[share]
path = /app/dir   
vaild user=smb1,@smb1
writeable = yes      #修改此行       
browseable = yes
[root@server ~]# cd /app  
[root@server ~]# chmod a+w  dir
#可以在share中直接建立文件123.txt

samba客户端配置

PS:关闭防火墙和selinux

下载samba

[root@client ~]# yum -y install samba
[root@client ~]# yum -y install samba-client
[root@client ~]# systemctl start smb
[root@client ~]# systemctl start nmb

使用smbclient 访问SAMBA服务器

[root@client ~]# smbclient -L //192.168.106.10/share -U smb1
[root@client ~]# smbclient  //192.168.106.10/share -U smb1
smb: \> ls
smb: \> get 123.txt /root
#可以直接操作下载文件

手动挂载

[root@client ~]# yum -y install cifs-utils
[root@client ~]# mkdir /mnt/smb
[root@client ~]# mount -o user=smb1,password=123456 //192.168.106.10/share /mnt/smb
[root@client ~]# df -f
#查看挂载
[root@client ~]# cd /mnt/smb | ll
#可以查看到server的文件

通过用户名共享文件

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

修改配置文件(服务端)

[root@server ~]# vim /etc/samba/smb.conf

#[share]   #把之前的添加的[share]都#了
[global]
        workgroup = SAMBA
        security = user
        passdb backend = smbpasswd
        smb passwd file = /etc/samba/smbpasswd     #xsb组内共享的文件
        printing = cups
        printcap name = cups
        load printers = yes
        cups options = raw

[root@server ~]# systemctl restart smb
[root@server ~]# ll /etc/samba/smbpasswd

添加销售部用户和组和相应的samba账户

[root@server ~]# groupadd xsb
[root@server ~]# useradd -g xsb -M -s /sbin/nologin xsb01
[root@server ~]# useradd -g xsb -M -s /sbin/nologin xsb02
[root@server ~]# useradd jsb01#无法共享文件的用户
[root@server ~]# smbpasswd -a xsb01
New SMB password:
Retype new SMB password:
Added user xsb01.
[root@server ~]# smbpasswd -a xsb02
New SMB password:
Retype new SMB password:
Added user xsb02.

创建共享目录

[root@server ~]# mkdir /xsb
[root@server ~]# echo '123456' >/xsb/importantfile.txt
[root@server ~]# vim /etc/samba/smb.conf

[xsb]
comment = 销售部重要文件     #此为文字描述
path = /xsb
valid user = xsb01 xsb02
#valid user = xsb01,@xsb

[root@server ~]# systemctl restart smb nmb

使用smbclient 访问SAMBA服务器

[root@client ~]# smbclient -L //192.168.106.10/xsb -U xsb01
[root@client ~]# smbclient  //192.168.106.10/xsb -U xsb01
smb: \>ls

手动挂载

[root@client ~]# mkdir /xsbdata
[root@client ~]# vim auth.smb
#用户账号密码

username=xsb01
password=123456

[root@client ~]# vim /etc/fstab

//192.168.106.10/xsb  /xsbdata  cifs  defaults,credentials=/root/auth.smb 0 0

[root@client ~]# mount -a
[root@client ~]# df -h
#查看挂载

不同账户访问不同目录

创建系统用户

[root@server ~]# useradd -s /sbin/nologin -r smb1   #加选项-r 不创建家目录
[root@server ~]# useradd -s /sbin/nologin -r smb2
[root@server ~]# useradd -s /sbin/nologin -r smb3

创建smb用户

[root@server ~]# smbpasswd -a smb1       
[root@server ~]# smbpasswd -a smb2
[root@server ~]# smbpasswd -a smb3
[root@server ~]# pdbedit -L    #查看samba账号
smb1:995:
smb3:993:
smb2:994:

修改配置文件

[root@server ~]# vim /etc/samba/smb.conf
#在[global]的workgroup下加一行 

config file= /etc/samba/conf.d/%U 说明:%U表示用户名  #这个步骤为关键步骤
[share]               #共享文件夹在最后添加
    Path=/data/dir        #指定分享文件夹的路径
    writeable = yes
    browseable = yes       
    Guest ok=yes        #是否所有人可见,等同于"public"参数。

创建共享目录

[root@server ~]# mkdir -p /data/dir
[root@server ~]# mkdir -p /data/dir1
[root@server ~]# mkdir -p /data/dir2
[root@server ~]# touch /data/dir/share.txt  #新建共享文件,没有创建特定文件的smb3会访问这个
[root@server ~]# touch /data/dir1/smb1.txt  #新建给smb1用户访问特定文件
[root@server ~]# touch /data/dir2/smb2.txt  #新建给smb2用户访问特定文件
[root@server ~]# mkdir /etc/samba/conf.d/ -p
[root@server ~]# vim /etc/samba/conf.d/smb1  
#配置特定文件的访问目录

[share]
Path=/data/dir1

[root@server ~]# vim /etc/samba/conf.d/smb2

[share]
path=/data/dir2

[root@server ~]# systemctl restart smb nmb 

使用smbclient 访问SAMBA服务器

不同用户访问的文件不同

[root@client ~]# smbclient  //192.168.106.10/share -U smb1
Enter SAMBA\smb1's password:
Try "help" to get a list of possible commands.
smb: \> ls
  .                                   D        0  Fri Sep 22 14:38:28 2023
  ..                                  D        0  Fri Sep 22 14:37:43 2023
  smb1.txt                            N        0  Fri Sep 22 14:38:28 2023

                17811456 blocks of size 1024. 13225324 blocks available

[root@client ~]# smbclient  //192.168.106.10/share -U smb2
Enter SAMBA\smb2's password:
Try "help" to get a list of possible commands.
smb: \> ls
  .                                   D        0  Fri Sep 22 14:38:37 2023
  ..                                  D        0  Fri Sep 22 14:37:43 2023
  smb2.txt                            N        0  Fri Sep 22 14:38:37 2023

                17811456 blocks of size 1024. 13225304 blocks available

[root@client ~]# smbclient  //192.168.106.10/share -U smb3
Enter SAMBA\smb3's password:
Try "help" to get a list of possible commands.
smb: \> ls
  .                                   D        0  Fri Sep 22 14:38:16 2023
  ..                                  D        0  Fri Sep 22 14:37:43 2023
  share.txt                           N        0  Fri Sep 22 14:38:16 2023

                17811456 blocks of size 1024. 13225324 blocks available