一、配置文件详解

Samba配置文件非常简洁明了,所有的设置都在 /etc/samba/smb.conf 配置文件中进行,通过对该配置文件的修改,可以将Samba配置为一台匿名文件服务器、基于账户的文件服务器或打印服务器,默认情况下,Samba会已开启本地账号家目录共享与打印机共享,配置文件中以#或;符号开头的行为注释行,配置文件分为若干段,除了global(全局配置段)之外的其余所有段用来描述共享资源,全局段中的配置代表全局有效,是全局的默认设置。但如果全局配置段中的设置项与共享段中的设置项有冲突,则共享设置段中的设置为实际有效值。下面具体说明配置文件中各个配置选项的含义。

配置 说明
[global] 定义全局策略
workgroup = MYGROUP 定义工作组
server string = Samba Server Version %v 服务器提示字串,默认显示samba版本,建议修改默认值以防止针对版本的网络攻击
;interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24 如果你的服务器有多个网络接口,可以通过interfaces选项指定Samba监听哪些网络接口 
;hosts allow = 127. 192.168.12. 192.168.13.  EXCEPT 192.168.13.13 hosts allow指定仅允许哪些主机有权访问Samba服务器资源,该参数可以放置在全局段也可以放置在共享段。与此相反的选项是hosts deny,用来设置黑名单列表,这里可以指定允许访问的主机名、IP地址或网段,当指定网段时可以使用192.168.12.或192.168.12.0/255.255.255.0两种格式,使用EXCEPT可以指定例外的IP地址
log file = /var/log/samba/log.%m

定义日志文件,因为使用了Samba变量%m,所以每个访问共享的主机会产生独立的日志文件,%m会被替换为客户端的主机名

max log size = 50 定义日志单个文件最大容量为50KB
security = user

设置security选项将影响客户端访问samba的方式,是非常重要的设置选项之一。security可以被设置为uesr、share、server或domain,user代表通过用户名、密码验证访问者的身份,账户需要是服务器本机系统账户;share代表匿名访问;server代表基于验证身份的访问,但账户信息保存在另一台SMB服务器上;domain同样是基于验证的访问,账户信息保存在活动目录中

passdb backend = tdbsam

账户与密码的存储方式,smbpasswd代表使用老的明文格式存储账户及密码;tdbsam代表基于TDB的密文格式存储;ldapsam代表使用LDAP存储账户资料

deadtime = 10

客户端在10分钟内没有打开任何Samba资源,服务器将自动关闭会话,在大量的并发访问环境中,这样的设置可以提高服务器性能

display charset = UTF8 设置显示使用的字符集为UTF8
max connections = 0 设置最大连接数,0代表无限制,若设置该规则超过此限制的连接请求服务器将拒绝连接
guest account = nobody 设置匿名账号为nobody
load printers = yes 是否共享打印机
cups options = raw 打印属性
[homes] 共享名称
comment = Home Directories 注释,共享的描述信息 
browseable = no 共享目录是否可以被浏览
writable = yes 共享目录是否可以进行写操作
comment = All Printers 打印机共享
path = /var/spool/samba 打印机共享池
browseable = no  
guest ok = no  
writable = no  
printable = yes  
[common] 共享名称为common
comment = Common share 注释,共享描述信息 
path = /common 重要,指定共享路径
valid users = tom jerry 有效账户列表
create mask = 0750 客户端上传文件的默认权限,默认为0744
directory mask = 0775 客户端创建目录的默认权限,默认为0755
browseable = yes 共享目录是否对所有人可见(yes或no)
writable = no 不允许写入操作
write list = tom 写权限账户列表,这里设置tom可写
admin users = tom 该共享的管理员,具有完全权限
invalid users = root bin 禁止root与bin访问common共享
guest ok = no 是否允许匿名访问,仅当全局设置 security=share时有效(yes或no)

二、Samba应用案例

ABC是一家网站设计公司,公司下有商务部、页面设计部、开发部、运维部四个部门,商务部门负责与客户沟通并调研客户需求,为客户制定网站建设方案。页面设计部门根据商务部与客户的沟通记录与调研报告,确定主页设计风格与方案。网站设计具体方案经客户审核确认后提交开发部完成网站代码的编写,向客户提交完成后的网站,待客户确认后上传公司服务器由运维部门负责网站的运行维护工作。根据这些信息可以看出该公司部门之间的衔接是非常密切的,部门之间有大量的数据需要共享,为了加强部门之间互联互通,优化工作流程与效率,ABC公司决定部署一台Samba服务器,满足部门间可快速共享数据的需求,从而实现流水线办公流程。

1. 创建目录结构

共享数据首先需要创建用于共享的目录。根据ABC公司的情况,可以为该例创建五个一级目录和四个部门共享目录,共享目录仅对部门内部员工共享数据,每个部门员工可以在相应的部门共享目录下创建自己的个人目录与文件;另一个公共共享目录,用于所有的部门之间相互访问彼此的数据使用,在公共共享目录下为每个部门创建每个部门的共享子目录。

/ABC/sales目录为商务部共享目录,/ABC/design目录为设计部共享目录,/ABC/develop目录为开发部共享目录,/ABC/ops目录为运维部共享目录。另外,/ABC/share目录为整个公司的公共共享目录,用于部门间的数据共享,会在该目录下为每个部门创建对应的子目录。

mkdir -p /ABC/{sales,design,develop,ops,share/{sales,design,develop,ops}}

tree /ABC/

2. 添加账户

为了提升安全性,公司要求所有的员工访问共享时都必须使用账户名和密码。初始状态下,为每个部门创建两个账户,并创建所有共享目录的管理员,以便后期管理员可以根据公司发展情况添加或删除账户信息。下面通过脚本创建部门初始账户。

#!/bin/bash
#Add users for share DEPART=(sales design develop ops)
for g in ${DEPART[@]}
do
groupadd $g
for u in $(seq )
do
useradd -M -s /sbin/nologin -g ${g} ${g}$u
done
done

chmod +x user.sh

./user.sh

smbpasswd -a sales1

smbpasswd -a sales2

其他账户按照此模板逐个添加即可

3. 配置文件

创建完共享目录及系统账户后,还需要修改Samba主配置文件,在配置文件中加入需要共享的目录信息以及相应权限的设置。下面是 /etc/samba/smb.conf 文件修改后的具体配置清单。

[global]
workgroup = SAMBA
security = user

passdb backend = tdbsam

printing = cups
printcap name = cups
load printers = yes
cups options = raw

[home]
comment = Home Directories
browseable = no
writable = yes
[sales]
comment = sales share
path = /ABC/sales
browseable = yes
guest ok = no
writable = no
write list = @sales

[design]
comment = design share
path = /ABC/design
browseable = yes
guest ok = no
writable = no
write list = @design
[develop]
comment = develop share
path = /ABC/develop
browseable = yes
guest ok = no
writable = no
write list = @develop
[ops]
comment = ops share
path = /ABC/ops
browseable = yes
guest ok = no
writable = no
write list = @ops
[share]
comment = common share
path = /ABC/share
browseable = yes
guest ok = no
writable = yes

4. 修改权限

为了使员工访问服务器共享资料后,可以在属于自己的对应目录下创建文件与目录,除了要在Samba主配置文件中定义权限设置外,还需要为系统目录修改正确的权限。

chmod 1770 /ABC/{design,develop,ops,sales}   # 添加了sticky权限

chmod 1777 /ABC/share

chown :design /ABC/design

chown :develop /ABC/develop

chown :ops /ABC/ops

chown :sales /ABC/sales

5. 重启Samba服务

systemctl restart smb

在配置Samba时,需要在Windows连接测试,而一个账号输入一遍后就记住了,想更换用户时,需要在cmd下清除 Windows Samba 登录帐号记录,命令如下:

net use     # 显示当前正在使用的网络服务

net use * /del   # 删除所有连接的网路服务

本文参考自:丁明一    编著    《Linux运维之道》

Samba应用案例的更多相关文章

  1. Samba.conf案例 Ubuntu

    # Sample configuration file for the Samba suite for Debian GNU/Linux.## This is the main Samba confi ...

  2. Samba服务器配置案例

      一.项目背景 某公司有system.develop.productdesign和test等4个小组,个人办公机操作系统为Windows 2000/XP/2003,少数开发人员采用Linux操作系统 ...

  3. Linux 学习笔记_12_Windows与Linux文件共享服务_1.1_--Samba(下)Samba经典应用案例

    五.[Samba应用案例二] 设置Samba共享目录/software,允许用户jack和mary可以通过Windows客户端访问,并具有读写权限. 1.创建目录/software,添加用户jack, ...

  4. Linux运维之道(大量经典案例、问题分析,运维案头书,红帽推荐)

    Linux运维之道(大量经典案例.问题分析,运维案头书,红帽推荐) 丁明一 编   ISBN 978-7-121-21877-4 2014年1月出版 定价:69.00元 448页 16开 编辑推荐 1 ...

  5. Linux Samba服务器的安装

    Samba最大的功能就是可以用于Linux与windows系统直接的文件共享和打印共享,也可以用于Linux与Linux之间的资源共享 安装 # yum install samba samba-cli ...

  6. 工程师技术(六):Linux工程师 综合测试

    一.Linux工程师 综合测试 目标: 根据本文提供的练习步骤完成所有练习案例. 方案: 开始练习之前,先依次重置虚拟机环境. [root@room9pc13 ~]# rht-vmctl  reset ...

  7. Samba共享目录的多用户权限设置案例

    下面根据实际工作中遇到的一个共享目录的多用户权限需求案例来说明下Samba用户权限的设置. 一.需求场景领导:李一(liyi)正式员工(zhengshiyuangong):刘二二(liuerer).于 ...

  8. Linux Samba文件共享服务,安装与案例配置

    Samba服务器安装和配置 1:安装Samba服务器软件包 [root@localhost ~]# rpm -qa | grep samba [root@localhost ~]# yum -y in ...

  9. 【DDD/CQRS/微服务架构案例】在Ubuntu 14.04.4 LTS中运行WeText项目的服务端

    在<WeText项目:一个基于.NET实现的DDD.CQRS与微服务架构的演示案例>文章中,我介绍了自己用Visual Studio 2015(C# 6.0 with .NET Frame ...

随机推荐

  1. c语言线程中传输多个参数

    前言:c语言中创建一条线程,但是需要传送多个参数给线程的话我们自然会想到通过传送数组或者结构体来实现,下面我们来看看如何在创建线程的时候传送结构体和数组. #include <stdio.h&g ...

  2. [LeetCode] 103. Binary Tree Zigzag Level Order Traversal 二叉树的之字形层序遍历

    Given a binary tree, return the zigzag level order traversal of its nodes' values. (ie, from left to ...

  3. Java软件生产监控工具Btrace的使用

    Btrace BTrace是sun公司推出的一款Java 动态.安全追踪(监控)工具,可以在不用重启的情况下监控系统运行情况,方便的获取程序运行时的数据信息,如方法参数.返回值.全局变量和堆栈信息等, ...

  4. Beta冲刺(7/7)——2019.5.29

    作业描述 课程 软件工程1916|W(福州大学) 团队名称 修!咻咻! 作业要求 项目Alpha冲刺(团队) 团队目标 切实可行的计算机协会维修预约平台 开发工具 Eclipse 团队信息 队员学号 ...

  5. 查看linux中某个端口port是否被利用

    (1)lsof -i:端口号查看某个端口是否被占用 (2)netstat -an|grep 80 netstat -- show network status (3)杀掉进程 kill pid 注意: ...

  6. PHP curl cookie不识别

    PHP curl cookie不识别 所以curl的时候别用setcookie 用了也没用

  7. php 500报错解决方案

    php 500报错解决方案 1 先看nginx error.log 指定的错误日记文件路径 找到这个日记文件看 里面信息 2 再看 php-fpm.conf 里面指定的PHP错误日记的路径 具体如下& ...

  8. Lsyncd实时同步搭建指南

    linux文件实时同步: inotify+rsync.sersync.lsyncd工具比较 一.inotify + rsync 最近一直在寻求生产服务服务器上的同步替代方案,原先使用的是inotify ...

  9. Java学习:File类

    Java学习:File类 File类的概述 重点:记住这三个单词 绝对路径和相对路径 File类的构造方法 File类判断功能的方法 File类创建删除功能的方法 File类获取(文件夹)目录和文件夹 ...

  10. 2019-11-29-win7-无法启动-WPF-程序-D3Dcompiler_47.dll-丢失

    原文:2019-11-29-win7-无法启动-WPF-程序-D3Dcompiler_47.dll-丢失 title author date CreateTime categories win7 无法 ...