一、概念

1.1)综述

Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成SMBServer Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议, 它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。

目标:让Windows与Unix-LIke 这两个不同的操作系统平台相互共享数据的文件系统!

小插曲:SMB注册商标没有意义,用了SAMBA(巴西的SAMBA舞名同音,拉丁舞蹈的名字)!

     小知识点:Windows和Sun公司开发,所以可以跨平台!

1.2)SAMBA至少所需的软件及其软件架构

samba:这个套件主要提供了SAM服务器所需的各项服务程序 (smbd及nmbd )、SAMBA的文件档 ( document )、以及其它与SAMBA 相关的logrotate 设定文件及开机默认选项档案等,是服务器端的应用程序
samba-common:这个套件则主要提供了 SAMBA 的主要配置文件(smb.conf) 、 smb.conf 语法检验的测试程序 ( testparm )等等,samba的支持文件
samba-client:这个套件则提供了当Linux做为SAMBA Client端时,所需要的工具指令,例如挂载 SAMBA文件格式的mount.cifs、取得类似网上邻居相关树形图的smbtree等,是客户端的应用程序!

说明:如果Linux系统共享资源,没有Windows作为测试,可以用LInux自带的samb-client作为测试端!

   1.3)核心配置文件

/etc/samba/smb.conf                     #samba服务的主要配置文件/etc/samba/lmhosts                      #samba服务的域名设定,主要设置IP地址对应的NetBIOS Name特点:"类似"linux系统的/etc/hosts功能,但不是/etc/hosts,目前的SAMBA默认会使用本机名称(hostname)作为NetBIOS Name/etc/samba/smbusers                     #samba服务设置samba虚拟用户的配置文件/var/log/samba                          #samab服务存放日志文件/var/lib/samba/private/{passdb.tdb,secrets.tdb}   #管理samba的用户账号和密码数据库文档/usr/share/doc/smba-<版本>                         #技术手册

1.4)端口的问题

  说明:通常使用445/tcp进行所有的连接;也可以使用TCP端口139,UDP端口137、138向后兼容!服务的名称:nmb、smb;在防火墙添加中会用到!错误:Connection to 172.25.2.105 failed (Error NT_STATUS_HOST_UNREACHABLE)

   1.5)核心的命令

SAMBA Server 功能testparm         --->test parameters 的简写,语法校验(smb.conf)smbd             --->权限管理服务程序(主要的 daemons)nmbd             --->NetBIOS Name查询(nmbd)tdbdump          --->查看数据库的名称tdbtool          --->进入数据库操作接口,手动修改账户和密码(需要tdb-tools软件的支持)/var/lib/samba/private/{passdb.tdb,secrets.tdb}说明:3.0以后的版本,用户的账户和密码参数使用数据库(数据库名称-->TDB)smbstatus        --->列出SAMBA的连接状态smbpasswd        --->管理SAMBA账号与密码(早期)pdbedit          --->管理SAMBA账号与密码(推荐)SAMBA Client 功能mount.cifs 1)Windows可以设置"网络驱动器"来连接到自己主机上面2)通过mount(mount.cifs)将远程主机共享的文件和目录挂载在自己的LInux主机上!smbclient(核心)当Linux 主机想要藉由『网络上的芳邻』的功能来查看别台计算机所分享出来的目录与装置时,就可以使用smbclient 来查看啦!这个指令也可以使用在 SAMBA 主机上面,用来查看是否设定成功。smbtreenmblookip 查出NetBIOS Namesmbmount(不常用)

说明:参数的用法在使用中穿插!

补充:Windows最多只能10个用户同时连接到同一台网上邻居的服务器上,linux不受限制!

说明:文件共享、多用户挂载、客户端的使用!

测试1:安装软件后,启动服务,匿名测试

-L 和-I的参数的用法

测试2:非匿名登陆

说明:SAMBA的账户必须是系统已经存在的(/etc/passwd可以查询的),系统密码设置不设置无所谓!

需求3:开放用户使用smb服务器用户主目录

解释:使用远程主机的某个帐号来直接远程登陆某台主机的某个共享资源!

说明:Selinux默认是禁止自定义的目录成为共享目录!

说明: smbclient //172.25.2.105/smbuser1 -U smbuser1 -->进入该用户的家目录[home配置]!

明确:如果此选项没有开启,那么用户在挂载他们的用户主目录的时候就会出现无法挂载的情况!

mount //172.25.2.105/smb1/ -o username=smb1,passwd=hello

说明2:Selinux有关!

smbclient -L //172.25.2.105 -U smbuser1  -->smbuser1身份查询smbclient -L //172.25.2.105              -->匿名用户身份查询(看到的内容不一样)!说明:登陆并不代表能操作资源!pdbedit -x user   -->删除(delete)SMBA中的用户(pdbedit -x -u user)pdbedit -L user   -->列出(list)指定用户的信息(不加参数列出所有的)smbpasswd -a user -->增加(add)用户

需求3:共享成为SAMBA目录

mkdir /home/linux
cd /home/linux/
touch file{1..10}
semanage fcontext -a -t samba_share_t '/home/linux(/.*)?' #重点!!!!!!
restorecon -RvvF /home/linux/

说明:如果共享的目录不只是SAMBA,还包括FTP或者其它服务,使用public_content_t大家都能读取的类型!

配置文件的修改

[wzj]comment = Linux Resourcespath    = /home/linuxwrite list = smbuser1

过五关六将

权限首先底层必须允许,然后是smb配置文件是否允许,其次还得看Selinux是否允许!

结果:此时smbuser1就可以对wzj资源相对应的该目录下进行写操作!

仿真:类似FTP的方式上传和下载网上邻居,通过?可以看到没有touch命令!

实际:smnclient是SAMBA提供给Linux网上邻居的客户端功能!

需求4:挂载的方式

特点:将远程服务器(Windows)共享出来的目录整个挂载到本机(Linux)的挂载点,远程服务器的目录就像是我们本机的一个分区,可以直接复制和编辑等动作!

mount //172.25.2.105/wzj /mnt -o username=smbuser1,password=redhat

用法:常常是通过smbclient来观察,然后mount来挂载文件系统!

su - kiosk 可以查看,但是不能进行相关操作!

#############################

需求5:匿名用户登陆查看资源

(1)全局设置,默认不允许

  第123行左右-->security = user          ##RHEL6之前可以通过(user改成shell来匿名登录),现在增强了!map to guest = bad user  #新增加(匿名用户)!!!passdb backend = tdbsam

说明:上述只是表示可以用匿名用户,具体能用不能用要看共享资源声明了没有

(2)局部设置

guest ok = yes

(3)重启服务

方式1:reload或者restart服务!

方式2:testparm(检查语法错误,并reload配置文件)

或者 smbclient //172.25.2.105/wzj -U guest 来测试

需求6:访问控制

      1)基于IP

#####允许的######hosts allow = 172.25.2.103            ##指定的IP,即改即生效!hosts allow = 172.25.2.               ##网段(注意写法-->不是172.25.2.0/24)!hosts allow = 172.25.2 172.25.254.100 ##不允许指定的IP,网段!######禁止#######hosts deny  = 172.25.2.100hosts deny  = 172.25.2.说明:参数测试的时候,最好去掉allow的!

出现问题排错思路:服务器端口hostname设置(/etc/res)!客户端防火墙的设置(关闭)!

无法卸载处理思路:fuser -kvm /mnt   --->umount /mnt

需求7:配置文件的其它参数的含义

writeable = yes #表示可以对文件(目录)进行更改(挂载后可以读写此共享)注意:能不能更改,还要看文件系统对于该用户的权限设置,登陆身份对于该目录或者文件权限!一般:777、setfacl、添加用户组三种方式!########################browseable = yes ##表示除了用户自己外,不能被其它人浏览(看到文件资源),可以ls注意:并不代表能看到文件的内容!说明:如果是no的话,关闭此共享资源,smbclient -L //IP 就无法看到此共享目录!########################write list = [user|@user|+user] -->写入者包含哪些人(只有writeable,没有 write list的话默认是所有人)!说明:针对用户、用户组的!强调:用户必须在SMBA用户列表中,即pdbedit -L中测试:1)匿名用户可以登陆,查看资源,但是无法创建! -->  mount //IP/wzj /mnt 2)pdbedit -L 中的用户,但是不在 write list 中,也无法创建!(-o username=user,password=passwd)3)pdbedit -L 中的用户,并且在 write list 中,且底层文件系统权限也允许!4)将2)中的用户加入到相应的用户组中,再测试!注意:挂载测试的时候,最好先卸载再测试!##################valid users = user,user1   //默认所有用户;有效的用户列表(同上),早期的设置!说明:更直接(即使在pdedit -L的用户列表中,也没有权力挂载)##################;       public = yes|no         //默认no;公用的
;       browseable = yes|no     //默认yes;是否可以浏览
;       read only = yes|no      //默认yes;只读
;       writable = yes|no       //默认yes;可写write list = user       //默认无;可写入的用户列表valid users = user,user1//默认所有用户;有效的用户列表
;       hosts allow = 客户地址   //允许的客户机地址
;       hosts deny =  客户地址   //禁止的客户机地址
;       comment = 注释          //说明##################冲突的问题

需求8:smb的多用户身份

现象

说明:root挂载,但是su - kiosk kiosk也可以访问,不安全!

生活案例:自己买饭(-->资源)(用的是自己的钱-->用户名和密码)总不希望别人也能看饭(资源)!

需求:自己挂载的,只能自己看,别人要看需要通过验证!

明确:既然是客户端的其它用户可以访问,就在客户端限制其访问,如果要访问必须通过验证的方式

核心步骤

   yum install cifs-utils   -->客户端安装验证工具!touch /root/smbpass      -->自己创建的用户名和密码的文件chmod 600 /root/smbpass  -->安全(只有自己可以看和修改)!/root/smbpass文件格式-->username=leepassword=lee

  测试:mount //172.25.254.100/HAHA /mnt -o credentials=/root/smbpass,sec=ntlmssp,multiuser

说明:文件代替用户名和密码,sec跟系统版本(rpm -q kernel ,3.8之后的用上述的)有关,multiuser才起作用

帮助文档:man mount.cifs

ntlm、NTLM认证协议及SSPI的NTLM实现

测试:root登录,然后切换到kiosk,cd /mnt ,ls告诉你没有权限!

进一步需求:kiosk也能访问

说明:smbuser2必须在pdbedit -L的列表中!

帮助文档: cifscreds --help

理解:客户端操作的身份,和登陆的身份

说明:登录之后,创建文件身份在客户端如果不能识别,则是以UID、PID的形式表示!

注意:对文件的操作实际是对服务器的操作!

小细节:服务器端重启服务,客户端原来mount可能会umount(卸载)!

smb.conf配置文件分为两大类,一个全局设置参数,一个是文件共享设置参数:

共享文件系统,文件服务器!

二、Linux操作

感觉:在客户端机器上操作就像直接使用Server上的文件资料,该数据就像在客户端上的partition一样!

WLAN(局域网)的连接方式--->Peer/Peer(对等)、Domain model(主控模式)

细节的把握!

三、Windows(简写)

Linux中级(七)SAMBA文件服务器相关推荐

  1. Linux服务-Samba文件服务器部署

    Samba文件服务器 简介 samba是一种在linux环境中运行的免费软件,可以创建基于windows的共享. 通过插件也可以让linux用户共享. server Message Block 协议 ...

  2. linux上安装samba

    安装samba : yum -y install samba 卸载samba: rpm -e samba-client 0.架设Samba 服务器的前提: Linux是一个多用户的操作系统,对任何服务 ...

  3. 介绍一下linux下的samba服务

    介绍一下linux下的samba服务 实验环境 VMware 6.5.2 +redhat Enterprise 5 AS 我的内核版本 上面两个是windows server 2003 共享文件时的画 ...

  4. Linux服务.NO7——samba

    10.Samba 10.1.samba概念 Samba服务是一种类似于ftp或nfs的一种文件共享的服务,是基于SMB协议的在网络上的计算机之间远程共享Linux文件和打印服务. 利用Samba服务器 ...

  5. Samba文件服务器的配置

    Samba文件服务器的配置 一.基本要求: 1.RedHat Linux 操作系统平台 2.windows操作系统平台(验证用) 3.RedHat Linux安装光盘 "Linux版本没什么 ...

  6. linux下的SAMBA服务------SMB协议

    SAMBA基本介绍 概念 SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务. ...

  7. Samba文件服务器

    Samba文件服务器 要将Samba配置为作为工作组成员来提供SMB文件共享需执行以下基本步骤: 安装Samba软件包 准备要共享的目录的权限 配置/etc/samba/smb.conf文件 使用NT ...

  8. linux中级篇--网络相关命令

    网络相关命令 Linux中常见的网络相关命令如下表所示,本书将选取其中使用较频繁的命令进行讲解. 命令 说明 格式 ifconfig 显示或设置网络设备 ifconfig [网络设备][选项]- pi ...

  9. Linux下的samba服务配置详解

    Linux下的samba服务配置详解 一.Samba介绍 二.Samba工具及特性 三.搭建环境介绍 四.Samba配置步骤 1.服务端操作 2.在客户端操作 五.测试用户的权限情况 一.Samba介 ...

最新文章

  1. org.springframework.expression.spel.SpelEvaluationException: EL1005E:(pos 0): Type cannot be found
  2. sklearn计算两个向量之间的距离
  3. linux虚拟磁盘管理pe大小6,Linux下磁盘的高级管理——LVM逻辑卷管理
  4. 联合查询是要多创建一个实体类么_[译] 如何用 Room 处理一对一,一对多,多对多关系?...
  5. java实例域静态域_有关java 实例域 静态域 静态方法
  6. python 之 XML的基本应用总结
  7. CRM reference product的UI界面
  8. Socket编程:之双机通信
  9. 【LeetCode笔记】55. 跳跃游戏(Java、贪心法)
  10. window服务器上搭建git服务,window server git!!!
  11. 181022词霸有道扇贝每日一句
  12. svn删除远程文件和忽略文件
  13. SketchUp Pro 2017 简体中文版的安装与破解
  14. IPSAN与FCSAN存储结构的区别
  15. autosar 与osek 的nm
  16. 概率论---古典概型
  17. MicroStrain 3DM-GX3-25 ROS 开发
  18. java包(java包和类)
  19. php支付宝聚合支付源码,ThinkPHP5.1聚合支付源码
  20. Windows10 64位企业版 1909真机中使Wireshark可以抓取802.1q封装携带tag的数据帧

热门文章

  1. 互联网创业的三年都学到了什么?
  2. 使用mysqldump+WinRAR压缩备份数据库
  3. 解决winrar压缩文件或文件夹时,文件拒绝访问问题
  4. 解决AS3.5在oppo系统更新后无法打包apk问题
  5. mysql 100个标题_100个超强吸引人的标题
  6. 大数据实时处理第三周课
  7. ALV能否实现自动小计
  8. [自习任我行]第二阶段任务跟踪1
  9. java 迭代_java迭代是什么意思
  10. Obama's speech in Chicago