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访问测试


虽然可以访问samba-server的共享了,但是无访问里面的目录!

[root@lhh ~]# chcon -R -t samba_share_t /aaa/                                # 修改上下文,就可以访问共享目录了

[root@lhh ~]# setsebool -P samba_enable_home_dirs on              # 开启家目录的bool值

此时就可以访问里面的内容


此时我们想创建文件发现没权限!


检查思路:

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 基本配置及自定义控制的更多相关文章

  1. Linux之Samba的配置

    Samba的配置   对于linux与windows共享,和平共处,我们可以用Samba软件 Samba是一套免费的开源软件,可以在linux或其他类unix操作系统上实现windows域控制器,文件 ...

  2. [转载]centos下yum安装samba及配置

    centos下yum安装samba及配置 在我们使用 Windows 作为客户机的时候,通常有文件.打印共享的需求.作为Windows 网络功能之一,通常可以在 Windows 客户机之间通过Wind ...

  3. 【从零开始学BPM,Day5】报表配置及自定义功能页面开发

    [课程主题] 主题:5天,一起从零开始学习BPM [课程形式] 1.为期5天的短任务学习 2.每天观看一个视频,视频学习时间自由安排. [第五天课程] 1.课程概要 Step 1 软件下载:H3 BP ...

  4. Samba快速配置

    Samba是linux,unix,windows之间进行交互操作的软件组件,Sanma是基于GPL协议的自由开源软件. 快速配置samba文件服务器 1.关闭防火墙和SELinux [root@cen ...

  5. Samba安装配置

    Samba简介 Samba官网:http://www.samba.orgSMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不 ...

  6. Samba网络配置

    Samba网络配置 操作环境 ubuntu14.04 1. 更新Linux源列表 sudo apt-get update 2. 安装Samba服务 sudo apt-get install samba ...

  7. 无废话Android之smartimageview使用、android多线程下载、显式意图激活另外一个activity,检查网络是否可用定位到网络的位置、隐式意图激活另外一个activity、隐式意图的配置,自定义隐式意图、在不同activity之间数据传递(5)

    1.smartimageview使用 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android&q ...

  8. Ubantu 16.4 samba安装配置

    本文总结了Ubantu 16.04 环境下的samba安装.配置及使用.本文为原创,也是我的第一篇博客,以后会经常写博客,记录自己的学习.总结及研究,让博客见证着我成长的轨迹. 下文中的所有命令均使用 ...

  9. Centos samba 服务配置

    1背景 转到Linux有段时间了,vim操作还不能应对工程代码,之前一直都是Gnome桌面 + Clion 作开发环境,无奈在服务器上没有这样的环境, 看同事是(Windows)Source Insi ...

随机推荐

  1. Android 路由框架ARouter最佳实践

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/76165252 本文出自[赵彦军的博客] 一:什么是路由? 说简单点就是映射页面跳转 ...

  2. spring boot入门篇,helloworld案例演示

    为什么用spring boot? 嵌入的 Tomcat,无需部署 WAR 文件 简化 Maven 配置 无需 XML 配置,轻松快速地搭建Spring Web应用 开始学习SpringBoot 构建简 ...

  3. 3d轮播图(另一种方式,可以实现的功能更为强大也更为灵活,简单一句话,比酷狗优酷的炫)

    前不久我做了一个3d仿酷狗的轮播图,用的技术原理就是简单的jquery遍历+css样式读写. 这次呢,我们换一种思路(呵呵其实换汤不换药),看到上次那个轮播吗?你有没有发现用jquery的animat ...

  4. DX11 Without DirectX SDK--使用Windows SDK来进行开发

    在看龙书(Introduction to 3D Game Programming with Directx 11)的时候,里面所使用的开发工具包为Microsoft DirectX SDK(June ...

  5. DX11 Without DirectX SDK--02 渲染一个三角形

    回到 DirectX11--使用Windows SDK来进行开发 目前暂时没有写HLSL具体教程的打算,而是着重于如何做到不用DirectX SDK来进行渲染.除此之外,这里也没有使用Effects框 ...

  6. 在mac OX10.11.6上安装MySQL

    一.之前失败情况 官网下载dmg文件安装.源码安装,下过5.6  5.7  8.0 版本,都可以安装成功,但是在电脑设置界面无法启动,每次点启动输入密码后,均闪一下绿色然后变红色,既然不能界面启动,那 ...

  7. TCP/IP Http 和Https socket之间的区别

    TCP/IP Http 和Https  socket之间的区别 TCP/IP是个协议组,它分为网络层,传输层和应用层, 在网络层有IP协议.ICMP协议.ARP协议.RARP协议和BOOTP协议.   ...

  8. 输入流IS和输出流OS学习总结

    1.我们编写的程序,除了自身会定义一些数据信息外,经常还会引用外界的数据,或是将自身的数据发送到外界,比如我们编写的程序想读取一个文本文件, 又或者是我们想将程序的一些数据写到一个文件中,这时我们就要 ...

  9. DoxygenToolKit.vim 插件配置

    如何才能既享受 Doxygen 的强大功能,同时又避免大量的重复性的注释内容? 解决思路: 让编辑器来替我们写那些格式和内容固定的部分,我们只负责写真正的有效内容. 所以,答案就是:Vim + Dox ...

  10. 用CSS画小猪佩奇,你就是下一个社会人!

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 作者:江志耿 | 腾讯TEG网络工程师 我是佩奇,哼,这是我的弟弟乔治,呱呱,这是我的妈妈,嚯,这是我的爸爸,嚯~ 背景 小猪佩奇已经火了好 ...