SAMBA服务

Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。

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

早期在客户端和服务器端传输文件使用FTP,但是客户端不能更改服务器端文件的内容,只能先下载下来,然后更改,再上传,客户端和服务器端存有两份文件。。如果时间长了,忘记了哪份文件是最新的。。

NetworkFile System, NFS 只要在 Client 端将 Server所提供分享的目录挂载进来,那么在 Client 的机器上面就可以直接取用 Server上的档案数据,而且,该数据就像 Client 端上面的partition 一般!而除了可以让 Unix Like 的机器互相分享档案的NFS 服务器之外,在微软 ( Microsoft ) 上面也有类似的档案系统,那就是 CommonInternet File System, CIFS 这个咚咚啦!CIFS 最简单的想法就是目前常见的『网上邻居』。Windows 系统的计算机可以透过桌面上『网上邻居』来分享别人所提供的档案数据。不过,NFS仅能让 Unix 机器沟通, CIFS 只能让 Windows 机器沟通。让Windows 与 Unix-Like 这两个不同的平台相互分享档案数据的文件系统:SMB(server message block)协议


samba和windows中的网络邻居都使用SMB协议。那么,samba自然主要用于在windows和unix之间共享资源。资源包括文件、打印机等等


1 Samba原理
1.1Samba服务全攻略
接触Linux我们听的最多的就是Samba服务,为什么Samba应用这么广泛哈~,原因是Samba最先在Linux和Windows两个平台之间架起了一座桥梁哈,正是由于Samba的出现,我们可以在Linux系统和Windows系统之间互相通信,比如拷贝文件、实现不同操作系统之间的资源共享等等,我们可以将其架设成一个功能非常强大的文件服务器,也可以将其架设成打印服务器提供本地和远程联机打印,甚至我们可以使用samba Server完全取代NT/2K/2K3中的域控制器,做域管理工作,使用也非常方便滴哈~既然samba这样滴强大哈,我们还不赶快来把玩一下哈~~~
1.2 Samba应用环境
文件和打印机共享:文件和打印机共享是Samba的主要功能,SMB进程实现资源共享,将文件和打印机发布到网络之中,以供用户可以访问哈。
身份验证和权限设置:smbd服务支持user mode和domain mode等身份验证和权限设置模式,通过加密方式可以保护共享的文件和打印机。
名称解析:Samba通过nmbd服务可以搭建NBNS(NetBIOS Name Service)服务器,提供名称解析,将计算机的NetBIOS名解析为IP地址。
浏览服务:局域网中,Samba服务器可以成为本地主浏览服务器(LMB),保存可用资源列表,当使用客户端访问Windows网上邻居时,会提供浏览列表,显示共享目录、打印机等资源。
1.3 Samba工作原理
Samba服务功能强大,这与其通信基于SMB协议有关。SMB不仅提供目录和打印机共享,还支持认证、权限设置。在早期哈,SMB运行于NBT协议(NetBIOS over TCP/IP)上,使用UDP协议的137、138及TCP协议的139端口,后期SMB经过开发,可以直接运行于TCP/IP协议上,没有额外的NBT层,使用TCP协议的445端口。
(1)Samba工作流程
当客户端访问服务器时,信息通过SMB协议进行传输,其工作过程可以分成四个步骤哈:
步骤1:协议协商
客户端在访问Samba服务器时,发送negprot指令数据包,告知目标计算机其支持的SMB类型。Samba服务器根据客户端的情况,选择最优的SMB类型,并做出回应。
              --------negprot请求------->
客户端                                               服务器
              --------negprot响应------->
步骤2:建立连接
当SMB类型确认后,客户端会发送session setup指令数据包,提交帐号和密码,请求与Samba服务器建立连接,如果客户端通过身份验证,Samba服务器会对session setup报文作出回应,并为用户分配唯一的UID,在客户端与其通信时使用。
              --------session setup &X请求------->
客户端                                                             服务器
              --------session setup &X响应------->
步骤3:访问共享资源
客户端访问Samba共享资源时,发送tree connect指令数据包,通知服务器需要访问的共享资源名,如果设置允许,Samba服务器会为每个客户端与共享资源连接分配TID,客户端即可访问需要的共享资源哈。
              --------tree connect &X请求------->
客户端                                                               服务器
              --------tree connect &X响应------->
步骤4:断开连接
共享使用完毕,客户端向服务器发送tree disconnect报文关闭共享,与服务器断开连接。
              --------tree disconnect请求------->
客户端                                                            服务器
              --------tree disconnect响应------->
(2)Samba相关进程
Samba服务是由两个进程组成,分别是nmbd和smbd。
nmbd:其功能是进行NetBIOS名解析,并提供浏览服务显示网络上的共享资源列表。
smbd:其主要功能就是用来管理Samba服务器上的共享目录、打印机等,主要是针对网络上的共享资源进行管理的服务。当要访问服务器时,要查找共享文件,这时我们就要依靠smbd这个进程来管理数据传输哈~~~
2 安装Samba服务
2.1 Samba所需软件
在我们安装Samba服务之前哈,我们先来了解一下其所需要的软件包以及它们的用途哈~
samba-3.0.25b-0.el5.4.i386.rpm:该包为Samba服务的主程序包。服务器必须安装该软件包,后面的数字为版本号(我们安装时使用的是RHEL5.1DVD版,如果是RHEL5.1CD版则该软件包位于第二张RHEL5安装光盘上)。
samba-client-3.0.25b-0.el5.4.i386.rpm:该包为Samba的客户端工具,是连接服务器和连接网上邻居的客户端工具并包含其测试工具(该软件包位于第一张RHEL5安装光盘哈~)
samba-common-3.0.25b-0.el5.4.i386.rpm:该包存放的是通用的工具和库文件,无论是服务器还是客户端都需要安装该软件包(这个软件包也位于第一张RHEL5安装光盘哈~)
samba-swat-3.0.25b-0.el5.4.i386.rpm:当安装了这个包以后,就可以通过浏览器(比如IE等哈)来对Samba服务器进行图形化管理(这个软件包位于第三张RHEL5安装光盘哈)。
2.2 Samba的安装
建议在安装Samba服务之前,使用rpm -qa命令检测系统是否安装了Samba相关性软件包:rpm -qa |grep samba
如果系统还没有安装Samba软件包,我们可以使用rpm命令安装所需软件包。
安装Samba主程序包:rpm -ivh samba-3.0.25b-0.el5.4.i386.rpm
其他软件包的安装方法也一样哈~
安装Samba客户端工具:rpm -ivh samba-client-3.0.25b-0.el5.4.i386.rpm
提示已经安装过了哈~
安装Samba通用工具和库文件:rpm -ivh samba-common-3.0.25b-0.el5.4.i386.rpm
其实我们一开始rpm qa |grep samba命令查询时已经发现客户端工具和通用工具及库文件已经安装了哈,我们上面两步安装就可以不要执行了哈,偶主要是演示一下哈~
最后我们安装Samba图形化管理工具:rpm -ivh samba-swat-3.0.25b-0.el5.4.i386.rpm
我们发现缺少xinetd,OK,那我们安装一下哈~:rpm -ivh xinetd-2.3.14-10.el5.i386.rpm
现在我们再来安装Samba图形化管理工具:rpm -ivh samba-swat-3.0.25b-0.el5.4.i386.rpm
现在我们看到Samba图形化管理工具安装成功了哈~
所有软件包安装完毕之后,我们可以使用rpm命令进行查询哈:rpm -qa | grep samba
3 Samba常规服务器配置  
在Samba服务安装完毕之后,并不是直接可以使用Windows或Linux的客户端访问Samba服务器哈,我们还必须对服务器进行设置,下面需要做的操作就是说我们要告诉Samba服务器将哪些目录共享出来给客户端进行访问,并根据需要设置其他选项哈,比如添加对共享目录内容的简单描述信息和访问权限等具体设置。
作为我们Linux系统工程师了解及熟悉Samba服务器的搭建流程是至关重要滴。 基本的Samba服务器的搭建流程主要分为四个步骤:
[1]、编辑主配置文件smb.conf,指定需要共享的目录,并为共享目录设置共享权限。
[2]、在smb.conf文件中指定日志文件名称和存放路径。
[3]、设置共享目录的本地系统权限。
[4]、重新加载配置文件或重新启动smb服务,使用配置生效哈~
为了更好地理解设定流程中每一步的作用,下面通过一个图例进行讲解哈~
Samba工作流程:
              ---------(1)--------->                  ----------(2)---------->smb.conf主配置文件
[客户端]                                  [Samba服务器]
              -------- (4)---------->                 ----------(3)---------->日志文件
(1)客户端请求访问Samba服务器上的Share共享目录。
(2) Samba服务器接收到请求后,会查询主配置文件smb.conf,看是否共享了Share目录,如果共享了这个目录则查看客户端是否有权限访问。
(3)Samba服务器会将本次访问信息记录在日志文件之中,日志文件的名称和路径都是需要我们设置。
(4)如果客户端满足访问权限设置,则允许客户端进行访问。
实际上,Samba服务器和我们的图书馆有点相似之处哈,图书馆为读者共享了图书资源,而Samba服务器共享了我们的文件数据哈。
图书馆会有图书分类,比如科普类、文学类等,并且图书馆会对借阅的图书做限制,拥有资格的读者,才可以借阅相应的图书,当然读者访问图书馆时,图书管理员会对他们的浏览、借阅信息进行记录。
对于Samba服务器来说,其主配置文件smb.conf记录了共享的目录列表。比如share目录,temp目录等。对于每个共享目录,需要配置相应权限,服务器会根据smb.conf文件中的设置,判断客户端是否有权限访问,只有拥有权限才可以访问服务器的资源。Samba服务器同样会对用户的行为进行记录,每一次访问的信息都会记录在日志文件中,以便我们Linux管理员查询哪些客户端访问过Samba服务器。
我们大致讲了Samba工作流程后,下面我们将对Samba具体配置过程中遇到的重要概念进行详细讲解哈~~
3.1 主要配置文件smb.conf
我们先从最重要的配置文件开始哦,Samba的配置文件一般就放在/etc/samba目录中,主配置文件名为smb.conf。如果把Samba服务器比喻成一个公共图书馆,那么/etc/samba目录中,那么主配置文件/etc/samba/smb.conf文件,就相当于这个图书馆的图书总目录,记录着大量的共享信息和规则,所以该文件是samba服务非常重要的核心配置文件哈,几乎绝大部分的配置文件都在该文件中进行滴。此外,在smb.conf这个配置文档中本身就含有非常丰富的说明哈,所以在我们配置之前可以先看一下这样说明性的文字。
我们先看一下smb.conf这个文件哈:vim /etc/samba/smb.conf
smb.conf配置文件有288行内容,配置也相对比较复杂哈,不过我们不用担心,Samba开发组按照功能不同,对smb.conf文件进行了分段划分,条理非常地清楚哈。
下面我们来具体看下smb.conf的内容哈,smb.conf大致分为三个部分,我们来了解一下,其中我们经常要使用到的字段,我们将以实例解释,其他字段我们整理到字段汇总,有兴趣的可以去看下哈~~
1、samba配置简介
smb.conf文件的开头部分为samba配置简介,告诉我们smb.conf文件的作用及相关信息。
smb.conf中以“#”开头的为注释,为用户提供相关的配置解释信息,方便用户参考,不用修改它哈。
smb.conf中还有以“;”开头滴,这些都是samba配置的格式范例,默认是不生效滴,可以通过去掉前面的“;”并加以修改来设置想使用的功能。
2、Global Settings
Global Settings设置为全局变量区域。那什么是全局变量哈?全局变量就是说我们只要在global时进行设置,那么该设置项目就是针对所有共享资源生效滴。这与以后我们学习的很多服务器配置文件相似哈。
该部分以[global]开始:
smb.conf配置通用格式,对相应功能进行设置:字段=设定值
下面我们说下[global]常用字段及设置方法:
1)设置工作组或域名称
工作组是网络中地位平等的一组计算机,可以通过设置workgroup字段来对samba服务器所在工作组或域名进行设置。
我们设置samba服务器的工作组为RHEL5
2)服务器描述
服务器描述实际上类似于备注信息哈,在一个工作组中,可能存在多台服务器,为了方便用户浏览,我们可以在server string配置相应描述信息,这样用户就可以通过描述信息知道自己要登录哪台服务器了啊~
我们设置samba描述信息为“RHEL5 File Server”。
3)设置samba服务器安全模式
samba服务器有share、user、server、domain和ads 五种安全模式,用来适应不同的企业服务器需求。
(1)share安全级别模式
客户端登录samba服务器,不需要输入用户名和密码就可以浏览samba服务器的资源,适用于公共的共享资源,安全性差,需要配合其他权限设置,保证samba服务器的安全性。
(2)user安全级别模式
客户端登录samba服务器,需要提交合法帐号和密码,经过服务器验证才可以访问共享资源,服务器默认为此级别模式。
(3)server安全级别模式
客户端需要将用户名和密码,提交到指定的一台samba服务器上进行验证,如果验证出现错误,客户端会用user级别访问。
(4)domain安全级别模式
如果samba服务器加入windows域环境中,验证工作服将由windows域控制器负责,domain级别的samba服务器只是成为域的成员客户端,并不具备服务器的特性,samba早期的版本就是使用此级别登录windows域滴。
(5)ads安全级别模式
当samba服务器使用ads安全级别加入到windows域环境中,其就具备了domain安全级别模式中所有的功能并可以具备域控制器的功能。
3、Share Definitions共享服务的定义
Share Definitions设置对象为共享目录和打印机,如果我们想发布共享资源,需要对Share Definitions部分进行配置。Share Definitions字段非常丰富,设置灵活。
我们先来讲下几个最常用的字段哈~
1)设置共享名
共享资源发布后,必须为每个共享目录或打印机设置不同的共享名,给网络用户访问时使用,并且共享名可以与原目录名不同。
共享名设置非常简单:[共享名]
我们来看个例子,Samba服务器中有个目录为/share,需要发布该目录成为共享目录,定义共享名为public
2)共享资源描述
网络中存在各种共享资源,为了方便用户识别,可以为其添加备注信息,以方便用户查看时知道共享资源的内容是什么哈。
格式:comment = 备注信息
举个例子哈,samba服务器上有个/sales目录存放公司销售部的数据,为了对公司部门员工进行区分,可以添加备注信息。
3)共享路径
共享资源的原始完整路径,可以使用path字段进行发布,务必正确指定。
格式:path =  绝对地址路径
samba服务器上/share/tools目录存放常用工具软件,需要发布该目录为共享,我们可以这样做。
4)设置匿名访问
共享资源如果对匿名访问进行设置,可以更改public字段。
格式:
public = yes     #允许匿名访问
public = no      #禁止匿名访问
samba服务器/share共享目录允许匿名用户访问,可以这样设置。
5)设置访问用户
如果共享资源存在重要数据的话,需要对访问用户审核,我们可以使用valid users字段进行设置哈~
格式:
valid users = 用户名
valid users = @组名
我们来看下面一个例子哈,samba服务器/share/tech目录存放了公司技术部数据,只允许技术部员工和经理访问,技术部组为tech,经理帐号为gm
6)设置目录只读
共享目录如果限制用户的读写操作,我们可以通过readonly实现哈~
格式:
readonly = yes    #只读
readonly = no     #读写
samba服务器公共目录/public存放大量共享数据,为保证目录安全我们只允许读取,禁止写入哈~
7)设置目录可写
如果共享目录允许用户写操作,可以使用writable或write list两个字段进行设置哈~
writable格式:
writable = yes      #读写
writable = no       #只读
write list格式:
write list = 用户名
write list = @组名
注意:
[homes]为特殊共享目录,表示用户主目录。
[printers]表示共享打印机。
3.2 Samba服务日志文件
日志文件对于samba非常滴重要哈,它存储着客户端访问samba服务器的信息,以及samba服务的错误提示信息等,可以通过分析日志,帮助解决客户端访问和服务器维护等问题。
在/etc/samba/smb.conf文件中,log file为设置samba日志的字段。
samba服务的日志文件默认存放在/var/log/samba/中,其中samba会为每个连接到samba服务器的计算机分别建立日志文件。
我们启动smb服务:/etc/rc.d/init.d/smb start
使用ls -a命令可以查看日志的所有文件。
其中,当samba服务器刚刚建立好后,只有两个文件,分别是nmbd.log和smbd.log,它们分别记录nmbd和smbd进程的运行日志。
nmbd.log记录nmbd进程的解析信息。
smbd.log记录用户访问samba服务器的问题,以及服务器本身的错误信息,可以通过该文件获得大部分的samba维护信息。
当客户端通过网络访问samba服务器后,会自动添加客户端的相关日志。
所以哈,我们Linux管理员可以根据这些文件来查看用户的访问情况和服务器的运行情况。另外当samba服务器工作异常时,也可以通过/var/log/samba/下的日志进行分析哈~
3.3 Samba服务密码文件
samba服务器发布共享资源后,客户端访问samba服务器,需要提交用户名和密码进行身份验证,验证合格后才可以登录。samba服务为了实现客户身份验证功能,将用户名和密码信息存放在/etc/samba/smbpasswd中,在客户端访问时,将用户提交资料与smbpasswd存放的信息进行比对,如果相同,并且samba服务器其他安全设置允许,客户端与samba服务器连接才能建立成功哈~
那如何建立samba帐号呢?偶在说之前先强调一点哈,samba帐号并不能直接建立滴,需要先建立Linux同名的系统帐号。比如如果我们要建立一个名为michael的samba帐号,那Linux系统中必须提前存在一个同名的michael系统帐号。
samba中添加帐号命令为smbpasswd,命令格式:
smbpasswd -a 用户名
我们来测试下,在samba服务器中添加samba帐号redking,我们建立samba帐号之前必须先添加相对应的系统帐号,使用useradd命令建立帐号redking,然后执行passwd命令为帐号redking设置密码哈~最后我们添加redking用户的samba帐号,执行smbpasswd添加帐号redking到samba配置文件中。
OK,Samba帐号添加完毕哈,如果我们在添加samba帐号时输入完两次密码出错:Failed to modify password entry for user amy,就像下面这样
这是因为Linux本地用户里没有amy这个用户,我们在系统里面添加一下就OK了哈~
呵,所以哈,务必要注意在建立samba帐号之前,一宍,%

Linux下搭建samba服务器:

1、相关的文件
   samba-common   samba服务器的主文件
   samba          服务器端的软件
   samba-client   客户端的软件
   redhat-config-samba    图形界面的配置文件
   samba-swat     web配置工具
   2、步骤
   1)安装SAMBA服务器
   (1)检测是否安装samba
    #rpm -qa | grep samba
    (2)安装:将第一张光盘放入光驱
    #mount /mnt/cdrom
    #cd /mnt/cdrom/RedHat/RPMS
    #ls samba*.*
    #rpm -ivh samba-common-2.2.7a-7.9.0.i386.rpm
    #rpm -ivh samba-2.2.7a-7.9.0.i386.rpm
    #rpm -ivh samba-client-2.2.7a-7.9.0.i386.rpm
    #cd /
    #umount /mnt/cdrom
    #eject
   2)设置samba的密码文件
    (1)成批用户密码文件的生成
     #cat /etc/passwd | mksmbpasswd.sh > /etc/samba/smbpasswd
     (2)删除一些无用的shell帐户
     #vi /etc/samba/smbpasswd
     从1到9。
     (3)设置目录和文件的权限
    #chown root.root /etc/samba/smbpasswd
    #chmod 500 /etc/samba
    #chmod 600 /etc/samba/smbpasswd
    #ll -d /etc/samba
     (4)单个用户设置samba密码
     #useradd wujianan
     #passwd wujianan
     #smbpasswd -a wujianan
  3)启动samba服务器
     #service smb start
     #pstree | grep mbd
     #smbclient -L localhost或者IP地址
  4)配置samba的共享
    #vi /etc/samba/smb.conf
    [global]
      workgroup = workgroup
      server string = samba server
     ;hosts allow = 192.168.1. 192.168.2. 127.
     printcap = /etc/printcap
     load prints = yes
     printing = cups
     ;guest account = pcguest
     log file = /var/log/samba/%m.log
     max log size = 0
     安全选项
     security = user(share)
     encrypt passwords = yes
     smb passwd file = /etc/samba/smbpasswd
   ;interfaces = 192.168.12.2/24 192.168.13.2/24
    dns proxy = no
     设置每个用户主目录共享
     [homes]
     comment = Home Directries
     browseable = no  不允许浏览共享文件夹
     writeable = yes  允许写入
     valid users = %s    
     create mode = 0664
     directry mode = 0775  
     [printers]
     comment = All prints
     path = /var/spool/samba
     browseable = no 
     printable = yes
     [doc]
     comment =  doc
     path = /home/doc
     browseable = no
     writeable = no或 read only = yes
     guest ok = yes
   示例:
   要求:创建一个共享目录,所有用户都可访问,权限为只读。  
   #vi /etc/samba/smb.conf
   workgroup = workgroup
   server string = samba server
   netbios name = RH9
   dos charset = cp936
   unix charset = cp936
   secrity = share
   [read]
    comment = read
    path = /home/read
    public = yes
    guest ok = yes
    read only = yes
保存退出
    #mkdir /home/read
    #service iptables stop
    #service smb start
    #testparm
   \ip地址
创建一个可写的目录,允许所有用户可写入。 
[write]
   comment = write
   path = /home/write
   public = yes
   guest ok = yes
   writeable = yes
  保存退出
   #mkdir /home/write
   #chmod 777 /home/write
   #service iptables stop
   #service smb restart
   为指定的用户和组访问samba服务器
   #useradd mehost
   #passwd wujianan
   #smbpasswd -a wujianan
   #mkdir /var/samba/wujianan
   #chown stu1.stu1 /var/samba/wujianan
   #vi /etc/samba/smb.conf
   
    security = user
    
    [wujianan]
      comment = wujianan
      path = /var/samba/wujianan
      valid users = wujianan
      public = yes
      writeable = yes
   保存退出
    #service smb restart
      最简单的电影服务器的配置
    #vi /etc/samba/smb.conf
     workgroup = workgroup
     server string = movies server
     guest account = nobody
     security = share
     client code page = cp936
     wins support = yes
    [movies]
      comment = movies
      browseable = yes
      writeable = no
      path = /movies
      guest ok = yes
      read only = yes
     保存退出
     #mkdir /movies
     #useradd admin -d movies
     #passwd admin
     #vi /etc/passwd
     admin:x:0:500::/movies:/bin/bash
     保存退出
     #ntsysv
       选择smb和vsftp项
     #service smb start
     #service vsftpd start
     #service iptables stop


启动samba,注意两点:

1、禁用selinux
2、共享目录的权限


+++++++++++++++++++++++++++++++++++++++++

SAMBA软件用于在不同平台之间(Linux/Unix/Windows)共享文件。

1

SMB:Service Message Block               程序全名

CIFS: Common Internet FileSystem     程序全名

2

samba启动的的三个进程,都是为了与Windows主机实现文件共享向工作的

smbd:共享文件

nmbd:向Windows主机广播自己的IP

winbind:默认不启动,Linux主机在Windiws域中时使用

3

Port:137/UDP(netbios),138/UDP(netbios),139/TCP(netbios),445/TCP(smb over TCP/IP)

4

软件包:

samba.i386服务器端软件包

samba-swat.i386 网页功能的samba

5

配置文件:

/etc/init.d/smb

/etc/samba/smb.conf

6

Ps:在新版本中,samba接受selinux的控制,所以在配置时,我们最好先关闭selinux

7

配置文件:

[global]

;       interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24监听的IP

;       hosts allow = 127. 192.168.12. 192.168.13.  允许的IP

;       log file = /var/log/samba/%m.log          记录日志 宏%m表示当前主机的主机名

;       max log size = 50                  日志文件大小

        security = user              samba安全级别,主要根据用户验证方式

                            share:公共

                            user:根据用户名密码

                            domain:根据域

                            server:集中式认证

                            ads:

        passdb backend = tdbsam      账号的数据库文件

[homes]

        comment = Home Directories       说明信息

        browseable = no            不允许随意浏览

        writable = yes               允许上传文件

;       valid users = %S            定义哪些用户可以访问此共享

[printers]

        comment = All Printers         显示所有打印机

        path = /var/spool/samba        能够访问到的打印机

        browseable = no            不允许匿名访问打印机

        guest ok = no                来宾账号是否允许访问打印机

        writable = no

        printable = yes

;       [netlogon]

;       comment = Network Logon Service

;       path = /var/lib/samba/netlogon

;       guest ok = yes

;       writable = no

;       share modes = no

;       [Profiles]

;       path = /var/lib/samba/profiles

;       browseable = no

;       guest ok = yes

8

我们使用用户登录时,需要创建专供samba使用的用户名密码,直接将本地存在的用户添加为samba用户即可,使用smbpasswd命令

smbpasswd

       -a 添加samba用户

       -x 删除用户

       -d 临时禁用某个用户

       -e 启用禁用的账号

9

testparm检查配置文件,敲回车显示在生效的命令


10   


实例:

#yum install samba

#vim /etc/samba/smb.conf

在最后面添加共享目录:

[share]                           这里起得名字是表示共享的目录

        comment = my share folder

        path = /sharing

        browseable = Yes

        guest ok = Yes

        writable =Yes

(writable = Yes 和 read only =No 的作用是一样的)

#testparm                                    检查配置文件

#useradd zoe                          创建用户

#smbpasswd -a  zoe              将用户添加到samba中并添加密码

#chcon -R -t samba_share_t /sharing/   递归修改其标签在,这个在selinux中会讲到


#setfacl –m u:zoe:rwx /sharing     修改用户对于/sharing的权限

结束

现在你就可以在windows中使用网上邻居工作组搜索该主机,登陆进去访问sharing目录了

11

如何使用Linux作为客户端访问samba共享文件:

在这里我们使用的命令是smbclient:

Smbclient

-L hostname/IP       查看指定主机上的共享资源

-U username[%password]      使用指定用户名登陆

smbclient //HOST/SHARE -U username%passwd

例子:smbclient //192.168.0.3/share -U zoe%redhat

12

访问控制:

在前面的[share]中添加即可对/sharing目录进行限制

hosts allow = 192.168.12.     允许192.168.12.0网段的主机访问

testpqrm /etc/samba/smb.conf station34.example.com 192.168.0.34        测试指定主机是否能够访问指定的共享文件

写访问控制:

write list = @peguin      表示只有组中的成员可写

write list = @zoe           表示只有zoe用户可写

13

让一个组都有写权限:

groupadd peguin

useradd -G peguin fedora

usradd -G peguin gentoo

smbpasswd -a fedora

smbpasswd -a gentoo

setfacl -m geguin:rwx /sharing/

此时,peguin族中的成员都可以访问共享文件夹

14

我们在前面就关闭了selinux,那么我们也可以打开selinux,修改它的规则以支持我们samba的工作。

修改selinux 以支持samba的部分功能:

selinux默认为不支持samba使用家目录

getsebool -a | grep samba                    查看selinux中包含samba的选项

samba_domain_controller --> off

samba_enable_home_dirs --> off         该项表示不允许使用家目录

samba_export_all_ro --> off

samba_export_all_rw --> off

samba_share_nfs --> off

use_samba_home_dirs --> off

virt_use_samba --> off

setsebool -P samba_enable_home_dirs=1    -P表示修改原文件,使它永久生效

这样子selinux就不影响我们的samba了

15

我们也可以直接将别的linux主机共享的samba目录挂载到本机使用,这样子是不是就十分方便了~

挂载其他主机共享的samba目录:

mount -t cifs //192.168.0.73/share /mnt -o username=redhat

表示挂载0.73主机上共享的share目录到本地的/mnt目录,使用的用户名是redhat

16

关于samba-swat

可以讲samba-swat看做网页版的samba,就是痛过网页管理samba,这样很方便我们进行远程管理,这里不多说了,大家英文好的看看就明白了。

它属于非独立守护进程

监听tcp 901端口

默认只允许来自127.0.0.1的地址访问

实例:

#yum –y install samba-swat

#cd /etc/xinetd.d/

#vim swat

修改为下面的内容

service swat

{

        port            = 901

        socket_type     = stream

        wait            = no

        only_from       = 192.168.0.0/24    这里表示允许192.168.0.0网段主机访问,根据情况自己修改

        user            = root

        server          = /usr/sbin/swat

        log_on_failure  += USERID

        disable         = no                        表示启动

}

#Service xinetd restart

完成,下面就可以通过浏览器访问控制了,假如我的samba主机是0.3

http://192.168.0.3:901/

使用用户名密码登陆就OK啦


++++++++++++++++++++++++++++++++++++++

windows访问samba服务器共享文件的简单实现!

一、linux的文件共享(当然也包括和windows进行文件共享)一般有NFS  
, FTP, SSH SAMB等,但是以samba最为普遍和流行。下面就对samba服
务器做个全面的介绍和讲解:

二、samba文件共享服务器的环境
   1、所需软件包
      samba-common-3.0.33-3.7.el5-------公共软件包
samba-client-3.0.33-3.7.el5-----------客户机软件包
samba-3.0.33-3.7.el5--------------------服务器软件包
   2、samba服务器的Ip地址是192.168.1.112
   3、windows客户端ip地址是192.168.1.119
   4、linux客户端ip地址是    192.168.1.113
三、windows访问samba服务器共享文件的简单实现
   1、samba用户的建立---------------建立与系统同名的账户
   2、linux系统账户为www_xylove
   3、建立linux系统同名samba账户www_xylove
   4、命令smbpaswd  -a  www_xylove
      [root@www samba]# smbpasswd -a www_xylove-------
增加samba账户

New SMB password:
Retype new SMB password:
Added user www_xylove.------------------已经增加了一个samba
   账户

   5、等会使用www_xylove在windows系统下访问samba服务器,
       实现简单文件共享

   6、实现用户www_xylove在windows系统下访问samba服务器的
        www_xylove宿主目录

      /etc/samba/smb.conf 以下是默认配置:(默认配置就可以访问用户
      的宿主目录)


[global]
workgroup = MYGROUP
        server string = Samba Server Version %v
     security = user
     passdb backend = tdbsam
  
[homes]
        comment = Home Directories
        browseable = no
        writable = yes
7、好的,现在我们登入windows XP客户机来访问我们的samba服务器
   01 在“运行”栏输入

\\192.168.1.112
      
02、输入samba服务器的samba账户和密码

 www_xylove
       *******

03、成功登入linux samba服务器

                        可以看到www_xylove主目录

04、打开用户www_xylove的宿主目录就可以访问自己的文件和目录了





05、samba用户成功访问samba服务器的自己的宿主目录,
且对自己的目录有写的权限,对其他samba用户是不可见的。


8、在/etc/samba/smb.conf文件里添加一个公共目录,以供所有的
     samba用户访问。

/etc/samba/smb.conf配置文件添加如下:


        [public]
        comment = public directory
        path = /home/public
        public = yes
        writable = yes
        only guest = yes

9、好的,我们来看看实际的操作:
   01、看到了public目录


02、打开[public]目录看看


03、我们成功的访问了[public]公共目录
 
 

举报



++++++++++++++++++++++++++++++++

linux中samba的安装:

为了实现Windows主机与Linux服务器之间的资源共享,Linux操作系统提供了Samba服务,Samba服务为两种不同的操作系统架起了一座桥梁,使Linux系统和Windows系统之间能够实现互相通信,为广泛的Linux爱好者提供了极大方便。本文简要介绍如何在Linux操作系统上搭建Samba服务器和简单配置。

1、服务查询
        默认情况下,Linux系统在默认安装中已经安装了Samba服务包的一部分 ,为了对整个过程有一个完整的了解,在此先将这部分卸载掉。使用命令 
rpm -qa | grep samba ,默认情况下可以查询到两个已经存在的包:
        samba-client-3.0.33-3.7.el5
        samba-common-3.0.33-3.7.el5

2、卸载Samba
        用rpm -e 将两个包卸载掉。对于samba-common-3.0.33-3.7.el5,因为与其它rpm包之间存在依赖关系,所以必须加参数-f和--nodeps,-f是指强制,--nodeps是指不检查依赖关系,具体完整命令为:
        rpm -e samba-common-3.0.33-3.7.el5 -f --nodeps 
        rpm -e samba-client-3.0.33-3.7.el5 -f --nodeps

3、安装Samba 
        用以下命令安装:
                rpm -ivh samba-3.0.33-3.29.el5_6.2.i386.rpm -f --nodeps
                rpm -ivh samba-client-3.0.33-3.29.el5_6.2.i386.rpm  -f --nodeps
                rpm -ivh samba-common-3.0.33-3.29.el5_6.2.i386.rpm -f --nodeps
        安装完成后,使用命令rpm -qa | grep samba进行查询,发现搭建samba服务器所依赖的所有服务器都已经安装好了即可。

4、配置smb.conf文件
        Samba的配置文件一般就放在/etc/samba目录中,主配置文件名为smb.conf,文件中记录着大量的规则和共享信息,所以是samba服务非常重要的核心配置文件,完成samba服务器搭建的大部分主要配置都在该文件中进行。
        Samba服务器的工作原理是:客户端向Samba服务器发起请求,请求访问共享目录,Samba服务器接收请求,查询smb.conf文件,查看共享目录是否存在,以及来访者的访问权限,如果来访者具有相应的权限,则允许客户端访问,最后将访问过程中系统的信息以及采集的用户访问行为信息存放在日志文件中。 

        第一步:修改配置文件
     首先备份一下samba的配置文件
                cd /etc/samba
                mv smb.conf smb.confbak
        然后重新创建一个smb.conf文件
                touch smb.conf
        然后我们把这段写入smb.conf中 
                [global]

                     workgroup = LinuxSir
            netbios name = LinuxSir05
            server string = Linux Samba Server TestServer
            security = share

         [linuxsir]
                    path = /opt/linuxsir
                    writeable = yes
                                browseable = yes 
           guest ok = yes

        注解:        [global]这段是全局配置,是必段写的。其中有如下的几行;
                workgroup 就是Windows中显示的工作组;在这里我设置的是LINUXSIR (用大写);
                netbios name 就是在Windows中显示出来的计算机名;
                server string 就是Samba服务器说明,可以自己来定义;这个不是什么重要的;
                security 这是验证和登录方式,这里我们用了share ;验证方式有好多种,这是其中一种;另外一种常用的是user的验证方式;如果用share呢,就是不用设置用户和密码了;
        [linuxsir] 这个在Windows中显示出来是共享的目录;
                path = 可以设置要共享的目录放在哪里;
                writeable 是否可写,这里我设置为可写;
                browseable 是否可以浏览,可以;可以浏览意味着,我们在工作组下能看到共享文件夹。如果您不想显示出来,那就设置为 browseable=no
                guest ok 匿名用户以guest身份是登录;

        第二步:建立相应目录并授权; 
                                [root@localhost ~]# mkdir -p /opt/linuxsir
                                [root@localhost ~]# id nobody
                uid=99(nobody) gid=99(nobody) groups=99(nobody)
                [root@localhost ~]# chown -R nobody:nobody /opt/linuxsir             注释:
                关于授权nobody,我们先用id命令查看了nobody用户的信息,发现他的用户组也是nobody,我们要以这个为准。有些系统nobody用户组并非是nobody ; 

                第三步:启动smbd和nmbd服务器;
                     [root@localhost ~]# smbd

                     [root@localhost ~]# nmbd


+++++++++++++++++++++++++++++++++

samba服务器的连接原理:

Samba服务主要由以下两个进程组成:

(1)nmbd:进行NetBIOS名称解析,提供浏览服务显示网络上的共享资源列表。
(2)smbd:管理Samba服务器上的共享目录、打印机等。主要是针对网络上的共享资源进行管理服务。当要访问服务器时,要查找共享文件,这时要靠smbd这个进程来管理数据传输。


Samba服务与Samba客户端的工作流程如下:

(1)协议协商:客户端在访问Samba服务器时,发送negprot命令包,告知目标计算机其支持的SMB类型。Samba服务器根据客户端情况,选择最优的SMB类型,并做出回应。
(2)建立连接:当SMB类型确认后,客户端会发送session setup命令数据包,提交账号、密码,请求与Samba服务器建立连接。如果客户端通过身份验证,Samba服务器会对session setup报文做出回应,并为用户分配唯一的UID,在客户端与其通信。
(3)访问共享资源:客户端访问Samba共享资源时,发送tree connect命令数据包,通知服务器需要访问的共享资源名,如果设置允许,Samba服务器会为每个客户与共享资源的连接分配TID,客户端即可以访问需要的共享资源。
(4)断开连接:共享完毕,客户端向服务器发送tree disconnect报文关闭共享。、


++++++++++++++++++++++++++++++++

linux下samba的配置实现:

前言:

为了实现windows 和 Linux以及其他操作系统之间的资源共享,软件商推出nfs 和samba两种解决方式。由于市场上缺乏象pc-nfs那样的客户端工具,使得Linux和windows的资源共享变得复杂。Samba的出现解决了 这一问题,它以其简洁、实用、灵活配置的特点受到越来越多人们的广泛关注。
Windows利用SMB协议来实现操作系统间文件和打印机共享,而Samba本身具备SMB协议,它实现局域网内和Windows系列计算机的资源共享。
本文就Samba在Linux系统下的配置为重点,讨论局域网内windows 与 Linux 的资源共享。

一、Samba 介绍
1、SMB协议
SMB (Server Message Block,服务信息块) 协议,是局域网上的共享文件/打印机的一种协议,它可以为网络内部的其他windows和linux 机器提供文件系统、打印服务。SMB的工作原理是让NetBIOS和SMB运行在TCP/IP之上,且使用NetBIOS的nameserver让 linux机器可以在windows 网络邻居里被浏览。

2、Samba
Samba是用来实现SMB的一种软件,由澳大利亚的Andew Tridgell开发,是一种在Linux 环境里运行的自由软件。它可以完成如下功能:
文件服务和打印服务,实现Windows和Linux的资源共享。
登录服务器,可以作为局域网的服务器。
作为主域控制器。
WINS服务器。
支持SSL。
支持SWAT。

二、 Samba服务
1、 核心进程
Samba 有两个守护进程:smbd 和nmbd,它们是Samba的核心进程。nmbd进程使其他计算机浏览Linux服务器,Smbd进程在SMB服务请求到达时对它们进行处理,并且为使用或共享的资源进行协调。

2、 启动服务
Samba 有两种启动方式:Daemon形式和Inetd形式。
(1)Daemon形式 建立启动脚本:rc.samba
smbd -D -d1
nmbd -D -d1

-D 表示以Daemon形式执行;-d1 表示除错记录级别
执行脚本文件rc.samba

(2)Inetd形式
设置文件:/etc/services
netbios -ssn 139/ tcp
netbios -ns 137/ udp

设置文件:/etc/inetd.conf
netbios -ssn stream tcp nowait root /usr/sbin/smbd smbd
netbios -ns dgram udp wait root /usr/sbin/nmbd nmbd

重启动Inetd daemon
# kill -HUP 1

3、 客户工具 smbclient
Smbclient命令用来存取远程Samba服务器上的资源。其命令形式与ftp相似。
命令语法是:#smbclient [password] [option]
(1) 解释:servicename是要连接的资源名称,资源名称的形式如下:
//server/service server 是远程服务器的NetBIOS名字,对于windows服务器而言,就是出现在网上邻居中的名字。
Service是各server所提供的资源的名字。
pssword 是存取该资源所需的口令
option 各种命令选项,其中 -L 用于列出远程服务器提供的所有资源
-I 指定远程服务器的IP地址。此时,servicesname 中的NetBIOS名部分将被忽略。

(2)多种smbclient命令:
执行smbclient命令成功后,进入smbclient环境,出现提示符: smb:/>
这里有许多命令和ftp命令相似,如cd 、lcd、get、megt、put、mput等。通过这些命令,我们可以访问远程主机的共享资源。

4、 Samba系统装载与卸载
(1) 装载其他主机的资源
我们可以利用Samba提供的smbmount命令,装载其他主机的共享资源。
Smbmount的命令语法:# smbmount
其中 servicename 是资源名,mount-point是安装点。

例如: # smbmount "//server/tmp" -c ' mount /mnt'
表示:把名字为“server”的计算机上的共享资源“tmp”的内容装载到本地的 /mnt
目录下。

(2) 卸载资源
卸载一个已经装载的SMB文件系统,使用smbunmount命令,同时指定要卸载的装载点。 例如: # smbunmount / mnt

三、Samba配置
Samba组件的配置文件是 /etc/smb.conf ,该文件几乎包含了Samba系统程序运行时所需的所有配置信息。

1、 配置选项
配置文件中有比较重要的几个节:[gloabal]、[homes]、[printers],下面分别给与说明。
(1)[gloabal]节 在全局参数中,参数的设置直接影响samba系统。
NetBIOS name:设置主机名称
Workgroup:用来指定主机所在网络上所属的NT域名或者工作组名称。格式是
Workgroup= Nt Domain-Name or workgroup-name
Server string:用来设置本机描述,缺省是 Samba Server
Host Allow:它允许设置哪些领域的机器可以访问它的Samba服务器
Load printers:允许自动加载打印机列表,而不需要单独设置每一台打印机。
Interface:配置Samba使用多个网络界面。
Domain controller: 仅当网络中有一台在安装时设置为主域控制器时使用此选项。
Security: 设置安全参数,定义安全模式。Samba 的安全模式有四种
Share、 user、 server 、domain
encrypt passwords 、smb passwd file:用于适用加密口令。

下面是一段参数配置例子:
[global]
smb passwd file = /etc/smbpasswd
remote announce = 172.18.158.234 172.18.153.55 172.18.153.255
dns proxy = no
security = user
encrypt passwords = yes
server string = Ftp Server
workgroup = turing
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
log file = /var/log/samba/log.%m
load printers = yes
guest account = dscan
remote browse sync = 172.18.158.234 172.18.153.55 172.18.153.255
printcap name = /etc/printcap
max log size = 50
hosts allow = 172.18.158. 172.18.153. 127.
... ...

(2)[homes]节 所有使用者的home目录
当任何一个客户访问Samba服务器时,在网络资源中都能出现自己的home目录共享。其配置如下:
[homes]
comment = Hnnw Directories
browseable = no
writable = yes
(3)用户共享目录
用来指定某一特定用户组或者用户拥有访问权限的目录配置,下列参数配置仅有hnnw组的用户有权访问目录/home/samba。
[public]
comment = Public Hnnw
path = /home/samba
public = yes
writable = yes
printable = no
write list = @hnnw

2、 用户映射
全局参数“username map”用来控制用户映射,它允许管理员指定一个映射文件,该文件包含了在客户机和服务器之间进行用户映射的信息。
如:username map= /etc/smbuser
用户映射经常在windows 和linux 主机间进行。 两个系统拥有不同的用户账号,用户映射的目的是将不同的用户映射成为一个用户,便于共享文件。
下面是一个映射文件的例子:
# Map Windows admin to root
root=admin administrator
;Map the member of developer to studio
studio = @developer

等号左边是单独的Linux账号,等号右边是要映射的账号列表。
服务器逐行分析映射文件,如果提供的账号和某行有右侧列表中的账号匹配,就把它
替换为等号左边的账号。

3、 使用加密口令
新版本的windows 95以及windows98、winnt(sp3以上版本),在网络传输中仅传递加密口令作为用户认证的信息。这类客户机和不支持加密口令并且以user 安全级运行的Samba服务器通讯时,会出现故障。为了正常的通讯,samba服务器使用加密口令。下面讨论如何在samba中使用加密口令。
(1) 口令文件 /etc/smbpasswd
为了使用加密口令,samba 需要一份口令文件(/etc/smbpasswd),并且该文件应该和Linux的口令文件(/etc/passwd)保持同步。下面是生成文件命令:

# cat /etc/password | mksmbpasswd > /etc/smbpasswd

smbpasswd 是需要的口令文件,其权限是0600,所有者是root
smbpasswd和passwd文件的记录对应,密码部分不同。密码有两部分组成,每部分
是32个"X",前部分用于和Lanman通讯,后部分和Windows NT通讯。
Root用户可以使用smbpasswd命令为每个用户设定samba口令。

(2) 修改配置文件 /etc/smb.conf
要使Samba使用加密口令,需要在配置文件smb.conf中加入如下参数。
Encrypt passwords=yes
Smb passwd file= /etc/smbpasswd
第一行通知samba使用加密口令,第二行给出口令文件的位置。

(3) 重启动samba 服务。
修改完配置文件后,需要重新启动samba服务,可用如下命令:
# /usr/sbin/samba restart

4、windows系统中的明码口令使用
Samba系统中使用明码口令作为连接SMB的默认设置。当SMB服务器对协商协议做出响应时,响应信息包含了一位,以说明服务器是否支持询问或者响应加 密。随着win95的网络重定向更新程序的发布,Microsoft修改了默认值,这样,windows客户就不会向不支持加密的服务器发送明码口令了。
在这种情况下,有两种解决办法:
(1)设置Samba服务器使用加密口令
(2)让windows客户使用明码口令
这里选用第2种解决办法,通过修改注册表来实现。下面对win95/win98、winnt用户分别给与说明。
(1)win98/win95系统用户
在注册表中加入下列注册字,并重新启动机器:
[HKLM/System/CurrentCntrolSet/Services/VxD/VNETSUP]
“EnablePlainTextPAssword”= dword:00000001

(2)Winnt系统用户
修改注册表,加入下列注册表项,并重新启动机器:
[HKLM/System/CurrentCntrolSet/Services/Rdr/Parameters]
“EnablePlainTextPAssword”= dword:00000001

四、Samba应用
1、 windows资源共享与使用
(1)windows资源共享
a. 使用TCP/IP协议作为网络默认通讯协议
b. 修改网络配置,设置文件和打印机共享。
c. 设置好计算机名和所属工作组
d.共享系统资源

(2)在windows系统中使用Linux共享资源
a. 登录进入windows网络
b. 通过网上邻居查看、使用共享资源。
c. 命令行下工具使用共享资源
使用命令行下的net.txt工具来查看、使用共享资源:
net use 命令的语法: c:>net use X://servername/sharename
在这里,X:是共享的驱动器盘符,//servername/sharename是到共享的UNC的网络路径。
例如: c:/>net use h://hey/myfile
表示:将hey机器上的myfile共享资源映射为本地的h盘

2、Linux资源共享与使用
(1)将Linux 的资源共享
通过编辑Samba配置文件,添加需要共享的Linux资源。同时可以设定访问此资源的用户群及其访问权限。下面是一段例子,将本机的 /public/data 目录共享,所有人都有读写权限。
[data]
comment = Public Data
path = /public/data
public = yes
writable = yes
printable = no

(2)在Linux中使用共享资源
可以使用smbclient命令,访问所有的Samba资源。具体使用方法见前述。

五、Samba应用程序
smbclient :访问所有共享资源
smbstatus: 列出当前所有的samba连接状态
smbpasswd:修改samba用户口令、增加samba用户。
Nmblookup:用于查询主机的NetBIOS名,并将其映射为IP地址
Testparam: 用于检查配置文件中的参数设置是否正确


+++++++++++++++++++++

研究了下samba的实现:

1.安装samba software(如果用rpm包安装需要安装yum仓库)
[root@oracle11g public]# rpm -qa |grep samba
samba-swat-3.0.33-3.14.el5             网页方式管理samba
samba-3.0.33-3.14.el5                     主服务器软件
system-config-samba-1.2.41-5.el5    红帽子专用图像界面配置samba软件
samba-common-3.0.33-3.14.el5       共享软件
samba-client-3.0.33-3.14.el5            客户端软件
[root@oracle11g public]#


2.列举samba的主要程序、服务脚本及配置文件

(1)samba包括两个进程,及使用端口
smbd用户共享访问
nmbd提供NETBIOS主机名称解析
[root@oracle11g public]# cd
[root@oracle11g ~]# service smb restart
Shutting down SMB services:                                [  OK  ]
Shutting down NMB services:                                [  OK  ]
Starting SMB services:                                     [  OK  ]
Starting NMB services:                                     [  OK  ]
[root@oracle11g ~]#


[root@oracle11g ~]# netstat -nltp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
tcp        0      0 0.0.0.0:139                 0.0.0.0:*                   LISTEN      2653/smbd
tcp        0      0 0.0.0.0:812                 0.0.0.0:*                   LISTEN      3598/rpc.statd
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      3507/portmap
tcp        0      0 0.0.0.0:21                  0.0.0.0:*                   LISTEN      4078/vsftpd
tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      3002/cupsd
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      4536/sendmail: acce
tcp        0      0 0.0.0.0:445                 0.0.0.0:*                   LISTEN      2653/smbd
tcp        0      0 :::22                       :::*                        LISTEN      4042/sshd
[root@oracle11g ~]#


(2)samba服务脚本
[root@oracle11g ~]# /etc/init.d/smb restart
Shutting down SMB services:                                [  OK  ]
Shutting down NMB services:                                [  OK  ]
Starting SMB services:                                     [  OK  ]
Starting NMB services:                                     [  OK  ]
[root@oracle11g ~]#


(3)samba的配置文件
[root@oracle11g ~]# grep -v "^#" /etc/samba/smb.conf |grep -v "^;" |grep -v ^$
[global]
        workgroup = MYGROUP
        server string = Samba Server Version %v
        # logs split per machine
        # max 50KB per log file, then rotate
        security = user                      #表明是不是需要用户访问
        passdb backend = tdbsam
        # the login script name depends on the machine name
        # the login script name depends on the unix user used
        # disables profiles support by specifing an empty path
        load printers = yes
        cups options = raw
        #obtain list of printers automatically on SystemV
[homes]                                                     #这里表明当你用一个用户登录的时候,这个用户的家目录就作为共享目录共享了出来。所以当一个用户不被设置到此脚本时,只要设置smbpasswd -a,依然能用此用户登录到家目录。
        comment = Home Directories
        browseable = no
        writable = yes
[printers]
        comment = All Printers
        path = /var/spool/samba
        browseable = no
        guest ok = no
        writable = no
        printable = yes
        [movie]                                           #共享的名称
        comment = Public movie files            #描述
        path = /var/public/movie                  #共享文件夹的目录
        public = no                                     #是否给公众开放

        valid users = zhongliang,hrj,boy,@girl               #能访问目录的用户名及组名(@后面是组)
        write list = zhongliang                                #给zhongliang写入的权限

       create mask = 0600                         #新建文件的权限
       directory mask = 755                         #新建目录的权限                      
[root@oracle11g ~]#


上面脚本的意思就是新建一个movie的共享,目录为path= ,需要用户访问,读的权限给予valid users= ,写的权限给予write list =,无执行权限。如果用户需要在movie里新建目录或者文件,目录的权限为755,文件的权限为600

3.配置samba的用户密码
(1)需要在linux系统上建立相关用户
[root@oracle11g home]# useradd zhongliang
[root@oracle11g home]# passwd zhongliang
Changing password for user zhongliang.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[root@oracle11g home]#


(也要用同样的方法建立其他的测试用户,如hrj,boy等)
[root@oracle11g ~]# usermod -G  girl ying 把已经存在的用户添加到有共享权限的组里,这里如果usermod -g girl ying就表明ying这个用户改变了私有组。-G表明又加了额外的组,而自己的私有组不变。



查看:
[root@oracle11g ~]# tail /etc/passwd

[root@oracle11g ~]# tail /etc/group

(2)把用户加到samba里
[root@oracle11g home]# smbpasswd -a zhongliang
New SMB password:
Retype new SMB password:
Added user zhongliang.
[root@oracle11g home]#


(也要用同样的方法添加其他用户)

(3)[root@oracle11g home]# service smb restart

4.配置共享文件夹的系统权限和共享权限

[root@oracle11g public]# chown -R zhongliang:zhongliang movie/   
或者
[root@oracle11g public]# chown -R root:root movie/ 
[root@oracle11g public]#chomd 777 movie

解释:zhongliang用户访问共享目录/var/pubic/movie 的条件依靠两个权限,第一是在系统上zhongliang对movie的权限,第二是在smb.conf中zhongliang对movie的权限,两个取交集。所以开放系统权限,只考虑配置smb.conf的权限

另外,如果selinux开着,需要运行
[root@oracle11g ~]# chcon -t samba_share_t '/var/public/movie'来允许selinux放开movie文件夹对samba的共享。

5.测试访问
因为在smb.conf 里给每个用户的权限不一样,所以要对不同的用户进行测试
1)windows里测试登陆
在运行中输入“\IP_ADDRESS”
之后会弹出登陆对话框,输入用户名和密码。
(2)注销登陆
关闭后在cmd中输入net use * /del 清空登陆缓存,使得下一次登陆不会使用上一次的登陆信息。

(3)在linux中测试登录(确保客户端linux中装好samba-client-3.0.33-3.14.el5
[root@oracle11g ~]# smbclient -U zhongliang -L 192.168.0.99    列出这个用户能登录什么目录

[root@oracle11g ~]# smbclient -U zhongliang [url=]//192.168.0.99/movie[/url]   用这个命令就登录进来了

实现windows主机和linux服务器之间资源共享:

为了实现Windows主机与Linux服务器之间的资源共享,Linux操作系统提供了Samba服务,Samba服务为两种不同的操作系统架起了一座桥梁,使Linux系统和Windows系统之间能够实现互相通信,为广泛的Linux爱好者提供了极大方便。本文简要介绍如何在Linux操作系统上搭建Samba服务器和简单配置。

1、服务查询

        默认情况下,Linux系统在默认安装中已经安装了Samba服务包的一部分 ,为了对整个过程有一个完整的了解,在此先将这部分卸载掉。使用命令

        rpm -qa | grep samba ,默认情况下可以查询到两个已经存在的包:
        samba-client-3.0.33-3.7.el5
        samba-common-3.0.33-3.7.el5

2、卸载Samba

        用rpm -e 将两个包卸载掉。对于samba-common-3.0.33-3.7.el5,因为与其它rpm包之间存在依赖关系,所以必须加参数-f和--nodeps,-f是指强制,--nodeps是指不检查依赖关系,具体完整命令为:
        rpm -e samba-common-3.0.33-3.7.el5 -f --nodeps
        rpm -e samba-client-3.0.33-3.7.el5 -f --nodeps

3、安装Samba 

        用以下命令安装:

        rpm -ivh samba-3.0.33-3.29.el5_6.2.i386.rpm -f --nodeps
        rpm -ivh samba-client-3.0.33-3.29.el5_6.2.i386.rpm  -f --nodeps
        rpm -ivh samba-common-3.0.33-3.29.el5_6.2.i386.rpm -f --nodeps
        安装完成后,使用命令rpm -qa | grep samba进行查询,发现搭建samba服务器所依赖的所有服务器都已经安装好了即可。

4、配置smb.conf文件

        Samba的配置文件一般就放在/etc/samba目录中,主配置文件名为smb.conf,文件中记录着大量的规则和共享信息,所以是samba服务非常重要的核心配置文件,完成samba服务器搭建的大部分主要配置都在该文件中进行。
        Samba服务器的工作原理是:客户端向Samba服务器发起请求,请求访问共享目录,Samba服务器接收请求,查询smb.conf文件,查看共享目录是否存在,以及来访者的访问权限,如果来访者具有相应的权限,则允许客户端访问,最后将访问过程中系统的信息以及采集的用户访问行为信息存放在日志文件中。 

        第一步:修改配置文件
        首先备份一下samba的配置文件

        cd /etc/samba
        mv smb.conf smb.confbak

        然后重新创建一个smb.conf文件

        touch smb.conf

        然后我们把这段写入smb.conf中 

        [global]

        workgroup = LinuxSir
        netbios name = LinuxSir05
        server string = Linux Samba Server TestServer
        security = share

        [linuxsir]
        path = /opt/linuxsir
               writable = yes
        browseable = yes 

        guest ok = yes


        注解:
        [global]这段是全局配置,是必段写的。其中有如下的几行;

        workgroup 就是Windows中显示的工作组;在这里我设置的是LINUXSIR (用大写);
        netbios name 就是在Windows中显示出来的计算机名;
        server string 就是Samba服务器说明,可以自己来定义;这个不是什么重要的;
        security 这是验证和登录方式,这里我们用了share ;验证方式有好多种,这是其中一种;另外一种常用的是user的验证方式;如果用share呢,就是不用设置用户和密码了;

        [linuxsir] 这个在Windows中显示出来是共享的目录;
        path = 可以设置要共享的目录放在哪里;
        writeable 是否可写,这里我设置为可写;
        browseable 是否可以浏览,可以;可以浏览意味着,我们在工作组下能看到共享文件夹。如果您不想显示出来,那就设置为 browseable=no

        guest ok 匿名用户以guest身份是登录;

        第二步:建立相应目录并授权; 

        [root@localhost ~]# mkdir -p /opt/linuxsir
        [root@localhost ~]# id nobody
        uid=99(nobody) gid=99(nobody) groups=99(nobody)
        [root@localhost ~]# chown -R nobody:nobody /opt/linuxsir 

        注释:关于授权nobody,我们先用id命令查看了nobody用户的信息,发现他的用户组也是nobody,我们要以这个为准。有些系统nobody用户组并非是nobody ; 


        第三步:启动smbd和nmbd服务器;
        [root@localhost ~]# service smb restart
           [root@localhost ~]# service nmb restart


另:
SElinux要disabled
1)这周我发的一个帖子提到了,selinux默认开启,需要使用setenforce 0终止下,不然客户端无法访问samba服务
2)smb.conf设置username map用户映射后, smbusers文件需要更改下,可能这个文件如果不更新,samba就不会启用原有的映射配置,原有的root到admin的映射也无法使用。
3)samba使用的文件目录需要改成777,否则默认除root外的用户无写入权限,smbclient登录后也无法写文件:这一点会影响到第3题的作业。

+++++++++++++++++++++++++

samba配置错误排错思路:

1、看错误信息
2、看配置文件,使用配置文件检查工具
3、看日志文件的记录,切换到另一个终端对日志文件进行监控
使用:tail –F /var/log/messages
4、 使用testparm命令检测
5、 使用smbclient命令进行测试,如果客户端不能和服务器连接,会出现不同种类的出错信息,可根据不同的出错信息进行判断错误的原因
u tree connect failed(可能是hosts deny字段的设置有问题)
u Connection refused(可能是smbd进程未开启,确保smbd和nmbd进程开启,并使用netstat –a检查netbios使用的139端口是否处于监听状态
u Session setup failed(可能是输入了错误的用户名和密码)
u Your server software is being unfriendly(可能是服务器软件存在问题,配置smbd时使用了错误的参数)





你可能感兴趣的:(Linux系统,samba)