Samba

简介

SMB(Server Message Block)服务器消息块,IBM发布,最早是DOS网络文件共享协议。

Cifs(Common internet file system),微软基于SMB发布。

NFS不支持windows平台。

samba能在任何支持SMB协议的主机之间共享文件的一种实现,包括windows。由服务端和客户端组成。

功能

共享文件和打印,实现在线编辑;

实现登录samba用户的身份认证

可以进行NetBIOS名称解析

外围设备共享

计算机网络管理模式

工作组workgroup:计算机对等关系,账号信息各自管理

域domain:C/S架构,账号信息集中管理,DC,AD

详解

相关包

Samba   提供smb服务

Samba-client   客户端软件

samba-common   通用软件

cifs-utils   smb客户端工具

samba-winbind   和AD有关

相关服务进程

smbd提供smb(cifs)服务;监听端口TCP 139、445

nmbd提供NetBIOS名称解析;监听端口UDP 137、138

主配置文件

/etc/samba/smb.conf   帮助文档:man smb.conf

/etc/samba/smb.conf.example   配置文件示例

其中

[global]   全局设置

[homes]   用户的家目录共享

[printers]   定义打印机资源和服务

[sharename]   自定义的共享目录

workgroup   指定工作组名称

server string   主机注释信息

netbios name   指定NetBIOS名

interfaces   指定服务侦听接口和IP

host allow   可用逗号 , 和空格  或tab分隔,默认允许所有主机访问,也可在每个共享独立配置,在[global]设置,将应用所有共享配置,如:hosts allow = 172.25.   允许以172.25. 开头的IP访问;host allow = .example.com   允许以 .example.com结尾的主机名访问

host deny   拒绝指定主机访问

config file=/etc/samba/conf.d/%U   用户独立的配置文件

Log file=/var/log/samba/log.%m   不同客户机采用不同日志

max log size=50   日志文件达到50K,将轮询rotate,单位KB

Security三种认证方式:

  • share:匿名(Centos7不再支持)
  • user:samba用户(采用Linux用户,samba独立口令)
  • domain:使用DC(Domain Controller)认证

passdb backend=tdbsam   密码数据库格式

此外还有变量可用:

%m客户端主机的NetBIOS名
%M客户端主机的FQDN
%H当前用户家目录路径
%U当前用户名
%g当前用户所属组
%hsamba服务器主机名
%Lsamba服务器的NetBIOS名
%I客户端主机IP
%T当前日期和时间
%S可登录用户名

自定义目录共享

每个共享目录应该有独立的[]部分

  • [共享名称]   远程网络看到的共享名称
  • comment   注释信息
  • path   所共享的目录路径
  • public   能否被guest访问的共享,默认no
  • browsable   是否允许所有用户浏览此共享目录,默认yes
  • writeable=yes   是否被所有用户读写,默认no
  • read only=no   和writeable=yes等价,如与其冲突,则放在后面的生效,默认只读
  • write list   三种形式:用户,@组名,+组名;用逗号 , 分隔;如writeable=no,列表中的用户或组可读写,不在列表中的只读
  • valid users   特定用户才能访问该共享,如为空,将允许所有用户,用户名之间用空格分隔

语法检查

testparm [-v] [/etc/samba/smb.conf]

客户端工具

smbclient,mount.cifs

管理samba用户

前提:Linux系统中存在该用户,才能在samba中添加用户

添加用户   smbpasswd -a username

修改用户密码   smbpasswd username

删除用户和密码   smbpasswd -x username

查看用户列表   pdbedit -L -v

查看samba服务器状态   smbstatus

实验

基于特定用户和组的共享

smb服务器端(Centos8):192.168.29.149   客户端(Centos8):192.168.29.141

共享目录:/smbshare/aaa

zhangsan:隶属于smb组,允许访问共享目录/smbshare/aaa,不可登陆系统

lisi:不属于smb组,不允许访问共享目录,不可登陆系统

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

#创建组smb;创建用户zhangsan,隶属于smb组。创建用户lisi,不属于smb组,都不可登陆系统
[root@server ~]#groupadd smb
# -s 指定用户的shell  -G 附加组   -M 不建立用户家目录
[root@server ~]#useradd zhangsan -s /sbin/nologin -G smb -M
[root@server ~]#useradd lisi -s /sbin/nologin -M

#创建共享目录/smbshare/aaa,更改其所属目录为smb
[root@server ~]#mkdir /smbshare/aaa
[root@server ~]#chgrp smb /smbshare/aaa/
[root@server ~]#chmod 2755 /smbshare/aaa/
[root@server ~]#touch /smbshare/aaa/123

#创建samba用户
[root@server ~]#smbpasswd -a zhangsan
New SMB password:
Retype new SMB password:
Added user zhangsan.
[root@server ~]#smbpasswd -a lisi
New SMB password:
Retype new SMB password:
Added user lisi.


#编辑smb服务器端配置文件
[root@server ~]#vim /etc/samba/smb.conf
...
[share]
	comment = This is ceshi
	path = /smbshare/aaa
	valid users = @smb
	writeable = no
	browseable = no
...

#重启smb服务
[root@server ~]#systemctl restart smb.service


#客户端
#安装
[root@client ~]#yum -y install samba-client cifs-utils
[root@client ~]#touch 456
#访问smb共享目录  访问共享目录使用share,而不是实际目录/smbshare/aaa
[root@client ~]#smbclient //192.168.29.149/share -U zhangsan
Enter SAMBA\zhangsan's password: 
Try "help" to get a list of possible commands.
smb: \> ls
  .                                   D        0  Thu May 18 16:39:13 2023
  ..                                  D        0  Thu May 18 16:26:47 2023
  123                                 N        0  Thu May 18 16:39:13 2023

		17811456 blocks of size 1024. 15934416 blocks available
smb: \> get 123   #使用get下载
getting file \123 of size 0 as 123 (0.0 KiloBytes/sec) (average 0.0 KiloBytes/sec)
smb: \> put 456   #使用put上传
NT_STATUS_ACCESS_DENIED opening remote file \456


[root@client ~]#smbclient //192.168.29.149/share -U lisi
Enter SAMBA\lisi's password: 
tree connect failed: NT_STATUS_ACCESS_DENIED

如上,当smbclient使用zhangsan进入共享目录后,put /456时提示“NT_STATUS_ACCESS_DENIED opening remote file \456“拒绝访问。

解决

#修改配置文件
[root@server ~]#vim /etc/samba/smb.conf
...
[share]
	comment = This is ceshi
	path = /smbshare/aaa
	valid users = @smb
	writeable = no
	browseable = no
    #给予zhangsan读写权限;当writeable=no时,write list中列出的有读写权限,未列出的只有读
	write list = zhangsan
...

#给予smb组对共享目录的写权限
[root@client ~]#chmod 2775 /smbshare/aaa/

#再次访问,put测试
[root@client ~]#smbclient //192.168.29.149/share -U zhangsan
Enter SAMBA\zhangsan's password: 
Try "help" to get a list of possible commands.
smb: \> ls
  .                                   D        0  Thu May 18 21:00:06 2023
  ..                                  D        0  Thu May 18 16:26:47 2023
  123                                 N        0  Thu May 18 17:43:35 2023

		17811456 blocks of size 1024. 15933200 blocks available
smb: \> put 456 
putting file 456 as \456 (0.0 kb/s) (average 0.0 kb/s)

挂载cifs文件系统

#手动挂载
[root@client ~]#mkdir /mnt/smbzhangsan
[root@client ~]#mount -t cifs -o user=zhangsan,password=admin //192.168.29.149/share /mnt/smbzhangsan
[root@client ~]#df -Th
Filesystem             Type      Size  Used Avail Use% Mounted on
devtmpfs               devtmpfs  379M     0  379M   0% /dev
tmpfs                  tmpfs     396M     0  396M   0% /dev/shm
tmpfs                  tmpfs     396M  5.7M  391M   2% /run
tmpfs                  tmpfs     396M     0  396M   0% /sys/fs/cgroup
/dev/mapper/cl-root    xfs        17G  1.8G   16G  11% /
/dev/nvme0n1p1         ext4      976M  142M  767M  16% /boot
tmpfs                  tmpfs      80M     0   80M   0% /run/user/0
//192.168.29.149/share cifs       17G  1.8G   16G  11% /mnt/smbzhangsan

#自动挂载
[root@client ~]#vim /etc/fstab
//192.168.29.149/share /mnt/smbzhangsan cifs defaults,username=zhangsan,password=admin 0 0

#也可将登录用户的账号密码存储在文件中去读取
[root@client ~]#vim /etc/fstab
//192.168.29.149/share /mnt/smbzhangsan cifs credentials=/etc/smb.txt 0 0

[root@client ~]#df -Th
Filesystem             Type      Size  Used Avail Use% Mounted on
devtmpfs               devtmpfs  379M     0  379M   0% /dev
tmpfs                  tmpfs     396M     0  396M   0% /dev/shm
tmpfs                  tmpfs     396M  5.7M  391M   2% /run
tmpfs                  tmpfs     396M     0  396M   0% /sys/fs/cgroup
/dev/mapper/cl-root    xfs        17G  1.8G   16G  11% /
/dev/nvme0n1p1         ext4      976M  142M  768M  16% /boot
tmpfs                  tmpfs      80M     0   80M   0% /run/user/0
//192.168.29.149/share cifs       17G  1.8G   16G  11% /mnt/smbzhangsan
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值