天天看点

Samba文件共享-实现异构通信

   Samba是Linux、Unix与Windows之间进行交互操作的软件组件,Samba是基于GPL协议的自由开源软件。自从1992年以来,Samba开始通过SMB/CIFS协议为Windows、OS/2、Linux以及众多其他支持该协议的操作系统提供安全、稳定、快速的文件与打印服务,在使用winbind将Linux/Unix无缝整合到活动目录环境时Samba也是一个重要组件。

所需软件:samba

    Samba由smbd和nmbd两个个守护进程组成,两个进程的启动脚本是独立的,下面分别介绍每个守护进程的作用。

smbd服务进程为客户端提供文件共享与打印机服务。另外,该进程还负责用户权限验证以及锁功能,smbd默认监听的端口是TCP协议的139与445,Samba通过smb服务启动smbd进程,使用netstat -nutlp查看进程端口信息。

nmbd进程提供NetBIOS名称服务,以满足基于Common Internet File System(CIFS)协议的共享访问环境。Samba通过nmb服务启动nmbd进程,该进程默认使用是UDP 137端口。

由于iptables与SELinux默认策略会组织远程用户对Samba的访问,目前我们采用关闭这些服务,关于如果设置防火墙与SELinux策略会在后续文章中详细介绍。

快速配置Samba服务器:

1.    关闭防火墙与SELinux

[root@centos6 ~]# setenforce 0                       #临时关闭SELinux 

[root@centos6 ~]# sed -i "/SELINUX=/c SELINUX=disable" \ 

> /etc/sysconfig/selinux                             #永久关闭SELinux 

[root@centos6 ~]# service iptables stop              #临时关闭防火墙 

[root@centos6 ~]# chkconfig iptables off             #永久关闭防火墙 

2.    安装Samba软件

[root@centos6 ~]# yum -y install samba 

3.    创建共享目录

[root@centos6 ~]# mkdir /common 

[root@centos6 ~]# chmod 755 /common 

[root@centos6 ~]# echo “hello the world” > /common/smb.txt        #创建测试文件 

4.    修改配置文件

    Samba默认配置文件为/etc/samba/smb.conf,默认Samba已经配置为允许用户通过远程共享访问自己的家目录。下面通过在该配置文件末尾追加common目录的共享设置,实现快速自定义共享。

[root@centos6 ~]# vim /etc/samba/smb.conf 

[common]                                    #共享名称为common 

    comment = Common share                  #共享注释 

    path = /common                          #重要,指定共享路径 

    browseable = yes                        #所有人可见 

    guest ok = no                           #拒绝匿名访问 

    writable = yes                          #支持写入数据 

5.    创建访问帐号

    成功访问Samba服务器还需要使用smbpasswd将系统账户添加到Samba并设置相应的密码,在CentOS 6.3系统自动的Samba软件默认会将账户与密码文件存放在/var/lib/samba/private目录下。

[root@centos6 ~]# useradd -s /sbin/nologin smbuser 

[root@centos6 ~]# smbpasswd -a smbuser 

New SMB password:                                #提示输入账户密码 

Retype new SMB password:                         #确认一次密码 

Added user smbuser.                              #成功添加帐号与密码 

smbpasswd命令

描述:    修改账户samba密码

用法:    smbpasswd [选项] 账户名称

选项:    -a        添加账户并设置密码

          -x        删除SMB账户

          -d        禁用SMB账户

          -e        启用SMB账户

6.    启动服务

[root@centos6 ~]# service smb start 

[root@centos6 ~]# chkconfig smb on 

访问Samba共享:

1.    Windows客户端访问

    在Windows环境中通过开始-运行菜单或直接输入Win+R快捷键开启运行,在打开框中输入\\IP,IP为Samba服务器的IP地址,点击确定按钮访问Samba共享,如果是基于用户名密码的访问,系统会提示输入账户与密码,如图4-2。登录成功后可以看到Samba共享了两个目录一个是common目录,另一个是smbuser账户的家目录共享。

<a target="_blank" href="http://blog.51cto.com/attachment/201303/224227268.png"></a>

图4-2

2.    Linux客户端访问

    Linux客户端使用smbclient命令可以查看访问服务器上的共享资源,如果安装有图形的话也可以通过Linux图形界面连接服务器,下面为具体的方法。

[root@centos6 ~]# smbclient -L //192.168.0.101         #查看192.168.0.101主机共享信息 

Enter root's password:                                 #查看不需要密码,直接回车 

Anonymous login successful 

Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.5.10-125.el6] #服务器基本信息 

    Sharename       Type      Comment 

    ---------           ----       ------- 

    common         Disk      Common share                #共享与注释 

    IPC$            IPC       IPC Service (Samba Server Version 3.5.10-125.el6) 

[root@centos6 ~]# smbclient -U smbuser //192.168.0.101/common     #访问samba共享目录 

Enter smbuser's password:                                         #输入账户密码 

Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.5.10-125.el6] 

smb: \&gt; ls                                                        #通过ls查看共享目录 

  .                                   D        0  Mon Mar 11 00:27:57 2013 

  ..                                 DR        0  Mon Mar 11 20:29:20 2013 

smb.txt                                          16  Mon Mar 11 23:09:29 2013 

        41355 blocks of size 524288. 27640 blocks available 

smb: \&gt;help                                                #查看smblient可用指令 

smb: \&gt;quit                                                #退出 

    有些时候挂载Samba共享目录实现如本地文件系统一样的使用体验是很有意义的,使用root管理员身份运行mount命令可以挂载这样的文件系统。

[root@centos6 ~]# mkdir /com 

[root@centos6 ~]# mount -t cifs //192.168.0.101/common /com \ 

&gt; -o username=smbuser,password=&lt;password&gt; 

    图形访问Samba共享,首先通过nautilus-connect-server命令开启图形配置界面,如图4-3所示,输入Samba服务器IP地址、共享目录、账户名称等信息,输入正确的密码成功登录后将可以看到服务器同享的测试文件smb.txt,另外通过图形访问Samba后会在桌面挂载图标,以后可以随时通过双击该图标打开共享目录。

[root@centos6 ~]# nautilus-connect-server                   #图形访问共享 

图4-3

配置文件详解

    Samba配置文件非常简介明了,所有的设置都在/etc/samba/smb.conf配置文件中进行,通过对该配置文件的修改我们可以将Samba配置为一台匿名文件服务器、基于账户的文件服务器或打印服务器,默认Samba会开启本地帐号家目录共享与打印机共享,配置文件中以#或;符号开头的行为注释行,配置文件分为若干段,除了global(全局配置段)之外的其余所有段用来描述共享资源,全局段中的配置代表全局有效,是全局的默认设置。但如果全局配置段中的设置项与共享段中的设置项有冲突,则共享设置段中的设置为实际有效值。下面我们具体说明各个配置选项的含义。

[global]                           #定义全局策略

workgroup = MYGROUP                #定义工作组。

    server string = Samba Server Version %v

#服务器提示字串,默认显示samba版本,建议修改默认值以防止针对版本的网络攻击。

;interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24

#如果你的服务器有多个网络接口,可以通过interfaces选项指定指定Samba监听哪些网络#接口。

;hosts allow = 127. 192.168.12. 192.168.13. EXCEPT 192.168.13.13

#指定仅允许哪些主机有权访问Samba服务器资源(白名单),该参数可以放置在全局

#段也可以放置在共享段。与此相反的选项是hosts deny用来设置黑名单列表,这里可

#以指定允许访问的主机名、IP地址或网段,当指定网段时可以使用192.168.12或

#192.168.12.0/255.255.255.0格式,使用EXCEPT可以指定排除的IP地址。

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

#定义日志文件,因为使用了Samba变量%m,所以每个访问共享的主机会产生独立的

#日志文件,%m会之中替换为客户端的主机名。

max log size = 50

#定义日志单个文件最大容量为50K。

    security = user

#设置security选项将影响客户端访问samba的方式,是非常重要的设置选项之一。Security

#可以被设置为uesr,share,server或domain,user代表通过用户名、密码验证访#问者的身份,#账户需要是服务器本机系统账户;share代表匿名访问;server代表基于验证身份的访问,#但账户信息保存在另一台SMB服务器上;domain同样是基于验证的#访问,账户信息保存#在活动目录中。

    passdb backend = tdbsam

#账户与密码存储方式,smbpasswd代表使用老的明文格式存储账户及密码;tdbsam代

#表基于TDB的密文格式存储;ldapsam代表使用LDAP存储账户资料。

deadtime = 10

#客户端10分钟内没有打开任何Samba资源,则自动停止服务,在大量的并发访问环境中

#这样的设置可以提供服务器性能。

display charset = UTF8                 #设置显示使用的字符集为UTF8

max connections = 0                  

#设置最大连接数,0代表无限制,超过此限制的连接请求服务器将拒绝连接。

guest account = nobody                #设置匿名帐号为nobody

    load printers = yes               #是否共享打印机

    cups options = raw                #打印属性

    [homes]                           #共享名称

    comment = Home Directories        #注释,共享描述信息

    browseable = no                   #是否可以被浏览

    writable = yes                    #是否可以写操作

 [printers]                           #打印机共享

    comment = All Printers

    path = /var/spool/samba            #打印机共享池

    browseable = no

    guest ok = no

    writable = no

    printable = yes

 [common]                              #共享名称为common

    comment = Common share             #注释,共享描述信息

    path = /common                     #重要,指定共享路径

    valid users =tom jerry             #有效账户列表

create mask = 0750                     #客户端上传文件的默认权限,默认为0744

directory mask = 0775                  #客户端创建目录的默认权限,默认为0755

    browseable = yes                   #是否允许所有人可见(yes或no)

writable = no

write list = tom                       #读写权限账户列表,这里是tom可写

admin users =tom                       #该共享的管理员,具有完全权限

invalid users = root bin               #禁止root与bin访问common共享

guest ok = no  #是否允许匿名访问,仅当全局设置security=share时有效(yes或no)。 

本文转自丁丁历险51CTO博客,原文链接:http://blog.51cto.com/manual/1157571 ,如需转载请自行联系原作者

继续阅读