天天看点

Samba文件共享服务

1、samba概述

1)smb和cifs

smb协议:server message block,服务消息块

cifs协议:common internet file system,通用互联网文件系统

smb/cifs默认是微软的私有协议

2)samba

samba是著名的开源软件项目,在linux/unix上实现smb和cifs协议,可以跨平台文件共享

samba软件包组成:

samba-3.0.33-3.28.el5                           -----服务端程序

samba-client-3.0.33-3.28.el5                             -----客户端程序

samba-common-3.0.33-3.28.el5                      -----公共组件

samba-swat-3.0.33-3.28.el5.i386.rpm   -----图形化web管理程序

system-config-samba                                 -----图形化界面的管理程序

samba提供两个服务程序:

     smbd提供共享资源的访问,监听tcp 的139端口(smb协议)和445端口(cifs协议)

     nmbd提供netbios名称解析,监听udp的137和138端口(netbios协议)

   smb服务:service smb start      -----会自动加载smbd和nmbd组件程序

3)安装

rpm -ivh /mnt/iso/server/perl-convert-asn1-0.20-1.1.noarch.rpm

rpm -ivh /mnt/iso/server/samba-3.0.33-3.28.el5.i386.rpm

注:①默认情况下已安装samba-common和samba-client

      ②perl-convert-asn1是samba所依赖的软件包,必须安装

2、主配置文件/etc/samba/smb.conf

#表示注释行,;表示样例行,过滤:grep -v "#" /etc/samba/smb.conf  |grep -v "^;" |grep -v "^$"

testparm命令可用于检查配置文件正确性

此配置文件中关键字对大小写不敏感

1)常见全局配置项

workgroup:所在工作组名称

server string:服务器描述信息

security:安全级别share、user、server、domain

log file:日志文件位置,/var/log/samba/%m.log每个客户机建立一个日志,%m变量表示客户机地址

passwd backend---设置账户文件的类型,默认为tdbsam,若需兼容旧版samba密码则改为smbpasswd

2)常见共享目录配置项

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

path:共享目录在服务器中对应的实际路径

browseable:该共享目录是否可见,值为no时相当于隐藏共享目录,类似于windows中的共享名加$

guest ok:是否允许所有人访问,等效于public,例guest ok=yes等于public=yes

writable:是否可写,与read only的作用相反,例writable=no等于read only=yes

3)其他配置项

vaild users:只有此名单内的用户能访问共享资源(拒绝优先)(用户名/@组名)

invalid users:只有此名单内的用户不能访问共享资源(拒绝优先)(用户名/@组名)

write list:只有此名单内的成员才可作写入动作(用户名/@组名)

directory mask:通过共享创建文件夹的默认权限

create mask=0644:通过共享创建文件的默认权限

hosts allow:只有此网段/ip的用户能访问共享资源

hosts deny:只有此网段/ip的用户不能访问共享资源

3、匿名访问的文件共享

1)设置安全级别security = share

2)新建共享目录

mkdir /var/software

chmod 777 /var/software

[software]

comment=public software

path = /var/software

public  = yes

read only = yes

3)service smb start 或service smb reload

注:客户端只能访问被指定为允许匿名访问的共享,即指定public=yes或guestok=yes的共享

4、带验证的文件共享

1)  建立samba用户

useradd tom

pdbedit -a tom

pdbedit -a root

pdbedit -x tom     -----删除samba用户tom

pdbedit -vl       -----查看samba共享用户的详细信息

注:①samba使用独立的账号数据库,但系统中必须有对应的账号,其密码可与系统密码不同

②账户数据库文件默认位于/etc/samba/passdb.tdb,可使用pdbedit命令对samba用户进行管理

③若需兼容旧版samba密码则修改passwd backend=smbpasswd,同时账户数据库文件为

/etc/samba/smbpasswd,使用smbpasswd命令管理smbpasswd –a tom、smbpasswd –x tom

2)设置用户授权

[global]

security = user

 [software]

comment= public software

public  = no

     valid users=tom,@root       -----此处应填写真实用户名,非别名

     write list=root           -----root用户有可写的权限

     directory mask=0755          -----通过共享创建文件夹的默认权限

     create mask=0644             -----通过共享创建文件的默认权限

chmod 777 /var /software

注:①应确保真实用户对共享目录有本地系统权限,用户最终权限是samba权限和系统权限的交集

    ②可以在[global]中添加invalid users配置项拒绝用户访问samba服务,如invalid users=jack

    ③验证valid users和write list时,应删除writable配置项

3)用户名称映射

vi  /etc/samba/smbusers

   root = administrator  admin

   tom = zhangsan lisi

vi  /etc/samba/smb.conf

username map=/etc/samba/smbusers  //在[global]中指定名称映射文件

  注:添加映射后别名用户的密码仍为真实用户的密码

4)添加授权的客户端地址,既可以在[global]中全局配置,也可针对某个特定的共享

hosts allow=192.168.1.2 192.168.2.   //在[global]中指定

注:①hosts allow设置仅允许访问共享的地址,hosts deny设置仅拒绝访问的地址,两项不要同时使用

    ②修改配置文件后必须重启服务service smb restart

5、客户端访问

1)使用smbclient访问

smbclient –l 192.168.1.1  //查看共享资源列表,未指定用户账户时将以匿名方式登陆

smbclient –l 192.168.1.1 -u tom%123              //指定账户为tom,密码为123

smbclient –u tom //192.168.1.1/software

命令:ls、pwd、get、mget、put、mput、exit、help、lcd切换本地目录

2)使用mount命令将共享目录挂载到本地

mount –o username=tom //192.168.1.1/software  /mnt/iso

vi /etc/fstab

   //192.168.1.1/software     /mnt/iso  cifs  defaults,username=tom%123  0     0

注:当安全级别设置为user时,在linux中仍然可以通过smbclient工具访问匿名共享,但无法通过mount方式挂载访问;如果是在windows中则无法再访问匿名共享

3)使用自动挂载的方式

使用/etc/fstab文件挂载samba共享资源时,每次开机都会自动挂载,如果服务器未开机或其他原因,会导致挂载失败,影响开机速度,而使用自动挂载则可以解决此问题

vi /etc/auto.master

   /mnt        /etc/samba.misc

vi /etc/samba.misc

   samba     -fstype=cifs,username=tom,password=111     ://192.168.1.1/software

service autofs restart