Linux-Samba
文章目录
- Samba配置
- 服务配置
🏡作者主页:点击!
🤖Linux专栏:点击!
⏰️创作时间:2024年11月18日13点20分
Samba配置
- Samba是一个能让 Linux 系统应用与 Microsoft 网络通讯协议的软件,SMB服务器消息块
- 最大的功能就是可以用于 Linux 与 Windows 系统直接的文件共享和打印共享,既可以用于 Windows 与 Linux 之间的文件共享也可以用于 Linux 与 Linux 之间的文件共享
- samba在windows下使用的是 NetBIOS协议,要使用 Linux 下共享出来的文件,确认 Windows 系统安装了 NetBIOS 协议
**三个套件:**samba、samba-common、samaba-client
- samba:套件包括了SAMBA的主要 daemon 配置(smdb及nmbd)、SAMBA的文件档、以及其他 SAMBA 相关的 logrotate设定文件及开机预设选项配置等
nmbd用力管理netbios-name、以及工作群组的解析,用到的协议是UDP:137、138端口
使用TCP传输资料,TCP139、445
netbios-name来进行查询服务器,同一个群里中必须是独一无二的- samba-common:这个套件则主要提供了samba的主要配置 smb.conf、smb.conf 语法校验的测试程序等
- samba-client:这个套件则提供了当 Linux 做为 samba Client端时,所需要的工具指令
例如:挂载 samba 配置格式的执行档 smbmount
配置文件
- samba配置文件存放于 /etc/samba,几个主要的配置文件 smb.conf、imhost、smbpasswd
- smb.conf:这个 samba 最主要配置文件,唯一的一个配置文件,分为两部分
global:设定主机功能的项目
sharedir:每个分享出去的目录的属性设定- lmhosts:该配置主要目的在对应 NetBIOS name 与该主机名称的IP
- smbpasswd:是samba存放使用密码对应表文件
#smb.conf配置文件详解 [global] #设置samba服务器的整体环境 workgroup = MYGROUP #指定工作组名称 server string = Samaba Server Version #指定主机解释说明 netbios name = MYSERVER #指定samba默认主机名 hosts allow = 127. 192.168.1. 192.168.2. #允许访问Samba服务器IP地址范围,默认允许所有可以访问 security = user #设置安全等级,user模式需要用户验证,share模式无需验证 [homes] valid users = #指定允许访问用户 invalid users = #指定不允许访问用户 write list = #指定写入用户 read list = #设置只读用户 public list = #是否可以匿名访问
samba常用命令
sambpasswd:设置samba用户密码。常用参数-a,增加smb用户与配置密码 smbclient:查看计算机分享出来的目录与装置。常用参数 “-L” 后面按需要查看的主机IP,-U 后面接登录的用户名 smbmount:将远程主机分享的目录挂载到 Linux 主机上,与 mount 功能类似 testparm:用于测试 samba 的设置是否正确,测试文件 smb.conf,测试无误表示 samba 服务能正常加载该配置
服务配置
dnf install -y samba samba-common samba-client #安装软件 systemctl enable smb #添加道开机启动 systemctl start smb #启动smb服务 systemctl status smb #查看状态 netstat -lantp | grep 139 #查看端口监听状态 netstat -lantp | grep 445 #查看端口监听状态 smbclient -L localhost #查看服务器的共享状态,需要输入 root 用户名和密码 Uos2338341384
mkdir /var/share /var/smb #创建共享目录和smb目录 chmod 777 /var/share /var/smb #更改权限 chown smb:smb /var/smb #更改smb的属主为 smb
useradd smb -M -s /sbin/nologin #不创建家目录和无shell登录权限 smbpasswd -a smb #设置smb用户通过 samba 服务器登录,并设置密码 admin@123 admin@123
# vi /etc/samba/smb.conf # [global] 配置使用户可以通过匿名访问,添加字段:map to guest = Bad User #新建 [share] 访问目录,设置其权限 [share] comment = share path = /var/share guest ok = yes browseable = yes writeable = yes #新建 [smb] 访问目录,设置其权限 [smb] comment = smb path = /var/smb write list = smb broweable = yes writeable = yes read list = smb valid users = smb create mask = 0777
systemctl restart smb systemctl status smb smbclient -L localhost #查看服务器的共享状态,需要输入 root 用户名和密码 Uos2338341384
测试 samba 服务器
- 通过磁盘界面 \\ samba IP \ share 访问目录,无需登陆认证,并且可以创建和删除文件
- 通过 \\ samba IP \ smb 访问目录,需要提供 smb 用户认证信息后,才能打开文件,并且可以成功在目录 smb 中创建文件夹或文件
运维
设置定时任务每天备份数据,使用shell脚本与定时周期任务 crontab 设置对 share 目录的数据归档备份到 smb 目录
创建数据备份脚本 /root/backup.sh
#!/bin/bash mkdir /var/backup #创建临时备份目录 cp -r /var/share/ /var/backup #将共享文件夹数据复制到备份目录 tar -zcPvf /var/smb/backup$(date +%Y%m%d).tar.gz /var/backup #打包共享目录数据到 /var/backup rm -rf /var/backup/ #删除临时备份目录 find /var/smb -mtime +30 -name "*.tar.gz" -exec rm -rf {} \; #删除30天以上的备份数据 :wq chmod +x backup.sh #给脚本设置执行权限 crontab -e #之后输入执行的周期 0 22 * * * sh /root/backup.sh #每天22点00分执行备份脚本一次,备份数据到 smb 目录,保存文件名问当天时间 crontab -l #查看周期执行的任务
日志
- 欧拉系统日志默认保存 /var/log,ls 命令查看 samba 服务日志文件
- 查看 /var/log 目录下 samba 目录的日志文件名:ls -l /var/log/samba
- 显示最后20行日志记录:tail /var/log/samba/log.smbd -n 20
- 查看欧拉系统日志最后20行:tail /var/log/messages
故障及解决方案
- 防火墙问题
- 重启samba服务
- 检查配置错误字段 cd /etc/samba;testparm
- 文件所属组错误:chown smb:smb /var/smb
- 文件权限错误:chmod 777 /var/smb