作者:@郑琰
本文转载请注明出处!:https://www.cnblogs.com/zhengyan6/p/15656824.html
一,samba的基本概念
SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。
Samba服务:是提供基于Linux和Windows的共享文件服务,服务端和客户端都可以是Linux或Windows操作系统。可以基于特定的用户访问,功能比NFS更强大。
- smbd139 提供共享访问
- nmbd445 提供基于域名的访问
二,samba服务搭建步骤
前提条件:
1、确认server和client分别是哪两台主机:
server : rhel7.3
client : windows10
2、实现两台主机的网络互联:
server: 192.168.100.10
ping 192.168.100.1(vmnet ip)
3、确认yum是否可用
| [root@server ~]# yum clean all |
| [root@server ~]# yum repolist |
| 先确认系统镜像是否连入虚拟机光驱(cd/dvd) |
| [root@server ~]#mount /dev/cdrom /media/ |
下载samba服务
[root@server ~]# yum -y install samba*
顺便创建一个标记文件用于实验的访问,并修改权限此标记文件也可为自己需要访问的文件
| [root@server ~]# mkdir -p /opt/samba |
| [root@server samba]# touch flag |
| [root@server samba]# chmod -R o+w /opt/samba |
查看Samba配置目录
| smb.conf -> Samba的主配置文件 |
| smb.conf.example -> Samba的示例文件 |
| [root@server samba]# cd /etc/samba/ |
| [root@server samba]# ls |
| lmhosts smb.conf smb.conf.example |
进行selinux设置,参数于示例文件内
| [root@server samba]#setsebool -P samba_domain_controller on |
| [root@server samba]#setsebool -P samba_enable_home_dirs on |
| [root@server samba]#chcon -t samba_share_t /opt/samba/ |
| [root@server samba]#setsebool -P samba_export_all_rw on |
编辑Samba的主配置文件
| [root@server opt] |
| 加入: |
| [common] |
| comment =common directories |
| path = /opt/samba |
| interfaces = 192.168.100.10/24 |
| hosts allow = 192.168.100. |
| browseable = yes |
| valid users = luna,tom,jeccy |
| write list = luna |
| smb.conf文件的配置内容的含义: |
| [global]:全局设置 |
| [homes]:用户目录共享设置 |
| [printers]:打印机共享设置 |
| [common]:自定义名称的共享目录设置 |
| |
| workgroup:所在工作组名称 |
| security:安全级别,可用值为:share、user、server、domain |
| passwd backend:设置共享账户文件的类型 |
| |
| 注意:Samba服务设置的读取、写入权限,优先级要低于文件系统中设置的权限 |
检测Samba配置文件格式是否正确
[root@server ~]# testparm
创建Samba用户(前提:必须是系统存在的用户)
| [root@server ~]# useradd luna #先创建系统用户 |
| [root@server ~]#useradd tom |
| [root@server ~]# useradd jeccy |
| [root@server ~]#passwd luna |
| [root@server ~]#passwd tom |
| [root@server ~]#passwd jeccy |
| [root@server ~]#smbpasswd -a luna #再创建为Samba用户 |
| [root@server ~]#smbpasswd -a tom |
| [root@server ~]#smbpasswd -a jeccy |
| [root@server ~]#pdbedit -L #查看所有samba用户 |
启动samba服务并设置为开机自启
| [root@server ~]#systemctl restart smb |
| [root@server ~]#systemctl restart nmb |
| [root@server ~]#systemctl enable smb |
| [root@server ~]#systemctl enable nmb |
查看端口
| [root@server ~]#netstat -pant |
关于防火墙
| 如果要进行samba服务访问,则需要关闭防火墙才可进行访问; |
| 命令为: systemctl stop firewalld (关闭防火墙并不安全) |
| 查看防火墙状态命令为: systemctl status firewalld |
| 打开防火墙命令为: systemctl start firewalld |
| 如果不想关闭防火墙服务,可使用firewall-cmd命令添加规则放行服务, |
查看链接(https://www.cnblogs.com/zhengyan6/p/15602877.html) 关于firewall-cmd的使用
三,Client端配置步骤:
Windows作client:
CIFS特点:windows会自动记录上次访问的用户,所以第一次访问的用户,下一次仍旧默认使用该用户访问。
解决用户切换的方法:
进入cmd,输入net use * /del命令,等待若干分钟后,即可切换其他用户登录Samba服务器。
图中IP是另取的,填写自己虚拟机IP

Linux作client:
(1)单用户访问:
方法一:使用Samba的Linux客户端软件访问
| [root@client ~]yum -y install samba-client |
| [root@client ~]smbclient -U tom |
| 或 |
| [root@client ~]smbclient |
| smb: \> mkdir abc #测试tom写权限 |
| smb: \> ls |
| smb: \> |
方法二:使用挂载方式访问
| [root@client ~]mount -t cifs -o username=tom,password=000000 //192.168.100.10/common /mnt |
| |
| [root@client ~]cd /mnt |
| [root@client mnt]ls |
| [root@client mnt]touch abc |
| touch: cannot touch ‘abc’: Permission denied |
(2)多用户访问
| [root@client ~]yum -y install samba-client cifs-utils |
| [root@client ~]mkdir -p /mnt/multi |
| [root@client ~]vim /etc/fstab |
| 于末行添加://192.168.100.10/common /mnt/multi cifs username=tom,password=000000,multiuser,sec=ntlmssp 0 0 |
| [root@client ~]mount -a |
| [root@client ~]cd /mnt/multi |
| [root@client multi]ls |
| [root@client multi]touch abc |
| touch: cannot touch ‘abc’: Permission denied |
| [root@client ~]su - luna(创于client的用户) |
| [luna@client ~]cifscreds add -u luna(server的用户) server |
| [luna@client ~]cd /mnt/multi |
| [luna@client multi]touch abc |
| [luna@client multi]ls |
| abc |
| 如果创不成看看server的共享文件权限 可能samba需要给o+w权限 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)