samba 基本配置及自定义控制
Samba简介:
Samba实现的是Linux和Windows之间的一种共享,为两种不同的操作系统架起了一座桥梁,使Linux系统和Windows系统之间能够实现互相通信,共享文件系统、打印机及其他资源。
实验环境:

基本配置
[root@lhh ~]# yum install samba -y # server安装Samba服务
[root@lhh ~]# firewall-cmd --add-service=samba # 防火墙开启Samba服务
success
[root@lhh ~]# firewall-cmd --add-service=samba --permanent # 永久生效
success
[root@lhh samba]# cd /etc/samba/ # Samba配置文件目录
[root@lhh samba]# ls
lmhosts smb.conf
[root@lhh ]# vim /etc/samba/smb.conf # Samba的主配置文件
---------------- 配置文件重要的条目注释说明 ------------------------
[global] # Samba全局配置
workgroup = MYGROUP # 工作组名称,Windows的为:WORKGROUP
server string = Samba Server Version %v # 服务器介绍信息,参数%v为显示SMB版本号
# interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24 # Samba运行端口,默认是运行在所有端口上
# hosts allow = 127. 192.168.12. 192.168.13. # 访问控制,默认是允许所以都可以访问
====================================================================
log file = /var/log/samba/log.%m # 定义日志文件的存放位置与名称,参数%m为来访的主机名
max log size = 50 # 定义日志文件的最大容量为50KB
=====================================================================
security = user # 安全验证的方式,总共有4种,如下:
#share:来访主机无需验证口令;比较方便,但安全性很差
#user:需验证来访主机提供的口令后才可以访问;提升了安全性
#server:使用独立的远程主机验证来访主机提供的口令(集中管理账户)
#domain:使用域控制器进行身份验证
passdb backend = tdbsam #定义用户后台的类型,共有3种 ,如下:
# smbpasswd:使用smbpasswd命令为系统用户设置Samba服务程序的密码
# tdbsam:创建数据库文件并使用pdbedit命令建立Samba服务程序的用户
# ldapsam:基于LDAP服务进行账户验证
==============================================================
load printers = yes # 设置在Samba服务启动时是否共享打印机设备,保存默认即可!
cups options = raw # 打印机的选项,保存默认即可!
温馨提醒:
创建Samba用户时,本地必须存在此用户,但是Samba密码可以与系统密码不一致。
创建两个作为Samba测试用户
[root@lhh ~]# useradd -s /sbin/nologin test1
[root@lhh ~]# useradd -s /sbin/nologin test2
# /sbin/nologin:表示此用户不可以登录系统,可以作为服务用户使用
=================================================
[root@lhh ~]# echo 123456 | passwd --stdin test1
[root@lhh ~]# echo 123456 | passwd --stdin test2
# 设置两个测试用户密码为:123456
如果没有 smbpasswd 这个命令,则需要安装命令
[root@lhh ~]# yum whatprovides */smbpasswd # 查询命令相关的包
samba-client-4.1.1-31.el7.x86_64 : Samba client programs
[root@lhh ~]# yum install samba-client -y # 安装命令
将两个用户添加到Samba服务里
[root@lhh ~]# smbpasswd -a test1 # -a:添加用户
New SMB password: # 设置 test1 密码
Retype new SMB password: # 再次确认密码
Added user test1. # 添加用户完成
[root@lhh ~]# smbpasswd -a test2 # 继续添加test2
New SMB password:
Retype new SMB password:
Added user test2.
=============================================
命令说明:# smbpasswd [选项] 用户名
# -a:添加用户
# -d:禁用用户
# -e:启用用户
# -x:删除用户
=======================================
[root@lhh ~]# pdbedit -L # 查看Samba的用户
test1:1001:
test2:1002:
继续注释说明主配置文件
------------- 配置文件重要的条目注释说明 ----------------
[homes] # 共享参数
comment = Home Directories # 描述信息
browseable = no # 指定共享信息是否在“网上邻居”中可见
writable = yes # 定义是否可以执行写入操作,与“read only”相反
===============================================================
[printers] # 打印机共享参数
comment = All Printers
path = /var/spool/samba # 共享文件的实际路径(重要)。
browseable = no
guest ok = no # 是否所有人可见,等同于"public"参数。
writable = no
printable = yes
我们了解完Samba配置文件的参数后,开始共享目录测试
[root@lhh ~]# mkdir /aaa # 创建一个 aaa目录作为共享
[root@lhh ~]# vim /etc/samba/smb.conf # 编辑主配置文件,在底部编辑条目将aaa共享出去
-------------------- 省略部分输出信息 ------------------------
[aaa-test] # 共享名称,可以随意定义
comment = aaa-test # 描述名称,可以随意定义
path = /aaa # 共享的路径
===========================================
[root@lhh ~]# systemctl restart smb # 重启Samba服务
Windows访问测试
.png)
虽然可以访问samba-server的共享了,但是无访问里面的目录!
[root@lhh ~]# chcon -R -t samba_share_t /aaa/ # 修改上下文,就可以访问共享目录了
[root@lhh ~]# setsebool -P samba_enable_home_dirs on # 开启家目录的bool值
此时就可以访问里面的内容
.png)
.png)
此时我们想创建文件发现没权限!

检查思路:
1、检查配置文件
[root@lhh ~]# vim /etc/samba/smb.conf # 进入主配置文件
----------------------- 省略部分输出信息 ----------------------------------
[aaa-test] # 共享名称,可以随意定义
comment = aaa-test # 描述名称,可以随意定义
path = /aaa # 共享的路径
writable = yes # 可写权限
=============================================
[root@lhh ~]# systemctl restart smb # 重启Samba服务
# 发现还是无法创建
2、检查文件系统权限
[root@lhh ~]# ls -ld /aaa/ # 查看共享目录权限,发现test1没有可写权限!
drwxr-xr-x. 2 root root 6 8月 13 20:16 /aaa/
[root@lhh ~]# chmod o+w /aaa/ # 给其他用户加上可写权限,因为test1是属于其他用户
此时两个用户都可以正常有写的权限

访问控制设置
一、自定义用户写的权限
[root@lhh ~]# vim /etc/samba/smb.conf # 进入主配置文件
---------------- 省略部分输出信息 ----------------------
[aaa-test] # 共享名称,可以随意定义
comment = aaa-test # 描述名称,可以随意定义
path = /aaa # 共享的路径
writable = no # 可写权限
write list = test1 # 指定某个用户可写,如需要多个用户格式为:test,test2..........
=========================================================
[root@lhh ~]# systemctl restart smb # 重启Samba服务
Windows使用的是:test1用户

Linux使用的是:test2用户
[root@mail ~]# yum install samba-client -y # 安装Samba客户端
[root@mail ~]# smbclient //192.168.115.201/aaa-test -U test2%123456
----------------------- 命令注释 ------------------------
# //192.168.115.201/aaa-test:共享IP地址+ 共享名称
# test2%123456:用户为:test2;密码为:123456
-------------------- 输出信息 ------------------
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 4.1.1]
smb: \> mkdir test2 # 创建目录
NT_STATUS_MEDIA_WRITE_PROTECTED making remote directory \test2 # test2是没有权限无法创建
二、自定义用户浏览的权限
[root@lhh ~]# vim /etc/samba/smb.conf # 进入主配置文件
------------- 省略部分输出信息 ----------------------
[aaa-test] # 共享名称,可以随意定义
comment = aaa-test # 描述名称,可以随意定义
path = /aaa # 共享的路径
writable = no # 可写权限
write list = test1 # 指定某个用户可写
browseable = no # 拒绝所有用户浏览共享目录,增加条目
==================================================
[root@lhh ~]# systemctl restart smb # 重启Samba服务
Linux客户端浏览不了共享目录
[root@mail ~]# smbclient -L //192.168.115.201/ -U test2%123456
--------------- 省略了输出信息 -------------------
test2 Disk Home Directories
# 此时就无法浏览aaa-test目录,只能看见test2家目录
Windows客户端也浏览不了共享目录

接下来我们就自定义某个用户可以浏览共享目录
------------ 省略输出信息,跳到配置文件90行左右,添加条目 ------------
[global]
89 workgroup = WORKGROUP # 保存默认
90 server string = Samba Server Version %v # 保存默认
91 config file = /etc/samba/smb.conf.%U # 添加此条目
===================== 添加的条目简单注释 =============
# 哪个用户登录过来的时候,回去看/etc/samba/有没有 smb.conf.用户名 的配置文件
# 如果有,则使用自己后缀名的配置文件
# 如果没有,则使用 /etc/samba/smb.conf 主配置文件
[root@lhh ~]# cp /etc/samba/smb.conf /etc/samba/smb.conf.test1
# 将主配置文件复制一份作为test1的配置文件
[root@lhh ~]# vim /etc/samba/smb.conf.test1 # 编辑test1生成的配置文件
-------------------- 省略输出信息,直接跳到底端 ----------------------
[aaa-test]
comment = aaa-test
path = /aaa
writable = no
write list = test1
browseable = yes # 原本是:no;修改为:yes
此时 Windows可以看得到共享目录

但是Linux客户端浏览不了共享目录,就实现了自定义浏览控制
[root@mail ~]# smbclient -L //192.168.115.201/ -U test2%123456
----------------- 省略了输出信息 -----------------------
test2 Disk Home Directories
[root@lhh ~]# ls /etc/samba/
lmhosts smb.conf smb.conf.test1
------------------ 最后整体的解释 ----------------------
# 因为上面主配置文件添加了:config file = /etc/samba/smb.conf.%U
# 当test1访问Samba时,会使用自己后缀名的配置文件(smb.conf.test1)
# test1 不会使用主配置文件,自己的配置文件时允许可以浏览的,所以就可以浏览共享目录
# test2 没有自己的配置文件,只能使用主配置文件( smb.conf),但是主配置文件是拒绝所有用户浏览的,所有无法浏览
三、自定义IP地址访问
[root@lhh ~]# vim /etc/samba/smb.conf # 进入主配置文件
--------------- 省略部分输出信息 -----------------------
[aaa-test]
comment = aaa-test
path = /aaa
writable = yes
hosts allow = 192.168.x.x # 如果增加这条目,只允许某个IP地址访问
# hosts deny = 192.168.x.x # 如果增加这条目,只拒绝某个IP地址访问
# 接下来我们只测试允许的条目,拒绝的同理
Windows-IP地址115.1,无法访问

Linux-IP地址为:115.202-成功访问
[root@mail ~]# smbclient //192.168.115.201/aaa-test -U test2%123456
---------------- 省略部分输出信息 --------------
111 D 0 Mon Aug 13 21:18:33 2018
222 D 0 Mon Aug 13 21:18:37 2018
# Linux是可以正常访问的
# 到此已经完成Samba的基本配置和自定义控制了
samba 基本配置及自定义控制的更多相关文章
- Linux之Samba的配置
Samba的配置 对于linux与windows共享,和平共处,我们可以用Samba软件 Samba是一套免费的开源软件,可以在linux或其他类unix操作系统上实现windows域控制器,文件 ...
- [转载]centos下yum安装samba及配置
centos下yum安装samba及配置 在我们使用 Windows 作为客户机的时候,通常有文件.打印共享的需求.作为Windows 网络功能之一,通常可以在 Windows 客户机之间通过Wind ...
- 【从零开始学BPM,Day5】报表配置及自定义功能页面开发
[课程主题] 主题:5天,一起从零开始学习BPM [课程形式] 1.为期5天的短任务学习 2.每天观看一个视频,视频学习时间自由安排. [第五天课程] 1.课程概要 Step 1 软件下载:H3 BP ...
- Samba快速配置
Samba是linux,unix,windows之间进行交互操作的软件组件,Sanma是基于GPL协议的自由开源软件. 快速配置samba文件服务器 1.关闭防火墙和SELinux [root@cen ...
- Samba安装配置
Samba简介 Samba官网:http://www.samba.orgSMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不 ...
- Samba网络配置
Samba网络配置 操作环境 ubuntu14.04 1. 更新Linux源列表 sudo apt-get update 2. 安装Samba服务 sudo apt-get install samba ...
- 无废话Android之smartimageview使用、android多线程下载、显式意图激活另外一个activity,检查网络是否可用定位到网络的位置、隐式意图激活另外一个activity、隐式意图的配置,自定义隐式意图、在不同activity之间数据传递(5)
1.smartimageview使用 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android&q ...
- Ubantu 16.4 samba安装配置
本文总结了Ubantu 16.04 环境下的samba安装.配置及使用.本文为原创,也是我的第一篇博客,以后会经常写博客,记录自己的学习.总结及研究,让博客见证着我成长的轨迹. 下文中的所有命令均使用 ...
- Centos samba 服务配置
1背景 转到Linux有段时间了,vim操作还不能应对工程代码,之前一直都是Gnome桌面 + Clion 作开发环境,无奈在服务器上没有这样的环境, 看同事是(Windows)Source Insi ...
随机推荐
- 技术人应该学习的行话--UML统一建模语言
新生代码农如何在硝烟弥漫的商业丛林中生存和崛起? 洞见,让一部分先遇见未来. 最近公司技术部在组织架构师培训,有幸参与.导师老刘特别推荐了UML语言的学习.回想多年来,自己习惯做一些流程图,框图或者所 ...
- leetcode-判断回文数,非字符串算法(java实现)
link: https://leetcode-cn.com/problems/palindrome-number/description/ 问题: 判断一个整数是否是回文数.回文数是指正序(从左向右) ...
- css初始化标签属性--源码
body, div, dl, dt, dd, ul, ol, li, h1, h2, h3, h4, h5, h6, pre, form, fieldset, input, p, blockquote ...
- [Java算法分析与设计]--单向链表(List)的实现和应用
单向链表与顺序表的区别在于单向链表的底层数据结构是节点块,而顺序表的底层数据结构是数组.节点块中除了保存该节点对应的数据之外,还保存这下一个节点的对象地址.这样整个结构就像一条链子,称之为" ...
- 【已解决】C#中往SQLServer插入数据时遇到BUG
错误信息如下: “System.Data.SqlClient.SqlException”类型的未经处理的异常在 System.Data.dll 中发生 其他信息: “”附近有语法错误. 文字版代码如下 ...
- Python 处理时间的模块
1.由日期格式转化为字符串格式的函数为: datetime.datetime.strftime().date() 2.由字符串格式转化为日期格式的函数为: datetime.datetime.strp ...
- Spring Boot 发送邮件
需求 最近因为业务的变更,需要对老用户进行发送邮件处理.目前市面上也有很多代发邮件的接口,可以接入.由于量不是特别大,放弃了这个途径.改用我们自己通过 smtp 发送邮件来处理. 技术选择 Java ...
- Python_跟随目标主机IP变换
''' 为了防止黑客攻击或者负载均衡,会经常变换主机,这样同一个域名在不同时间可能会对应不同的IP地址,在这种情况下可以通过 socket模块的gethostbyname()函数来实时获取目标主机的I ...
- cmd登录远程Oracle数据库
在cmd中输入 user/password@Ip:port/sid 例如: laoda/123@192.168.4.161:1521/orcl laoda是用户名,123是密码.
- PAT1102: Invert a Binary Tree
1102. Invert a Binary Tree (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue ...