共计 3649 个字符,预计需要花费 10 分钟才能阅读完成。
SAMBA 服务的产生
在早期的网络世界中,档案数据在不同主机之间的传输大多是使用 FTP 服务,但是 FTP 服务传输档案有一些小小的问题,那就是我们无法直接修改主机上面的档案数据,也就是说我们如果想要修改某个档案的数据时,就必须将该档案的服务器下载后才能修改,这样就很麻烦了。其实解决这个问题也很简单,NFS 服务就很好的解决档案数据不能直接修改的问题,因为 NFS 服务是直接将共享目录挂载到客户端的机器上,那么共享目录就好像成了自己的目录一样,共享数据的使用自然就很方便,但是,NFS 也有一些小小的问题,它仅能使 Unix Like 的机器相互分享。那么我要是需要 Windows 与 Unix-Like 这两个不同的平台相互分享呢?那该怎么办?也就是说,FTP 服务实现了跨平台分享,却无法修改共享数据;NFS 解决了共享数据的修改问题,却没办法实现跨平台的共享。所以,SAMBA 服务也就随着需要产生了。它综合了 FTP 和 NFS 的有点,既实现了跨平台的传输,还满足了修改数据的功能。
SAMBA 服务的配置文件
samba 的设定流程
- 服务器整体设定方面:在 smb.conf 当中设定好工作组、NetBIOS 主机名、密码使用状态(无密码分享或 本机密码)等等;
- 规划准备分享的目录参数:在 smb.conf 内设定好预计要分享的目录或装置以及可供使用的账号数据;
- 建立所需要的文件系统: 根据步骤 2 的设定,在 linux 文件系统当中建立好分享出去的档案或装置,以及相关的权限参数
- 建立可用 samba 的账号:根据步骤 2 的设定,建立所需的 linux 实体账号,再一 pdbedit 建立使用的 samba 的密码
- 启动服务:启动 samba 的 smbd,nmbd 服务,开始运转。
samba 服务的配置文件
由上述的设定流程,可以看出 samba 服务的配置文件为服务搭建起到了导向的作用,那么我就先来了解以下 samba 的基础配置。
- smb.conf 继承了.ini 文件的格式,用 [] 分成了不同的部分
- 全局设置:[global] 服务器通用或全局设置的部分
- 特定共享设置:[homes] 用户的家目录共享;[printers] 定义打印机资源和服务;[sharename] 自定义的共享目录配置。
- 宏定义:
符号 | 释义 | 符号 | 释义 |
---|---|---|---|
%m | 客户端主机的 NetBIOS 名 | %M | 客户端主机的 FQDN |
%H | 当前用户家目录路径 | %U | 当前用户的用户名 |
%g | 当前用户所属组 | %h | samba 服务器的主机名 |
%L | samba 服务器的 NetBIOS 名 | %I | 客户端主机的 IP |
%T | 当前的日期和时间 | %S | 可登录的用户名 |
samba 服务器全局配置
- workgroup 指定工作组名称
- server string 主机注释信息
- netbios name 指定 NetBIOS 名
- interfaces 指定服务侦听接口和 ip
- hosts allow 可用“,”,空格,或 tab 分隔,默认允许所有主机访问,也可在每个共享独立配置。
- hosts deny 拒绝指定主机访问
- config file = /etc/samba/conf.d/%U 用户独立的配置文件
- Log level = 2 日志级别,默认为 0,不记录日志
- max log size = 50 日志文件达到 50k,将轮循 rotate,单位 KB
- passdb backend = tdbsam 密码数据库格式
“samba 服务共享目录配置”
- 每个共享目录应该有独立的 [] 部分
- [共享名称] 远程网络看到的共享名称
- comment 注释信息
- path 所共享的目录路径
- public 能否被 guest 访问的共享,默认为 no,和 guest ok 类似
- browsable 是否允许所有用户浏览此共享,默认为 yes,no 为隐藏
- writeable = yes 可以被所有用户读写,默认为 no
- read only = no 和 writeable = yes 等价,如与以上设置发生冲突,放在后面的设置生效,默认只读
- write list 三种形式:用户,@组名(如 writeable=no,列表中用户或组可读写,不在列表中用户只读)
- valid users 特定用户才能访问该共享,如为空,将允许所有用户访问,用户名之间用空格分隔
SAMBA 服务的搭建
基础的 SAMBA 服务搭建
要求:在现有的 Linux 上搭建一个 samba 服务,共享 /app 下的 smbtest 目录。
在搭建服务之前,我们需要预先安装我们需要的软件
- samba:这个软件主要提供了 SMB 服务器所需的各项服务程序(smbd 及 nmbd)以及其他与 SAMBA 相关的 logrotate 配置文件及开机默认选项档案等
- samba-common:这个软件提供的则是服务器与客户端都会使用到的数据,包括 SAMBA 的主要配置文件(smb.conf)、语法检验指令(testparm)等等;
安装完所需的软件之后,我们便可以正式开始搭建 SAMBA 服务了
- 在 samba 服务器上安装 samba 包
yum - y install samba
- 创建 samba 用户和组
groupadd -r team useradd -s /sbin/mologin -G team lsy smbpasswd -a lsy useradd -s /sbin/nologin qjc smbpasswd -a qjc
- 创建 samba 共享目录,并设置 SElinux
mkdir ./app/smbtest chgrp team /app/smbtest setfacl -m g:team:rwx /app/smbtest/ setfacl -m u:qjc:rwx /app/smbtest/ chcon -Rt samba_share_t /app/smbtest
- samba 服务器配置
vim /etc/samba/smb.conf
启动 samba 服务
windows 客户端访问
我在上面的配置文件中简单的设置了,使得 team 组的用户对共享目录有写权限,而其他用户则只可以浏览共享目录,不能修改共享数据,具体访问如下图:
- 客户端登陆
- 以 team 组成员 lsy 身份进入共享目录,则可以在目录中创建,编辑文件
- 再以 qjc 的身份进入共享目录,因为没有写权限,所以只能访问,创建文件会被拒绝
尝试创建新文件时 - 同时我们再服务器端共享目录下,可以查看到 lsy 用户创建的文件
SAMBA 服务实现多用户挂载(仅 CentOS7 支持)
我们仍利用上面已经创建好的共享目录 lishuyang 来进行操作(ps::在生产环境中,创建共享目录,建议使用 LVM)。
服务端:
在服务端,我们还需要创建一个普通 samba 用户 smbbase,作为我们在客户端登陆的拥有较小权限的用户(实现多用户的挂载目的就在于对共享目录获取更大的权限),用户 smbbase 只有浏览共享目录的权限
useradd -s /sbin/nologin smbbase
smbpasswd -a smbbase
客户端
- 安装客户端需要的软件 cifs-utils(系统一般默认安装)
- 编辑文件,将权限较低的 smbbase 用户的账户信息写入
- 创建挂载目录并将共享目录挂载到本地挂载目录上
- 进入 /app/mnt 目录下,可以发现已经进入到了共享目录下,尝试用 smbbase 用户修改文件(smbbase 没有写权限,所以一定被拒绝写入)
- 切换到用户 lsy,执行如下操作
cifscreds add 192.168.100.127
- 尝试修改文件(用户 lsy 拥有写权限,若能修改,则多用户挂载实验成功)
ps: 有几个只需要注意的问题:
1,防火墙要关闭,# service iptables stop
2,注意共享目录的权限设置
3,要设置成不需要用户名密码直接访问,需要修改配置文件,将 security 设置成 security = share。
更多 Samba 相关教程见以下内容:
CentOS 7.2 安装配置 Samba 服务器 https://www.linuxidc.com/Linux/2017-03/141390.htm
VMWare 虚拟机 Ubuntu 双网卡 访问 samba 速度 翻倍 https://www.linuxidc.com/Linux/2013-06/85445.htm
samba 安装使用图解 https://www.linuxidc.com/Linux/2017-03/141254.htm
CentOS7.2 下源码搭建 Samba 文件服务器 [原创] https://www.linuxidc.com/Linux/2017-06/144557.htm
如何在 Ubuntu 16.04 上安装和配置 Samba 服务器以进行文件共享 https://www.linuxidc.com/Linux/2017-11/148194.htm
CentOS 7 下 Samba 服务安装与配置详解 https://www.linuxidc.com/Linux/2017-11/148354.htm
Red Hat 6.5 下 Samba 服务器搭建 https://www.linuxidc.com/Linux/2017-07/145747.htm
如何在 Ubuntu 17.10 上使用 System-Config-Samba https://www.linuxidc.com/Linux/2018-01/150493.htm
: