Samba服务详解

Windows客户端和linux服务端实现共享文件的方式是运用samba服务器,用的是SMB和CIFS协议以及NETBIOS协议,可以实现不同的系统之间互相共享文件。Linux/Unix之间用的是NFS协议。

服务

nmb :提供NETBIOS域名解析,将计算机的netbios名称解析成ip地址,并提供浏览服务显示网络上的共享资源列表。

smb : 提供目录和打印机共享,支持认证,权限设置,管理网络共享资源。

监听端口

1.NETBIOS协议对于windows来讲监听TCP的139端口和UDP的137,138端口 ,所以nmb在linux上模拟出了udp的137和138端口,以及tcp的139端口,

2.smb模拟出 tcp的445端口。

工作原理

 协议协商:客户端访问samba服务器时,发送negprot指令数据包,告知服务器,客户端主机支持smb协议,samba服务器根据客户端的情况,选择最优的smb类型,响应客户端的请求。

客户端——>negprot请求——>samba服务器——>negprot响应——>客户端

    建立连接:当smb类型确认后,客户端会发送session setup指令数据包,提交帐号和密码,请求与samba服务器建立连接,如果客户端通过请求,samba服务器作出回应,为客户分配唯一的UID,在客户端与其通信时使用。

客户端——>session setup &x请求——>服务器——>session setup &x响应——>客户端    访问共享资源:客户端访问samba服务器的共享资源时,发送tree connect指令数据包,通知服务器服务器需要访问的共享资源名称,如果设置允许访问,samba服务器会为每个客户端与共享资源连接分配TID,客户端即可访问需要的共享资源。

客户端——>tree connect &x请求——>服务器——>tree connect &x请求——>客户端

    断开连接:共享使用完毕,客户端向服务器发送tree disconnect请求,与服务器断开连接。

  客户端——>tree disconnect &x请求——>服务器——>tree disconnect &x请求——>客户端 

SAMBA服务器在Linux系统上同时监听这4个端口。

防火墙和selinux均处于关闭状态。

所需软件包
samba-winbind-3.6.9-164.el6.x86_64   
samba-3.6.9-164.el6.x86_64   
samba-common-3.6.9-164.el6.x86_64     
samba-winbind-clients-3.6.9-164.el6.x86_64
samba-client-3.6.9-164.el6.x86_6
cifs-utils

不需要密码的共享测试  

配置smb.conf主配置文件。

# vim /etc/samba/smb.conf   ##samba服务器的主配置文件

[global]  workgroup = WESTOS    ##设定samba要加入的工作组或域

server string = MY Samba Server Version %v ##服务器描述,%v表示显示Samba的版本号。 
##netbios name = smbserver  ##设置Samba Server的NetBIOS名称。如果不填,则默认会使用该服务器的DNS名称的第一部分,netbios name和workgroup名字不要设置成一样的。

##interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24   ##设置Samba Server监听哪些网卡,可以写网卡名,也可以写该网卡的IP地址。

hosts allow = 127.  172.25.48.  ##表示允许连接到Samba Server的客户端

例:hosts allow=172.17.2.EXCEPT172.17.2.50
表示容许来自172.17.2.*.*的主机连接,但排除172.17.2.50

hosts allow=172.17.2.0/255.255.0.0
表示容许来自172.17.2.0/255.255.0.0子网中的所有主机连接
hosts allow=M1,M2
表示容许来自M1和M2两台计算机连接

hosts [email protected]
表示容许来自XQ网域的所有计算机连接

##max connections = 0  ##指定连接Samba Server的最大连接数目。如果超出连接数目,则新的连接请求将被拒绝。0表示不限制。

##deadtime = 0 ##设置断掉一个没有打开任何文件的连接的时间。单位是分钟,0代表Samba Server不自动切断任何连接。

##time server = yes/no   ##设置让nmdb成为windows客户端的时间服务器。

log file = /var/log/samba/log.%m       ##samba的日志文件及命名格式

max log size = 50               ##设置samba日志文件的最大容量,单位为kb

security = share ##设置用户访问Samba Server的验证方式,一共有四种验证方式。 1.share:用户访问Samba Server不需要提供用户名和口令, 安全性能较低。

2. user:Samba Server共享目录只能被授权的用户访问,由Samba Server负责检查账号和密码的正确性。账号和密码要在本Samba Server中建立。

3. server:依靠其他Windows NT/2000或Samba Server来验证用户的账号和密码,是一种代理验证。此种安全模式下,系统管理员可以把所有的Windows用户和口令集中到一个NT系统上,使用Windows NT进行Samba认证, 远程服务器可以自动认证全部用户和口令,如果认证失败,Samba将使用用户级安全模式作为替代的方式。

4. domain:域安全级别,使用主域控制器(PDC)来完成认证。

##passdb backend = tdbsam   ##passdb backend就是用户后台的意思。目前有三种后台:smbpasswd、tdbsam和ldapsam。sam应该是security account manager(安全账户管理)的简写。

  1. smbpasswd:该方式是使用smb自己的工具smbpasswd来给系统用户(真实
    用户或者虚拟用户)设置一个Samba密码,客户端就用这个密码来访问Samba的资源。smbpasswd文件默认在/etc/samba目录下,不过有时候要手工建立该文件。
  2. tdbsam:该方式则是使用一个数据库文件来建立用户数据库。数据库文件叫passdb.tdb,默认在/etc/samba目录下。passdb.tdb用户数据库可以使用smbpasswd –a来建立Samba用户,不过要建立的Samba用户必须先是系统用户。我们也可以使用pdbedit命令来建立Samba账户。pdbedit命令的参数很多,我们列出几个主要的。

    pdbedit –a username:新建Samba账户(用户必须是已经存在的系统用户)。

    pdbedit –x username:删除Samba账户。

    pdbedit –L:列出Samba用户列表,读取passdb.tdb数据库文件。

    pdbedit –Lv:列出Samba用户列表的详细信息。

    pdbedit –c “[D]” –u username:暂停该Samba用户的账号。

    pdbedit –c “[]” –u username:恢复该Samba用户的账号。

    ldapsam:该方式则是基于LDAP的账户管理方式来验证用户。首先要建立LDAP服务,然后设置“passdb backend = ldapsam:ldap://LDAP Server”

##smb passwd file = /etc/samba/smbpasswd
用来定义samba用户的密码文件。smbpasswd文件如果没有那就要手工新建。

##username map = /etc/samba/smbuse139 rs  ##定义用户名映射,比如可以将root换成administrator、admin等。不过要事先在smbusers文件中定义好。比如:root = administrator admin,这样就可以用administrator或admin这两个用户来代替root登陆Samba Server,更贴近windows用户的习惯。

##guest account = nobody  ##用来设置guest用户名

##socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192  ##设置服务器和客户端之间会话的Socket选项,可以优化传输速度

##domain master = yes/no  ##设置Samba服务器是否要成为网域主浏览器,网域主浏览器可以管理跨子网域的浏览服务
  

load printers = no        ##是否启用打印机功能,默认为yes
  

cups options = raw

[homes]                                ##在客户端显示的共享目录名称
  

comment = homes directory      ##共享目录描述.任意字符串
  

browseable = yes/no         ##指定该共享是否可以浏览
  

writable = no                  ##指定该共享路径不可写
  

read only=yes                  ##指定改共享路径可读取
  

##available = yes/no  ##指定该共享资源是否可用。
  

create mode = 0664   samba用户在自己家目录(默认/home/sambauser)下新建文件的默认权限为0644(0为acl权限)
  

directory mode = 0775         samba用户在自己家目录(默认/home/sambauser)下新建目录的默认权限为0775(0为acl权限)

[printers]                            ##打印功能共享目录
  

comment = All Printers
  

path = /var/spool/samba    ##共享目录路径Samba服务器搭建
   
  

browseable = no
  

guest ok = no
  

writable = no
  

printable = yes

[temp]      ##共享资源名称

comment = yang

path = /myshare      ##资源目录

writable = yes      ##可写入

browseable = yes    ##可以被浏览到资源名称

guest ok = yes      ##设置客户可以随意登录

# /etc/init.d/smb restart

Shutting down SMB services:                                [  OK  ]

Starting SMB services:                                     [  OK  ]

# /etc/init.d/nmb restart

Shutting down NMB services:                                [  OK  ]

Starting NMB services:                                     [  OK  ]

# testparm ##查看samba主配置文件中的配置

[global]

workgroup = WESTOS

server string = Samba Server Version %v

security = SHARE

log file = /var/log/samba/log.%m

max log size = 50     idmap config * : backend = tdb

cups options = raw

[homes]

comment = Home Directories

read only = No

browseable = No
[printers]

comment = All Printers

path = /var/spool/samba

printable = Yes

print ok = Yes

browseable = No

[temp]

comment = yang

path = /myshare

read only = No

guest ok = Yes

# netstat -antpl | grep smb      ##查看smb服务开启的端口

tcp    0  0 0.0.0.0:139      0.0.0.0:*     LISTEN      1265/smbd

tcp  0    0 0.0.0.0:445      0.0.0.0:*    LISTEN      1265/smbd

tcp 0      0 :::139        :::*        LISTEN      1265/smbd

tcp   0   0 :::445     :::*             LISTEN      1265/smbd

【主机测试】 

# smbclient -L //127.0.0.1    ##本机检测能否共享成功

Enter root‘s password: 无密码,直接回车

Domain=[WESTOS] OS=[Unix] Server=[Samba 3.6.9-164.el6]

Sharename       Type      Comment     IPC$

IPC       IPC Service (Samba Server Version 3.6.9-164.el6)

temp            Disk      yang

Domain=[WESTOS] OS=[Unix] Server=[Samba 3.6.9-164.el6]

Server               Comment

VM3                  Samba Server Version 3.6.9-164.el6

Workgroup            Master

WESTOS               VM3

需要密码才能登录的共享

配置用户登录共享:

# vim /etc/samba/smb.conf

[global]
  

workgroup = vbirdhouse
  

server string = Samba Server Version %v
  

netbios name = vbirdserver
  

log file = /var/log/samba/log.%m
  

max log size = 50
  

security = user
  

passdb backend = tdbsam
  

load printers = yes
  

cups options = raw
[homes]
  

comment = Home Directories
  

browseable = no
  

writable = yes
  

create mode = 0644
  

create mode = 0755
[project]
  

comment = smbuser‘s project
  

path = /home/project
  

writable = yes
  

browseable = yes
  

write list = @users

# testparm      ##检测语法

[global]

workgroup = VBIRDHOUSE

netbios name = VBIRDSERVER

server string = Samba Server Version %v

log file = /var/log/samba/log.%m

max log size = 50

idmap config * : backend = tdb

cups options = raw

[homes]

comment = Home Directories

read only = No

create mask = 0755

browseable = No

[project]

comment = smbuser‘s project

path = /home/project

write list = @users

read only = No

创建共享目录:

# mkdir /home/project

# chgrp users /home/project

# chmod 2770 /home/project

创建用户:

# useradd -G users smb1   添加系统用户

# echo 1234 | passwd --stdin smb1

# pdbedit -a -u smb1    添加samba用户

new password: redhat

retype new password:redhat

重启服务:

# /etc/init.d/smb restart

# /etc/init.d/nmb/restart

测试:

本机测试:# smbclient -L //127.0.0.1     ##用非samba用户测试

Enter root‘s password: 回车

Domain=[VBIRDHOUSE] OS=[Unix] Server=[Samba 3.6.9-164.el6]

Sharename       Type      Comment

project         Disk      smbuser‘s project

IPC$            IPC       IPC Service (Samba Server Version 3.6.9-164.el6)

Anonymous login successful

Domain=[VBIRDHOUSE] OS=[Unix] Server=[Samba 3.6.9-164.el6]

Server               Comment     VBIRDSERVER

Samba Server Version 3.6.9-164.el6

Workgroup            Master

VBIRDHOUSE

# smbclient -L //127.0.0.1 -U smb1    ##samba用户测试

Enter smb1‘s password: redhat

Domain=[VBIRDHOUSE] OS=[Unix] Server=[Samba 3.6.9-164.el6]

Sharename       Type      Comment

project         Disk      smbuser‘s project

IPC$            IPC       IPC Service (Samba Server Version 3.6.9-164.el6)

smb1            Disk      Home Directories

Domain=[VBIRDHOUSE] OS=[Unix] Server=[Samba 3.6.9-164.el6]

Server               Comment

VBIRDSERVER          Samba Server Version 3.6.9-164.el6

Workgroup            Master

VBIRDHOUSE

# mount -t cifs //127.0.0.1/project /mnt -o username=smb1    ##挂载samba用户

Password: redhat

# df

//127.0.0.1/smb1               6926264 1051248   5523172  16% /mnt

# ls -a /mnt    ##挂载点的文件和samba用户的原文件同步

.  ..  passwd

# smbclient //127.0.0.1/project -U smb1     ##使用samba用户登录samba服务器

Enter smb1‘s password: redhat

Domain=[VBIRDHOUSE] OS=[Unix] Server=[Samba 3.6.9-164.el6]

smb: \> ls

.                                   D        0  Tue Mar 22 17:21:38 2016

..                                  D        0  Tue Mar 22 16:29:45 2016

passwd                                    1012  Tue Mar 22 17:21:38 2016

54111 blocks of size 131072. 43149 blocks available

smb: \> get passwd     ##下载文件

getting file \passwd of size 1012 as passwd (10120000.0 KiloBytes/sec)

(average inf KiloBytes/sec)

smb: \> quit

[[email protected] smb1]# ls
passwd

# touch /file1

# smbclient //127.0.0.1/project -U smb1

Enter smb1‘s password:redhat

Domain=[VBIRDHOUSE] OS=[Unix] Server=[Samba 3.6.9-164.el6]

smb: \> put /file1 .

NT_STATUS_OBJECT_NAME_INVALID opening remote file \.

smb: \> put /file1     上传文件

putting file /file1 as \/file1 (0.0 kb/s) (average -nan kb/s)

smb: \> ls

.                                   D        0  Tue Mar 22 17:26:25 2016

..                                  D        0  Tue Mar 22 16:29:45 2016

passwd                                    1012  Tue Mar 22 17:21:38 2016

file1                               A        0  Tue Mar 22 17:26:25 2016

54111 blocks of size 131072. 43149 blocks available

smb: \> quit

客户机测试:172.25.48.4:vm4.example.com

# smbclient -L  //172.25.48.3

Enter root‘s password: 回车

Anonymous login successful

Domain=[VBIRDHOUSE] OS=[Unix] Server=[Samba 3.6.9-164.el6]

Sharename       Type      Comment

IPC$            IPC       IPC Service (Samba Server Version 3.6.9-164.el6)

project         Disk      smbuser‘s project

Anonymous login successful

Domain=[VBIRDHOUSE] OS=[Unix] Server=[Samba 3.6.9-164.el6]

Server               Comment

VBIRDSERVER          Samba Server Version 3.6.9-164.el6

Workgroup            Master

MYGROUP              VM4

VBIRDHOUSE           VBIRDSERVER

# smbclient //172.25.48.3/project  -U smb1

smb: \> put /file2

putting file /file2 as \/file2 (0.0 kb/s) (average 0.0 kb/s)

smb: \> ls

.                                   D        0  Tue Mar 22 20:15:19 2016

..                                  D        0  Tue Mar 22 16:29:45 2016

file2                               A        0  Tue Mar 22 20:15:19 2016

passwd                                    1012  Tue Mar 22 17:21:38 2016

file1                               A        0  Tue Mar 22 20:14:54 2016

54111 blocks of size 131072. 43149 blocks available

smb: \> get passwd      ##下载

getting file \passwd of size 1012 as passwd (52.0 KiloBytes/sec) (average 52.0 KiloBytes/sec)
smb: \> put /file2     ##上传

putting file /file2 as \/file2 (0.0 kb/s) (average 0.0 kb/s)

smb: \> ls

.                                   D        0  Tue Mar 22 20:15:19 2016

..                                  D        0  Tue Mar 22 16:29:45 2016

file2                               A        0  Tue Mar 22 20:15:19 2016

passwd                                    1012  Tue Mar 22 17:21:38 2016

file1                               A        0  Tue Mar 22 20:14:54 2016

54111 blocks of size 131072. 43149 blocks available

查看登录过samba服务器的主机

# cd /var/log/samba

# ls
cores

log.172.25.48.1    log.nmbd    log.vm1    old
log.127.0.0.1    log.172.25.48.2    log.smbd

log.vm2


多用户挂载(针对与客户端设置)

挂载分享目录

# mount //172.25.48.3/project /mnt/ -o username=smb1,smb2,smb3,sec=ntlmssp
Password: redhat

查看是否挂载

# df

//172.25.48.3/project          6926264 1052328   5522092  17% /mnt

切换到其他用户,该用户必须在服务端存在,且信息完全一致,可以使用`id rob`分别在客户端和服务端检查

# su - smb2

[[email protected] ~]$df

//172.25.48.3/project          6926264 1052264   5522156  17% /mnt

# su - smb1

[[email protected] ~]$ df

//172.25.48.3/project          6926264 1052260   5522160  17% /mnt

进入挂载点

# cd /mnt

# touch file6

# ls

file1  file2  file3  file4  file6  passwd
如果可以创建,则说明正确

多用户永久挂载

# vim /etc/fstab

//172.25.48.1/project /cifs cifs    defaults,username=smb1,smb2,smb3,sec=ntlmssp 0 0

# mount -a

时间: 2024-12-10 12:54:03

Samba服务详解的相关文章

CentOS 默认基本服务详解

1.使用chkconfig --list来查看安装的服务,比如我这里最小化安装后的一些服务 [[email protected] ~]# chkconfig --list auditd          0:off   1:off  2:on    3:on    4:on   5:on    6:off crond           0:off   1:off  2:on    3:on    4:on   5:on    6:off ip6tables       0:off  1:off

HTTPD服务详解

HTTPD服务详解 目录 一.httpd的程序版本 二.httpd的特性 三.httpd的功能特性 四.httpd使用 1.httpd的安装 2.程序环境 Httpd-2.2 (Centos6) http-2.4 (Centos7) 五.http配置相关说明 1.修改监听的ip和port 2.持久连接 3.MPM 4.DSO配置指令模块加载 5.定义Main'server文档页面路径 6.站点访问控制 文件系统路径 URL路径 7.<Directory> 中基于源地址实现访问控制 Option

winxp计算机管理中服务详解

winxp计算机管理中服务详解01 http://blog.sina.com.cn/s/blog_60f923b50100efy9.html http://blog.sina.com.cn/s/blog_b08c76100102vijm.html winxp计算机管理中服务详解02 http://blog.sina.com.cn/s/blog_60f923b50100efz3.html http://blog.sina.com.cn/s/blog_b08c76100102vijn.html

CentOS5启用Telnet服务详解(转载)

CentOS5启用Telnet服务详解 配置步骤如下: 一.安装telnet软件包(通常需要两个) 1. telnet(或 telnet-client),这个软件包提供telnet 客户端程序: 2. telnet-server,这个软件包提供telnet 服务器端程序: 安装之前先检查系统是否已安装这些软件包,方法如下: [[email protected] /]#rpm –qa |grep telnet 如果没有检测到软件包,则需要进行安装.CentOS5默认已安装了telnet软件包,te

angular-ngSanitize模块-$sanitize服务详解

本篇主要讲解angular中的$sanitize这个服务.此服务依赖于ngSanitize模块. 要学习这个服务,先要了解另一个指令: ng-bing-html. 顾名思义,ng-bind-html和ng-bind的区别就是,ng-bind把值作为字符串,和元素的内容进行绑定,但是ng-bind-html把值作为html,和元素的html进行绑定.相当于jq里面的.text()和.html(). 但是,出于安全考虑,如果我们直接使用ng-bind-html是会报错的,ng-bind-html后面

Oracle启动服务详解

成功安装Oracle 11g数据库后,你会发现自己电脑运行速度会变慢,配置较低的电脑甚至出现非常卡的状况,通过禁止非必须开启的Oracle服务可以提升电脑的运行速度.那么,具体该怎么做呢? 按照win7 64位环境下Oracle 11g R2安装详解中的方法成功安装Oracle 11g后,共有7个服务,分别为: 1.Oracle ORCL VSS Writer Service, 2.OracleDBConsoleorcl, 3.OracleJobSchedulerORCL, 4.OracleMT

Oracle 11g的7个服务详解

成功安装Oracle 11g后,共有7个服务,这七个服务的含义分别为:1. Oracle ORCL VSS Writer Service:Oracle卷映射拷贝写入服务,VSS(Volume Shadow Copy Service)能够让存储基础设备(比如磁盘,阵列等)创建高保真的时间点映像,即映射拷贝(shadow copy).它可以在多卷或者单个卷上创建映射拷贝,同时不会影响到系统的系统能.(非必须启动) 2. OracleDBConsoleorcl:Oracle数据库控制台服务,orcl是

MySQL服务器主从服务详解

MySQL主从复制概念 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重新执行一遍来实现的.复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器.主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环.这些日志可以记录发送到从服务器的更新.当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置.从

部署Tomcat(Web)服务详解

一.Tomcat服务简介 Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选.一般来说,Tomcat虽然和Apache或者Nginx这些Web服务器一样,具有处理HTML页面的功能,然而由于其处理静态HTML的能力远不及Apache或者Nginx,所以Tomcat通常是作为一个Servlet和JSP容器,单独运行在后端.如图: Tomcat自5.x版本以来,其性能上已经得到了大幅的提