1、安装启动samba

[root@test1 ~]# yum install -y samba samba-commonsamba-clientsamba-swat 

samba -----samba服务器程序的所有文件
samba-common -----提供了Samba服务器和客户机中都必须使用的公共文件
samba-client -----提供了Samba客户机的所有文件
samba-swat -----以Web界面的形式提供了对Samba服务器的管理功能


[root@test1 ~]# service smb start
Starting SMB services: [  OK  ]
Starting NMB services: [  OK  ]

     smb 是Samba 的主要启动服务,让其它机器能知道此机器共享了什么;而nmb是做解析用的,就是把这台 Linux机器所共享的工作组及在此工作组下NetBios的解析出来。[root@test1 ~]# netstat -antup|grep smb
tcp        0      0 0.0.0.0:139                 0.0.0.0:*                   LISTEN      12774/smbd          
tcp        0      0 0.0.0.0:445                 0.0.0.0:*                   LISTEN      12774/smbd 
   samba监听两个端口139和445


 2,samba服务器配置文件

全局设置:

# ----------------------- Network Related Options -------------------------

    workgroup = MYGROUP

    server string = Samba Server Version %v

    netbios name = MYSERVER

    interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24

    hosts allow = 127. 192.168.87. 192.168.13.

workgroup:设置Samba服务器所在的工作组或所在域的名称,默认设置工作组名称为"MYGROUP"。

server string:设置Samba服务器的说明文字,用于描述Samba服务器,其默认值为Samba Server Version %v,其中%v是Samba服务器预设变量,表示当前Samba版本。由于目前不少Samba发行版本中存在一些已知的安全漏洞,所以不推荐使用该变量让客户端访问时获得有关Samba版本的信息。

netbios name:设置Samba服务器的NetBIOS名。

interface:设置允许Samba服务侦听的本地网络接口。比如Samba服务器有多个网络接口时可通过此参数指定只接受指定接口的SMB/CIFS请求,该参数默认没有启用(被注释)。在编辑该参数时当使用interface时推荐保留lo(表示本地回环地址),在指定网络接口时,除了通过IP地址指定外,也可直接通过网络接口名。 

bind interfaces only:当bind interfaces only=yes时,interface只对Samba服务器提供文件服务有效,对浏览服务的广播无效,也就是说Windows客户端可以在网上邻居中查看到Samba服务器,但不能访问。该参数默认为bind interfaces only =no。

    这里可以设置允许访问的网络和主机IP,比如允许192.168.1.0/24和192.168.2.1/32访问,
就用host allow = 192.168.1. 192.168.2.1 127.0.0.1(网络注意后面加”.”号,各个项
目间用空格隔开,记得把本机也加进去)


# --------------------------- Logging Options -----------------------------

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

max log size = 50


# ----------------------- Standalone Server Options ------------------------
       security = user
       passdb backend = tdbsam

在Standalone Server Options、Domain Members Options、Domain Controller Options三部分均需要配置合适的security(安全级别,用于配置Samba服务器的认证方式)、passdb backend用户密码存放方式,其中security可用参数包括share(可匿名方式访问Samba服务器共享资源,该方式只对Windows客户端有效,一般不推荐使用)、user(访问Samba服务器共享资源需要输入用户密码,认证用户来源为本机)、server(访问Samba服务器共享资源需要输入用户密码,认证用户来源为另一台Samba服务器或Windows服务器)、domain(如果Samba服务器在一个基于Windows NT 平台的Windows域中,访问共享资源需要输入用户密码,认证用户来源为Windows域)ads(如果Samba服务器在一个基于Windows200x平台的Windows活动目录中,访问共享资源需要输入用户密码,认证用户来源为Windows活动目录)。passdb backend常见可用参数包括smbpasswd(该方式是使用Samba提供的工具smbpasswd来给系统用户设置一个Samba密码,客户端就用这个密码来访问Samba的资源,如果使用此方式还需加一个smb passwd file = /etc/samba/smbpasswd用于指定保存用户密码文件,该文件需要手动建立,不推荐使用这种方法)、tdbsam(该方式则是使用一个数据库文件来建立用户数据库。数据库文件名为passdb.tdb,默认在/etc/samba目录下。passdb.tdb用户数据库可以使用smbpasswd来建立Samba用户)、ldapsam(该方式则是基于LDAP的账户管理方式来验证用户。首先要建立LDAP服务)、mysql(该方式则是将Samba服务器用户密码估计到mysql数据库中)


security:在此部分中该参数只能设置为share(不推荐)、user或server(不推荐),当该参数设置为share时,客户端连接到Samba服务器可不需要输入用户密码,但能不能访问某个共享资源还要根据共享资源中是否允许匿名用户访问决定。

passdb backend:默认为tdbsam,一般不用修改,除非想使用老版本Samba服务器的smbpasswd文件方式。


# ----------------------- Domain Members Options ------------------------


;       security = domain
;       passdb backend = tdbsam
;       realm = MY_REALM

;       password server = <NT-Server-Name>


① security:在此部分中该参数只能设置为domain、ads。

② passdb backend:默认为tdbsam,一般不用修改。

③ password server:指定进行身份验证的域控制器IP地址或主机名。


# ----------------------- Domain Controller Options ------------------------


;       security = user
;       passdb backend = tdbsam

;       domain master = yes
;       domain logons = yes

security:在此部分中该参数只能设置为user。

passdb backend:默认为tdbsam,一般不用修改。

domain master:让Samba作为主域控制器(PDC),在此部分此参数必须为yes。


提示:主域控制器(PDC)是一个Windows NT平台的概念,在Windows 2000 Server(或Windows Server 2003)活动目录中由活动目录是名为PDC模拟器的操作主机代替,其主要功能包括管理来自客户端(Windows NT/95/98)的密码更改、最小化密码变化的复制等待时间、同步整个域内所有域控制器上的时间、收集分发活动目录中主浏览服务器列表信息。

domain logons:允许旧的Windows客户端提交验证信息,只网络环境中在Windows 9x客户端,此参数必须为yes。

logon script:当用户登录到域时执行的启动脚本(相当于Windows组策略中用户开机脚本)。

logon path:当用户登录到域后的配置文件存放位置,用这个来初始化工作环境(相当于Windows中漫游配置文件)。

logon script:域中客户端主机的开机启动脚本(相当于Windows组策略中计算机开机脚本)。

add user script:指定Windows与Linux中用户信息同步脚本,当Windows域中新建用户后指定脚本会将该用户的信息复制到Linux中。

add group script:指定Windows与Linux中组信息同步脚本,当Windows域中新建组后指定脚本会将该组信息复制到Linux中。

add machine script:指定Windows与Linux中计算机信息同步脚本,当Windows域中新加入域中后指定脚本后会将该计算机信息复制到Linux中。

delete user script:指定Windows与Linux中用户信息同步脚本,当Windows域中删除用户后指定脚本后会将该用户的信息复制到Linux中。

delete user from group script:指定Windows与Linux中用户信息同步脚本,当Windows域中将用户从组中删除后指定脚本会将该信息复制到Linux中。

delete group script:指定Windows与Linux中用户信息同步脚本,当Windows域中删除组后指定脚本会将该组的信息复制到Linux中。


# ----------------------- Browser Control Options ----------------------------

local master:是否允许Samba服务器作为主浏览服务器。

os level:该数字越大被选举成为主浏览服务器的可能性越高。

preferred master:当yes时被选为主浏览服务器的可能性越高。



#----------------------------- Name Resolution -------------------------------


;       wins support = yes
;       wins server = w.x.y.z
;       wins proxy = yes
;       dns proxy = yes

wins support:设置nmbd进程支持WINS服务器。

wins server:设置WINS服务器IP地址。

wins proxy:Samba服务器是否可作为WINS 代理。

提示:WINS代理就是为了解决跨网段的非WINS客户端与WINS客户端的NetBIOS名称解析问题。如图6-12所示所示内容中WINS代理在接收到非WINS客户端NetBIOS名称解析请求后,以单播的方式帮助非WINS客户端进行NetBIOS名称解析。当然WINS代理首先必须是一台WINS客户端。

dns proxy:Samba服务器是否在无法联系WINS服务器时通过DNS去解析主机的NetBIOS名。

name cache timeout:设置Samba服务器解析主机名缓存的保存时间,单位是秒。该参数默认值为name cache timeout=660。


# --------------------------- Filesystem Options ---------------------------

Filesystem Options:该部分包括Samba服务器如何保留从Windows客户端复制或移动到Samba服务器共享目录文件的Windows文件属性的相关配置, 

map archive:当Windows客户端将文件复制或移动到Samba服务器共享目录时,是否保留文件在Windows中的存档属性。当map archive =yes时,将保留;当map archive =no时,将不保留。默认为map archive =yes。不过如果store dos attributes=yes时,Samba服务器将忽略该参数的设置。

map hidden:当Windows客户端将文件复制或移动到Samba服务器共享目录时,是否保留文件在Windows中的隐藏文件属性。当map hidden =yes时,将保留;当map hidden =no时,将不保留。该参数没有默认值,也就是在不设置该参数时,是否保留隐藏文件属性根据store dos attributes的值决定。

map read only:当Windows客户端将文件复制或移动到Samba服务器共享目录时,是否保留文件在Windows中的只读属性。当map read only=yes时,将保留;当map read only=no时,将不保留。默认为map read only=yes。不过如果store dos attributes=yes时,Samba服务器将忽略该参数的设置。

map system:当Windows客户端将文件复制或移动到Samba服务器共享目录时,是否保留文件在Windows中的系统文件属性。当map system =yes时,将保留;当map system =no时,将不保留。默认为map system =no。不过如果store dos attributes=yes时,Samba服务器将忽略该参数的设置。

store dos attributes:当Windows客户端将文件复制或移动到Samba服务器共享目录时,是否保留文件在Windows中的相关属性(只读文件、系统文件、隐藏文件、存档属性)。当store dos attributes =yes时,将保留;当store dos attributes =no时,将不保留。默认为store dos attributes =no。



#============================ Share Definitions ==============================

该部分主要涉及Samba服务器需要共享的资源

Samba配置共享目录的语法如下。


[共享名]                        

comment = 描述            

path = 本地目录路径      


①:客户端访问Samba服务器时浏览到的目录名,该名称不要求与本地目录名相同,但在当前Samba服务器必须惟一。

②:客户端访问Samba服务器时浏览到的目录描述信息,该参数不是必须的。

③:需要共享的本地目录,必须使用绝对路径


下面通过一个例子来看一下使用Samba服务器共享目录的方法。

(1)在根目录下建立一个名为test的目录。

(2)在文件/etc/samba/smb.conf尾部加入如下内容。


  1. [smbtest]  

  2. comment = This is smb test  

  3. path = /test  

比较正常的共享的配置如下例:
[MyShare]
comment = grind’s file
path = /home/grind
allow hosts = host(subnet)
deny hosts = host(subnet)
writable = yes|no
user = user(@group)
valid users = user(@group)
invalid users = user(@group)
read list = user(@group)
write list = user(@group)
admin list = user(@group)
public = yes|no
hide dot files = yes|no
create mode = 0755
directory mode = 0755
sync always = yes|no
short preserve case = yes|no
preserve case = yes|no
case sensitive = yes|no
mangle case = yes|no
default case = upper|lower
force user = grind
wide links = yes|no
max connections = 100
delete readonly = yes|no
其中[]里面的MyShare指定共享名,一般就是网络邻居里面可以看见的文件夹的名字。
comment指的是对改共享的备注。
path指定共享的路径,其中可以配合samba变量使用。比如你可以指定path=/data/%m,
这样如果一台机器的NETBIOS名字是grind,它访问MyShare这个共享的时候就是进入/data/grind
目录,而对于NETBIOS名是glass的机器,则进入/data/glass目录。
allow hosts和deny hosts和前面的全局设置的方法一样这里不再提及。
writeable指定了这个目录缺省是否可写,也可以用readonly = no来设置可写。
user设置所有可能使用该共享资源的用户,也可以用@group代表group这个组的所有成
员,不同的项目之间用空格或者逗号隔开。
valid users指定能够使用该共享资源的用户和组。
invalid users指定不能够使用该共享资源的用户和组。
read list 指定只能读取该共享资源的用户和组。
write list指定能读取和写该共享资源的用户和组。
admin list指定能管理该共享资源(包括读写和权限赋予等)的用户和组。
public指明该共享资源是否能给游客帐号访问,这个开关有时候也叫guest ok,所以
有的配置文件中出现guest ok = yes其实和public = yes是一样的。
hide dot files指明是不是像unix那样隐藏以“.”号开头的文件。
create mode指明新建立的文件的属性,一般是0755。
directory mode指明新建立的目录的属性,一般是0755。
sync always指明对该共享资源进行写操作后是否进行同步操作。
short preserve case指明不管文件名大小写。
preserve case指明保持大小写。
case sensitive指明是否对大小写敏感,一般选no,不然可能引起错误。
mangle case指明混合大小写。
default case指明缺省的文件名是全部大写还是小写。
force user强制把建立文件的属主是谁。如果我有一个目录,让guest可以写,那么
guest就可以删除,如果我用force user= grind强制建立文件的属主是grind,同时限制
create mask = 0755,这样guest就不能删除了。
wide links指明是否允许共享外符号连接,比如共享资源里面有个连接指向非共享资
源里面的文件或者目录,如果设置wide links = no将使该连接不可用。
max connections = n设定同时连接数是n。
delete readonly指明能否删除共享资源里面已经被定义为只读的文件。


[test]
comment = this is test
path = /os/test
browseable = yes
writable = yes
valid users = test


[root@test1 ~]# useradd -M  test -s /sbin/nologin 
[root@test1 ~]# smbpasswd -a test
New SMB password:
Retype new SMB password:
Added user test.
[root@test1 ~]# chown -R  test /os/test
[root@test1 ~]# chmod 777  /os -R