实战fedora10 samba共享
实验环境:虚拟机+fedora10
实验目的:练习fedora9的samba共享
教程适用:想在fedora9上面使用共享的菜鸟
一、
samba简介
SMB协议是建立在NetBIOS协议之上的应用协议,是基于TCP138、139两个端口的服务,NetBIOS出现之后,Microsoft就使用NetBIOS实现了一个网络文件/打印服务系统。这个系统基于NetBIOS设定了一套文件共享协议,Microsoft称之为SMB(Server Message Block) 协议,这个协议被用于Lan Manager和Windows服务器系统中,实现不同计算机之间共享 打印机和文件等。因此,为了让Windows和Unix/Linux计算机相集成,最好的办法就是在 Unix/Linux计算机中安装支持SMB协议的软件。这样使用Windows的客户端不需要更改设置, 就能像使用Windows NT或Windows 2000服务器一样,使用Unix/Linux计算机上的共享资源了。
Samba使SMB协议运行在NetBIOS协议上,并且使用Windows的 NetBEUI协议让Unix/Linux服务器 可以在Windows的网络邻居上被访问到。

二、
Samba的守护进程
 
1. smbd
监听139
TCP端口     设置共享目录、打印等
2. nmbd
137. 138 UDP端口     管理群组、NetBIOS 等解析工作
这里要注意的是fedora9基于安全考虑,把smb和nmb两个服务给分离了,平时我们在使用samba服务的时候,在启动smb服务的同时nmb这个服务也会跟着启动,fedora9中则不然,这就造成了我们设置好fedora9中共享的时候,只能使用[url=file://ip/]\\ip[/url] 来访问,而不能使用[url=file://计算机名/]\\计算机名[/url] 来访问,解决的办法就是同时启动smb和nmb服务
三、
软件的安装
使用rpm –qa|gerp samba来检查是否安装了samba 软件包,如果没有安装的话请自行安装以下的软件包
# rpm –ivh samba-3.2.0-1.pre3.9.fc9.i386.rpm
# rpm –ivh samba-winbind-3.2.0-1.pre3.9.fc9.i386.rpm
# rpm –ivh samba-common-3.2.0-1.pre3.9.fc9.i386.rpm
# rpm –ivh samba-client-3.2.0-1.pre3.9.fc9.i386.rpm
# rpm –ivh system-config-samba-1.2.63-1.fc9.noarch.rpm
或者你用yum install samba* -y就可以一次搞定了。

四、
启动samba服务
#service smb start
(/etc/init.d/smb start )启动smb服务
#service nmb start (/etc/init.d/nmb start )启动nmb服务
当然你也可以使用chkconfig –-level smb 35 on 来设置启动级别,这个不多说了。
我们来检查一下是是否正常启动两个服务,使用命令 pstree | grep mb
显示为如下如果则为正常启动:
|-nmbd
|-smbd---2*[smbd]
|-tomboy---2*[{tomboy}]

五、
配置smb.conf文件
知识点,samba 有四种安全级别,它们分别是:
share:用户不需要用户名和就可登陆samba 服务器
user:用户需要输入用户名和密码才可以登陆samba服务器
server:请自行查资料,不常用,略
domain:请自行查资料,不常用,略
对于我们小菜来说,我们使用user级别就可以了,如果偷懒的话你可以用share
我们先备份配置文件smb.conf
#cp /etc/samba/smb.conf
/etc/samba/smb.conf.bak

然后查找你的security = user是否为user如果是share的话改为user
#vi /etc/samba/smb.conf
workgroup = WORKGROUP //设置工作组
server string = %U's samba %v //描述信息%U代表当前登陆用户
netbios name = fedora //netbios名字,fedora9默认没有启用
log file = /var/log/samba/log.%m //日志文件保存路径%m你的windows主机名
max log size = 50 //日志最大容量
security = user //安全级别,user需要用户名和密码,share级别则不要
[share]
//建立一个共享名为share的共享

comment = samba
//描述信息

path = /tmp/share
//共享路径

public = no //是否允许guest用户访问(相当于guest ok = yes/no)

writable = yes //是否可写

write list = lovehack //可以写入的用户列表(@代表用户组)

下面建立共享目录并添加权限
#mkdir /tmp/share
#chmod 775 /tmp/share
#chown lovehack.lovehack /tmp/share
六、
添加用户并测试共享
添加访问samba的用户,命令smbpasswd –a 用户名
#smbpasswd –a lovehack
//lovehack为事先建立好的用户
然后输入两次密码就可以了,注意这里的密码和你登陆系统的密码是不一样的,只是用来访问共享的密码。
现在我们就可以来测试一下配置文件是否正确:testparm 一般是没有什么问题的。
现在我们可以用[url=file://ip/]\\ip[/url]或者[url=file://计算机名/]\\计算机名[/url] 来访问共享了。
七、
解决fedora10中selinux拒绝访问共享的问题
在其它版本的linux中(AS5,AS4,Centos)中做如上设置后就可以正常访问共享了,但是在fedora9中却不行,我们只能看到共享,但是访问的时候会出现拒绝访问的情况,这是为什么呢?因为selinux对samba共享做了限制,我们只用把selinux中对samba的限制给解决了就行了,我们做如下设置就OK了,这也是我做此教程的目的:
#setsebool –P samba_enable_home_dir on
#setsebool –P samba_export_all_ro on
#setsebool –P samba_export_all_rw on
我们可以用命令getsebool –a | grep samba
查看上面三项是否打开,打开的话你的共享应该就正常了。
 
要点:
1. 进入 /etc/samba 修改 smb.conf (加入帐号等)
 ----------------------- Netwrok Related Options -------------------------
 workgroup = NT-Domain-Name or Workgroup-Name, eg: MIDEARTH
 server string is the equivalent of the NT Description field
 netbios name can be used to specify a server name not tied to the hostname
 Interfaces lets you configure Samba to use multiple interfaces
 If you have multiple network interfaces then you can list the ones
 you want to listen on (never omit localhost)
 Hosts Allow/Hosts Deny lets you restrict who can connect, and you can
 specifiy it as a per share option as well
       #workgroup = MYGROUP
        workgroup = WORKGROUP
        #server string = Samba Server Version %v
         server string = feroda10
         username map = /etc/samba/smbusers
;       netbios name = MYSERVER
        netbios name = feroda samba
;       interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24
;       hosts allow = 127. 192.168.12. 192.168.13.

#============================ Share Definitions ==============================
[homes]
        comment = Home Directories
        browseable = no
        writable = yes
        valid users = charles
;       valid users = %S
;       valid users = MYDOMAIN\%S
 
#    ==================my share work directoy=================
[mywork]
comment = my work
path = /work
valid users = charles
writable = yes

2. 修改 /etc/samba/smbusers:
# Unix_name = SMB_name1 SMB_name2 ...
root = administrator admin
nobody = guest pcguest smbguest
charles = dhtshq
(dhtshq 是 windows 的帐号,charles 是linux 下的帐号)
这样的话, 可以在 windows  上以  dhtshq 登陆  samba.
3.加入samba 帐号(如果需要的话):
bash-3.2# pdbedit -a charles

4. 重启 samba 服务:
bash-3.2# service smb restart
bash-3.2# service nmb restart
或者
 /etc/rc.d/init.d/smb start
 /etc/rc.d/init.d/nmb start
然后, 进入 windows 网络邻居, 就可以看到共享目录了

---------------------------------------------------------------------------------------------------------
有时, 设置后, 能看到共享目录,却没有权限访问。
在这种情况下, 可以检查一下防火墙的设置( samba对应的端口有没有打开), 或者 关闭 selinux (修改 /etc/selinux/config).