一、配置文件详解

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. [LeetCode] 14. Longest Common Prefix 最长共同前缀

    Write a function to find the longest common prefix string amongst an array of strings. If there is n ...

  2. 【微信小程序】获取用户地理位置权限,二次请求授权,逆解析获取地址

    摘要:微信小程序内获取用户地理位置信息授权,被拒绝后二次获取,获取权限后逆解析得到用户所在省市区等.. 场景:商城类小程序,在首页时需展示附近门店,即用户刚进入小程序时就需要获取到用户位置信息 ste ...

  3. ES方法使用注意

    matchQuery:会将搜索词分词,再与目标查询字段进行匹配,若分词中的任意一个词与目标字段匹配上,则可查询到.   termQuery:不会对搜索词进行分词处理,而是作为一个整体与目标字段进行匹配 ...

  4. nginx学习笔记2

    nginx基础配置 一.nginx常用命令 nginx -s reload:在nginx已经启动的情况下重新加载配置文件(平滑重启) nginx -s reopen:重新打开日志文件 nginx -c ...

  5. dataGridView1.Rows[i].DefaultCellStyle.BackColor = Color.Gold;第一次无效

    private void dgv_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) {}//修改DataGrid ...

  6. Jenkins使用过程中遇到的问题

    1./usr/local/jdk1.8.0_191/ is not a directory on the Jenkins master (but perhaps it exists on some a ...

  7. 物联网典型场景之智能家电,使用JOSH技术带来的优势和机会~

    很多人一直问,用JOSH技术如何改变智能家电,有没有真正的必要? 一部分人的观点:我可以用嵌入式C.汇编完成家电的程序,毕竟这些设备的程序很简单: 另一部分的人:智能家电互相的连接都一直有人在做啊,并 ...

  8. JOSH是中国的“MicroEJ”~

    很多人不了解JOSH,我们推荐大家去看看MicroEJ,我们是中国版的MICROEJ,下面的文章翻译自MICROEJ的官网,让大家直观的了解~ MICROEJ被定位为可连接对象的ANDROID™的小兄 ...

  9. 集合类源码(六)Map(HashMap, Hashtable, LinkedHashMap, WeakHashMap)

    HashMap 内部结构 内部是一个Node数组,每个Node都是链表的头,当链表的大小达到8之后链表转变成红黑树. put操作 final V putVal(int hash, K key, V v ...

  10. 04、状态模式(State)

    一.概念: 当一个对象的内在状态改变时,允许改变其行为,这个对象看起来像是改变了其类.[DP] 二.作用: 状态模式的主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况.吧状态的判断逻辑转 ...