Samba文件共享服务

一,Samba服务基础

windows网络环境中,主机之间进行文件和打印共享是通过微软公司的SMB/CIFS网络协议实现的。

1),Samba软件的组成

1Samba软件包的组成

spacer.gif服务端软件“samba

客户端软件“samba-client

服务端和客户端程序的公共组件“samba-common

                  Web接口的图形管理程序软件“samba-swat

2Sabma服务的程序组件

〖smbd〗

#负责为客户机提供服务器中的共享资源(目录和文件等)的访问

       #负责监听TCP的协议的139端口(SMB协议),445端口(CIFS协议)

〖nmbd〗

#负责提供基于NetBios协议的主机名解析,以便为windows网络中的主机进行查询服务

#负责监听UDP协议的137-138端口(NetBios协议)

【启动服务】

      #service  smb  start

      #脚本文件:/etc/rc.d/init.d/smb

2),主配置文件smb.conf

文件位置:/etc/samba/smb.conf

global〗全局配置:

这部分配置项的内容对整个samba服务器都有效

homes〗宿主目录共享设置:

设置Linux用户的默认共享,对应用户的宿主目录,当用户访问服务器中与自己用户名同名的共享目录时,通过验证后将会自动映射到该用户的宿主目录中

printers〗打印共享设置:

如果需要共享打印设备,可以在这部分进行配置


【Samba服务器的常见配置项及含认说明】

workgroup设置服务器所在的工作组名称

server  string设置服务器的说明文字,用于描述samba服务器

security:设置服务器的安全级别,share(可匿名访问)、user(需要用户名及密码)

      server(指定另一台服务器来验证用户名及密码)

      domain(由windows域控制器验证用户名及密码)

log  file:设置samba服务器的日志文件,默认保存在/var/log/samba/目录中

comment:设置对应共享目录的注释、说明信息

path:设置对应共享目录在服务器中的文件夹路径

browseable:用户的宿主目录,设置该目录在“网上邻居”中是否可见,“no”表示隐藏享目录

guest  ok:与“public”作用相同,设置是否所有人都可以访问共享目录

writable:与“read  only”作用相反,设置该共享目录是否可写

二,构建文件共享服务器

1),可匿名访问的共享

        #可匿名访问的共享适用于公开的资源分享,一般只建议提供只读访问

        #配置文件“smb.conf”中调整:

a,可以将默认的安全级别修改为share

b,添加一段共享目录配置

2),需用户验证的共享

1,建立Samba用户数据库

#Samba服务器使用独立的共享账号数据库文件,其中的账号名称必须有与它同名的系统用户相对应

#共享用户的密码是额外设置的,可以与系统用户的密码不一样

#Samba共享用户的账号数据库文件默认位于“/etc/samba/passdb.tdb

添加、编辑共享用户

spacer.gif    pdbedit -a  -u  用户名             /添加用户为samba共享用户

      -a:表示添加

      -u:表示指定用户名称

   pdbedit  -l                            /列出所有samba用户

   pdbedit  -vl  用户名                /列出指定用户,输出详细信息

   pdbedit  -x -u  用户名             /删除指定samba用户

2,设置用户访问权限

   #将“security”安全级别设为“user”

   #用户授权设置由“valid users、write list”配置项指定

   #授权多个共享用户时,以逗号或空格进行分隔

   #授权组,可以使用“@组名”的格式

【案例:将本地目录/opt/mytools发布为共享目录,共享名为“tools”】

要求共享用户u1、u2能够访问,其中u2用户具有写入权限

第一步:创建共享用户u1、u2,确认共享目录

          pdbedit  -a -u  u1

          pdbedit  -a -u  u2

          mkdir  /opt/mytools

第二步:修改smb.conf配置文件,添加名为tools的共享目录配置段

          vim  /etc/samba/smb.conf

             [tools]

                 path=/opt/mytools

                 public=no

                 read  only=no

                 valid  users=u1,u2

                 write  list=u2

第三步,启动smb服务

          Service  smb restart

3,确定目录访问权限

第一步,chmod  777 /opt/mytools     /先把本地目录权限放开

第二步,修改配置文件“smb.conf”

          driectory  mask=0755     /上传目录权限项

          create  mask=0644        /上传文件权限项

3),用户映射及访问地址限制

1,共享账号映射(别名)

第一步,修改映射文件:/etc /smba/smbusers

格式:共享用户名=别名1  别名2  别名3…

root=administrator  admin

第二步,修改主配置文件,在全局里添加选项

                           vim  /etc/samba/smb.conf

                           [global]

                                    username  map=/etc/samba/smbusers

第三步,重新载入smb服务

                           Service  smb reload

2,访问地址限制

        #hosts  allow:用于指定仅允许访问共享的客户机地址

        #hosts  deny:用于指定仅拒绝访问共享的客户机地址

#访问地址限制一般应用于[global]全局配置部分,也可以应用于某个具体的共享配置段部分

spacer.gifspacer.gif#限制对象可以是主机名,IP地址或网段地址(省去主机部分),多个地址之间以逗号或空格进行分隔

例如:[global

                           Hosts allow=192.168.1   173.17.

三,访问共享文件夹

1),使用smbclient访问共享文件夹

需要安装samba-client软件包

1,查询目标主机的共享资源列表

smbclient -L  共享IP

例如:  smbclient  -L 192.168.1.1

2,登录并访问共享文件夹

Smbclient //主机地址/共享名

例如:  smbclient  //192.168.1.1/tools                                                /匿名访问

                  Smbclient  -u  用户名 //192.168.1.1/tools                    /用户验证

2),使用mount挂载共享文件夹

mount -o  username=用户名  //主机地址/共享名    /挂载点

例如:  mount  -o username=u1 //192.168.1.1/tools   /opt