Linux之SAMBA文件共享服务器
2021/5/5 7:27:43
本文主要是介绍Linux之SAMBA文件共享服务器,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Linux之SAMBA文件共享服务器
- SAMBA服务概述
- SAMBA服务实验
- SAMBA环境准备
- SAMBA软件安装(服务器搭建)
- smb的配置文件
- SAMBA综合案例
- 任务要求
- 解决方案
- 环境配置
- 基于Windows和Linux服务端实现samba服务共享
- 基于Linux和Linux服务端实现samba服务共享
- 总结
SAMBA服务概述
什么是SAMBA?
-
SMB(Server Message Block)协议实现文件共享,也称为CIFS(Common Internet File System )
-
是Windows和类Unix系统之间共享文件的一种协议
-
客户端主要是Windows;支持多节点同时挂载以及并发写入
-
主要用于windows和Linux下的文件共享、打印共享
-
实现匿名与本地用户文件共享
SAMBA主要进程:
-
smbd进程 控制发布共享目录与权限、负责文件传输 、端口: TCP 139 445
-
nmbd进程 用于名称解析netbios 、端口:UDP 137 138 ; 基于NETBIOS协议获得计算机名称——>解析为相应IP地址,实现信息通讯
NetBIOS是Network Basic Input/Output System的简称即网络基础输入输出系统,一般指用于局域网通信的一套API
samba服务遵循两大协议:smb协议-->TCP
和nmb协议-->UDP
SAMBA服务实验
SAMBA环境准备
第一步:从模板机中克隆一台Linux服务器,叫做SAMBA
第二步:更改主机名称与IP地址
# hostnamectl set-hostname samba # su # vim /etc/sysconfig/network-scripts/ifcfg-ens33 BOOTPROTO=none IPADDR=10.1.1.10 NETMASK=255.255.255.0 GATEWAY=10.1.1.2 DNS1=8.8.8.8 DNS2=114.114.114.114 # systemctl restart network 扩展:如果是多张网卡,建议使用"ifdown ens33"以及"ifup ens33"实现重启网络操作
第三步:关闭防火墙与SELinux
# systemctl stop firewalld # systemctl disable firewalld # setenforce 0 # vim /etc/selinux/config SELINUX=disabled
第四步:配置yum源
- 如果有网络情况下可以直接使用官网源,CentOS7中已经加载了国内yum源,如果没网需要挂载镜像源
# yum clean all # yum makecache
SAMBA软件安装(服务器搭建)
第一步:安装samba软件
- SAMBA也是一个C/S架构的软件,Client主要是Windows,samba服务主要用于Windows和Linux系统之间的文件共享
# yum install samba -y => 安装samba服务 # rpm -qa |grep ^samba => 查看安装了哪些软件 [root@samba ~]# rpm -qa |grep ^samba samba-common-tools-4.10.16-13.el7_9.x86_64 samba-common-4.10.16-13.el7_9.noarch samba-client-libs-4.10.16-13.el7_9.x86_64 samba-common-libs-4.10.16-13.el7_9.x86_64 # samba-4.10.16-13.el7_9.x86_64 => 服务器端 samba-libs-4.10.16-13.el7_9.x86_64 samba-client-4.10.16-13.el7_9.x86_64
smb的配置文件
- samba服务配置文件默认已经设置好了,我们只需要编写共享名称选项即可
# vim /etc/samba/smb.conf => 打开samba服务配置 #l [global] => 全局选项,所有samba配置都需要遵循的配置 workgroup = MYGROUP => 定义samba服务器所在的工作组 security = user => 认证模式:share匿名|user用户密码|server外部服务器用户密码 max log size = 50 => 日志的最大大小KB log file = /var/log/samba/log.%m = 日志文件 passdb backend = tdbsam => 密码格式,代表tdbsam格式的 server string = Samba Server Version %v => smb服务的描述 load printers = yes => 是否加载打印机 cups options = raw => 代表打印机的选项 #l [homes] => 局部选项(共享名称) comment = Home Directories => 描述 browseable = no => 代表隐藏共享名称 writable = yes => 如果共享有目录代表可读可写 #l [printers] => 共享名称 comment = All Printers => 描述 path = /var/spool/samba => 本地的共享目录 browseable = no => 隐藏,代表是否隐藏共享名称 guest ok = no ——> public = no => no代表需要帐号和密码访问,有两种写法 writable = no ——> read only =yes => no代表不可写和只读,有两种写法 printable = yes => 打印选项 自己编辑samba共享名称配置文件 #l [share] => 共享名称 path = /dir1 => 共享路径 guest ok = no => 需要账号密码访问 writable = yes => 可写
samba默认配置文件:
[root@samba ~]# 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 passdb backend = tdbsam printing = cups printcap name = cups load printers = yes cups options = raw [homes] comment = Home Directories valid users = %S, %D%w%S browseable = No read only = No inherit acls = Yes [printers] comment = All Printers path = /var/tmp printable = Yes create mask = 0600 browseable = No [print$] comment = Printer Drivers path = /var/lib/samba/drivers write list = @printadmin root force group = @printadmin create mask = 0664 directory mask = 0775
SAMBA综合案例
任务要求
搭建一个SAMBA服务,共享一个目录/samba/share,客户端使用user01/123通过windows或者Linux可以在该目录里创建文件删除文件
解决方案
环境配置
第一步:SAMBA服务器环境准备
更改主机名称、IP地址、关闭防火墙、SELinux、配置YUM源
第二步:安装SAMBA软件
# yum install samba -y => 安装samba服务软件 # rpm -aq|grep ^samba => 查看安装了哪些samba服务软件
第三步:查询SAMBA生成文件列表(rpm -ql)
- 因为samba服务遵循两大协议:
smb协议-->TCP
和nmb协议-->UDP
- 所用有
smb.service
和nmb.service
两个服务
# rpm -ql samba => 查询SAMBA生成文件列表 /usr/sbin/smbd => 二进制文件,代表命令 /usr/sbin/nmbd => 二进制文件,代表命令 /usr/lib/systemd/system/smb.service => smb服务 /usr/lib/systemd/system/nmb.service => nmb服务 #l 备注:有了这两个服务就可以通过systemctl start|restart|stop 服务 进行管理
第四步:在服务器端创建一个共享目录
# mkdir /samba/share -p
第五步:编辑/etc/smb.conf配置文件,实现SAMBA共享
- 原有配置选项不动,在配置文件最下方编辑共享目录
# vim /etc/samba/smb.conf ... [smb_share] => 共享名称 comment = samba service => 备注信息,可有可无 path = /samba/share => 共享目录 guest ok = no => 代表需要账号密码登录 writable = yes => 代表此共享目录可读可写 或者 [samba_share] => 共享名称 path = /samba/share public = no writable = yes #l 备注: guest ok === public 两者等价 writable代表可读可写
第六步:创建一个user01用户,然后添加到samba认证中,设置密码为123
- 以下操作完成后,则SAMBA服务中增加了一个user01的账号及密码123
# useradd user01 => 创建账号 # which smbpasswd => 查询smb密码命令创建目录 [root@samba ~]# which smbpasswd /usr/bin/smbpasswd # smbpasswd -a user01 => -a代表add,给smb服务增加一个账号且设置密码 New SMB password:123 Retype new SMB password:123 Added user user01. => 这个信息代表增加成功
第七步:启动nmb与smb服务
# systemctl start nmb # systemctl start smb
基于Windows和Linux服务端实现samba服务共享
第一步:安装samba客户端
-
控制面板 => 程序和功能 => 打开或关闭Windows功能
-
找到以下两个选项进行安装
第二步:进入计算机(我的电脑),找到映射网络驱动器
- 指定驱动器(随意选择一个)输入:
\\SAMBA服务器IP\共享目录标签
- 然后输入账号密码即可
第三步:通过acl策略给user01用户于samba共享目录可读可写可执行权限
-
挂载完成后,目录不可写?答:主要原因在于/samba/share目录没有写入权限
-
就可以对/samba/share 目录拥有上传下载权限
# setfacl -m u:user01:rwx /samba/share
基于Linux和Linux服务端实现samba服务共享
第一步:基于Linux或Linux实现文件共享
- 安装samba客户端
- 利用smbclient命令查看目录信息
# smbclient -L 10.1.1.10 -U user01 => 查看目录信息 [root@client ~]# smbclient -L 10.1.1.11 -U user01 Enter SAMBA\user01's password: Sharename Type Comment --------- ---- ------- print$ Disk Printer Drivers # smb_share Disk samba service => 磁盘类型的共享目录 IPC$ IPC IPC Service (Samba 4.10.16) user01 Disk Home Directories Reconnecting with SMB1 for workgroup listing. Server Comment --------- ------- SAMBA Samba 4.10.16 Workgroup Master --------- ------- SAMBA SAMBA 注意:需要输入user01用户密码
- 使用smbclient查看目录信息
- 当不可写时,利用ACL命令增加用户权限即可
# smbclient //10.1.1.10/smb_share -U user01
第二步:把SAMBA挂载到Linux系统(类似NFS)
# mkdir /u01 => Linux客户端创建挂载目录 # mount.cifs -o user=user01,pass=123 //10.1.1.10/smb_share /u01 => 挂载
访问控制说明:
控制读写权限 writable = yes/no readonly = yes/no 如果资源可写,但只允许某些用户可写,其他都是只读 write list = admin, root, @staff(用户组) read list = mary, @students 控制访问对象 valid users = tom,mary,@itcast invalid users = tom 注意:以上两个选项只能存在其中一个 网络访问控制: hosts deny = 192.168.0. 拒绝某个网段 hosts allow = 192.168.0.254 允许某个IP hosts deny = all 拒绝所有 hosts allow = 192.168.0. EXCEPT 192.168.0.254 允许某个网段,但拒绝某个单个IP 注意:deny和allow同时存在,allow优先
总结
1. ftp 局域网和外网都可以
2. nfs 局域网 挂载方式访问 mount.nfs 侧重于Linux与Linux之间
3. samba 局域网 直接访问(smbclinet)挂载的方式mount.cifs 侧重于Windows与Linux之间
这篇关于Linux之SAMBA文件共享服务器的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23linux 系统宝塔查看网站访问的命令是什么?-icode9专业技术文章分享
- 2024-11-12如何创建可引导的 ESXi USB 安装介质 (macOS, Linux, Windows)
- 2024-11-08linux的 vi编辑器中搜索关键字有哪些常用的命令和技巧?-icode9专业技术文章分享
- 2024-11-08在 Linux 的 vi 或 vim 编辑器中什么命令可以直接跳到文件的结尾?-icode9专业技术文章分享
- 2024-10-22原生鸿蒙操作系统HarmonyOS NEXT(HarmonyOS 5)正式发布
- 2024-10-18操作系统入门教程:新手必看的基本操作指南
- 2024-10-18初学者必看:操作系统入门全攻略
- 2024-10-17操作系统入门教程:轻松掌握操作系统基础知识
- 2024-09-11Linux部署Scrapy学习:入门级指南
- 2024-09-11Linux部署Scrapy:入门级指南