一、 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中共享的时候,只能使用\\ip 来访问,而不能使用\\计算机名 来访问,解决的办法就是同时启动smb和nmb服务
三、 软件的安装
使用rpm –qa|gerpsamba来检查是否安装了samba 软件包,如果没有安装的话请自行安装以下的软件包
# rpm –ivhsamba-3.2.0-1.pre3.9.fc9.i386.rpm
# rpm –ivhsamba-winbind-3.2.0-1.pre3.9.fc9.i386.rpm
# rpm –ivhsamba-common-3.2.0-1.pre3.9.fc9.i386.rpm
# rpm –ivhsamba-client-3.2.0-1.pre3.9.fc9.i386.rpm
# rpm –ivhsystem-config-samba-1.2.63-1.fc9.noarch.rpm
或者你用yuminstall samba* -y就可以一次搞定了。
四、 启动samba服务
#service smbstart (/etc/init.d/smbstart )启动smb服务
#service nmbstart (/etc/init.d/nmbstart )启动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
#chownlovehack.lovehack /tmp/share
六、 添加用户并测试共享
添加访问samba的用户,命令smbpasswd –a 用户名
#smbpasswd –alovehack //lovehack为事先建立好的用户
然后输入两次密码就可以了,注意这里的密码和你登陆系统的密码是不一样的,只是用来访问共享的密码。
现在我们就可以来测试一下配置文件是否正确:testparm 一般是没有什么问题的。
现在我们可以用\\ip或者\\计算机名来访问共享了。
七、 解决fedora9中selinux拒绝访问共享的问题
在其它版本的linux中(AS5,AS4,Centos)中做如上设置后就可以正常访问共享了,但是在fedora9中却不行,我们只能看到共享,但是访问的时候会出现拒绝访问的情况,这是为什么呢?因为selinux对samba共享做了限制,我们只用把selinux中对samba的限制给解决了就行了,我们做如下设置就OK了,这也是我做此教程的目的:
#setsebool –Psamba_enable_home_dir on
#setsebool –Psamba_export_all_ro on
#setsebool –Psamba_export_all_rw on
我们可以用命令getsebool–a | grep samba
查看上面三项是否打开,打开的话你的共享应该就正常了。
如果还是出现不能访问的情况,请清除你的防火墙规则:
iptables -F //清除规则
iptables -L //查看是否清除掉了!
smb服务(Linux和windows共享)
首先关掉防火墙
在终端输入 iptables-F
或者
系统——管理——防火墙——禁用
第一步: 更改smb.conf
我们来实现一个最简单的功能,让所有用户可以读写一个Samba 服务器共享的一个文件夹;我们要改动一下
smb.conf ;首先您要备份一下smb.conf文件;
[root@localhost ~]# cd /etc/samba
[root@localhost samba]# mv smb.conf smb.confBAK
然后我们来重新创建一个smb.conf文件;
[root@localhost samba]#touch smb.conf
然后我们把下面这段写入smb.conf中;
[global]
workgroup = RANBE
netbios name = wzlinux
server string = Linux Samba Server TestServer
security = share
[linuxsir]
path = /media/ranbe
writeable = yes
browseable = yes
guest ok = yes
注解:
[global]这段是全局配置,是必段写的。其中有如下的几行;
workgroup 就是Windows中显示的工作组;在这里我设置的是RANBE (用大写);
netbios name 就是在Windows中显示出来的计算机名;
server string 就是Samba服务器说明,可以自己来定义;这个不是什么重要的;
security 这是验证和登录方式,这里我们用了share ;验证方式有好多种,这是其中一种;另外一种常用的是
user的验证方式;如果用share呢,就是不用设置用户和密码了;
[linuxsir] 这个在Windows中显示出来是共享的目录;
path = 可以设置要共享的目录放在哪里;
writeable 是否可写,这里我设置为可写;
browseable 是否可以浏览,可以;可以浏览意味着,我们在工作组下能看到共享文件夹。如果您不想显示出来
,那就设置为browseable=no
guest ok 匿名用户以guest身份是登录;
在配置完/etc/smb.conf后运行testparm检测配置文件中是否有相应语法错误
在samba服务起来后,用smbstatus报告用户使用和登录情况。
在更改过配置文件后,运行/etc/rc.d/init.d/smbrestart重读配置文件
或者service smbrestart
第二步:建立相应目录并授权;
[root@localhost ~]# mkdir -p /media/ranbe
[root@localhost ~]# id nobody
显示uid=99(nobody)gid=99(nobody) groups=99(nobody)
[root@localhost ~]# chown -R nobody:nobody /media/ranbe
注释:关于授权nobody,我们先用id命令查看了nobody用户的信息,发现他的用户组也是nobody,我们要以
这个为准。有些系统nobody用户组并非是nobody ;
(第三步:启动smbd和nmbd服务器
([root@localhost ~]# smbd
[root@localhost ~]# nmbd)可省略
[root@localhost ~]# service smb restart
第四步:查看smbd进程,确认Samba 服务器是否运行起来了;
[root@localhost ~]# pgrep smbd
13564
13568
查看Samba服务运行状态:# service smb status
)可省略
第五步:访问Samba 服务器的共享;
在终端上输入“ifconfigeth0 192.168.0.2(要和你的windows在一个IP段)”为linux配置一个IP。
最好在这里ping一下windows的IP地址,看网络是否已连接。
连接好了就可以了。
在Linux 中您可以用下面的命令来访问;
mount //222.204.17.106/s3c2410 /root/windows
222.204.17.106 xp的 ip
s3c2410 xp的共享目录
root/windows 挂载到linux的位置
在Windows中,您可以用下面的办法来访问;
在ie地址栏
\\222.204.17.70\meida\ranbe
无法访问 还未解决
也可设置系统重启时,自动启动Samba服务:# chkconfig --level 345 smb on
或者在终端输入setup
选择系统服务 选中
·smb
Linux与windows共享实例-smb
LINUX 2010-03-22 02:42:31 阅读48 评论0 字号:大中小
setup
system services
选定smb服务保存退出
service smb restart (重起smb)
启动 Samba
#service smb start//启动 Samba
#pstree | grep mbd //检查Samba是否启动
| -nmbd
| -smbd //出现这二行,就表明Samba已经启动
************************
#启动服务乱码解决方法
#vi /etc/sysconfig/i18n
#写入LC_ALL=POSIX
#保存重启
************************
SMB配置
1.备份smb.conf文件
#cp /etc/samba/smb.conf/etc/samba/smb.conf.bak
2.编辑smb.conf
A.#vi /etc/samba/smb.conf
找到[GLOBAL]
添加:
unix charset = gb2312
dos charset = gb2312
修改 workgroup = mygroup 为 workgroup = workgroup
修改 security = user 为 security = share
找到[home]
添加:
Path = /home/netgame 添加一个游戏工作目录路径
Valid users = linux
然后到文件最后添加一段脚本
[netgame] 名字随意!!!
Path = /home/netgame
Valid users = linux
Public = yes
Only guest = yes
[netgames]:
Path = /home/netgame/game
Valid users = linux
Public = yes
Only guest = yes
保存,退出!
3.新建用户
#useradd linux
#passwd linux
输入两次口令,完成口令设置
#smbpasswd –a linux 更新SMB口令
也要输入两次口令,完成口令设置
smb.conf 详解
服务名:smb
配置目录:/etc/sabma/
主配置文件:/etc/sabma/smb.conf
#==============================Global Settings =============================
17行workgroup
语法 workgtoup = <工作组群>;
预设 workgroup = MYGROUP
说明设定 Samba Server 的工作组
例 workgroup = workgroup 和WIN2000S设为一个组,可在网上邻居可中看到共享
21行server string
语法 server string = <说明>;
预设 sarver string = Samba Server
说明设定 Samba Server 的注释
其他支持变量 t%-访问时间 I%-客户端IP m%-客户端主机名 M%-客户端域名 S%-客户端用户名
例 server string = this is a Samba Server 设定出现在Windows网上邻居的 Samba Server 注释为 this is a Samba Server
28行hosts allow
语法 hosts aoolw = <IP地址>; ...
预设 ; host allow = 192.168.1. 192.168.2. 127.
说明限制允许连接到 Samba Server 的机器,多个参数以空格隔开。表示方法可以为
完整的IP地址,如 192.168.0.1
网段,如 192.168.0.
例 hosts allow = 192.168.1. 192.168.0.1 表示允许192.168.1 网段的机器网址为192.168.0.1 的机器连接到自己的samba server
32行printcap name
语法 printcap name = <打印机配置文件>;
预设 printcap name = /etc/printcap
说明设定 samba srever 打印机的配置文件
例 printcap name = /etc/printcap 设定 samba srever 参考 /etc/printcap 档的打印机设定
33行load printers
语法 load printers = <yes/no>;
预设 load printers = yes
说明是否在开启 samba server 时即共享打印机
38行printing
语法 printing = <打印机类型>;
预设 printing = lprng
说明设定 samba server 打印机所使用的类型,37行为目前所支持的类型
42行guest account
语法 guert account = <帐户名称>;
预设 guert account = pcguest
说明设定访问 samba server 的来宾帐户(即访问时不用输入用户名和密码的帐户),若设为pcguest的话则为默认为"nobody"用户
例 guert account = andy 设定设定访问 samba server 的来宾帐户以andy用户登陆,则此登陆帐户享有andy用户的所有权限
46行log file
语法 log file = <日志文件>;
预设 log file = /var/log/samba/%m.log
说明设定 samba server 日志文件的储存位置和文件名(%m代表客户端主机名)
49行max log size
语法 max log size = <??KB>;
预设 max log size = 0
说明设定日子文件的最大容量,单位KB 这里的预设值0代表不做限制
53行security
语法 security = <等级>;
预设 security = user
说明设定访问 samba server 的安全级别共有四种
share---不需要提供用户名和密码
user----需要提供用户名和密码,而且身份验证由 samba server 负责
server--需要提供用户名和密码,可指定其他机器(winNT/2000/XP)或另一台 samba server作身份验证
domain--需要提供用户名和密码,指定winNT/2000/XP域服务器作身份验证
60行password server
语法 password server = <IP地址/主机名>;
预设 password server = <NT-Server-Name>;
说明指定某台服务器(包括windows 和 linux)的密码,作为用户登入时验证的密码
其他此项需配合 security = server时,才可设定本参数
64行password level
65行username level
语法 password level = <位数>;
username level = <位数>;
预设 password level = 8
username level = 8
说明设定用户名和密码的位数,预设为8位字符
70行encrypt passwords
语法 encrypt passwords = <yes/no>;
预设 encrypt passwords = yse
说明设定是否对samba的密码加密
71行smb passwd file
语法 smb passwd file = <密码文件>;
预设 smb passwd file = /etc/samba/smbpasswd
说明设定samba的密码文件
130行local master
语法 local master = <yes/no>;
预设 local master = no
说明设定 samba server 是否要担当LMB角色(LMB负责收集本地网络的Browse List资源),通常无特殊原因设为no
134行os level = 33
语法 os level = <数字>;
预设 os level = 33
说明设定 samba server的os level. os level从 0 到 255 . winNT的os level为33, win95/98的os level 是 1 .
若要拿samba server 当LMB或DMB则它的os level至少要大于NT的33以上
139行domain master
语法 domain master = <yes/no>;
预设 domain master = yes
说明设定 samba server 是否要担当DMB角色(DMB会负责收集其他子网的Browse List资源),通常无特殊原因设为no
143行preferred master
语法 preferred master = <yes/no>;
预设 preferred master = yes
说明设定 samba server 是否要担当PDC角色(PDC会负责追踪网络帐户进行的一切变更),通常无特殊原因设为no.
(同一网段内不可有两个PDC,他们会每5分钟抢主控权一次)
163行wins support
语法 wins support = <yes/no>;
预设 wins support = yes
说明设定samba server 是否想网络提供WINS服务,通常无特殊原因设为no.
除非所处网络上没有主机提供WINS服务且需要此台samba server提供WINS服务是才设yes
其他 wins support 和 wins server 只能选择一个
167行wins server
语法 wins server = <IP地址>;
预设 wins server = w.x.y.z
说明设定samba server 是否要使用别台主机提供的WINS服务.通常无特殊原因设为no.除非所处网络上有一台主机提供WINS服务才要设yes
其他 wins support 和 wins server
例 wins server = 192.168.0.1 表示samba server要使用192.168.0.1提供的WINS服务
#==============================Share Definitions =============================
[homes]
comment = HomeDirectories
browseable = no
writable = yes
valid users = %S
使用者本身的"家"目录,当使用者以samba使用者身份登入samba server 后,
samba server 底下会看到自己的家目录,目录名称是使用者自己的帐号
[分享的资源名称]
<指令1>; = (参数)
<指令2>; = (参数)
..........................
要提供分享资源时,须先把欲分享的资源以 [ ] 符号括住,底下通常会带指令和参数来表示此资源的设定和存取权限等,详情如下
comment---------注释说明
path------------分享资源的完整路径名称,除了路径要正确外,目录的权限也要设对
browseable------是yes/否no在浏览资源中显示共享目录,若为否则必须指定共享路径才能存取
printable-------是yes/否no允许打印
hide dot ftles--是yes/否no隐藏隐藏文件
public----------是yes/否no公开共享,若为否则进行身份验证(只有当security = share 时此项才起作用)
guest ok--------是yes/否no公开共享,若为否则进行身份验证(只有当security = share 时此项才起作用)
read only-------是yes/否no以只读方式共享当与writable发生冲突时也writable为准
writable--------是yes/否no不以只读方式共享当与read only发生冲突时,无视read only
vaild users-----设定只有此名单内的用户才能访问共享资源(拒绝优先)(用户名/@组名)
invalid users---设定只有此名单内的用户不能访问共享资源(拒绝优先)(用户名/@组名)
read list-------设定此名单内的成员为只读(用户名/@组名)
write list------若设定为只读时,则只有此设定的名单内的成员才可作写入动作(用户名/@组名)
create mask-----建立文件时所给的权限
directory mask--建立目录时所给的权限
force group-----指定存取资源时须以此设定的群组使用者进入才能存取(用户名/@组名)
force user------指定存取资源时须以此设定的使用者进入才能存取(用户名/@组名)
allow hosts-----设定只有此网段/IP的用户才能访问共享资源
allwo hosts = 网段 except IP
deny hosts------设定只有此网段/IP的用户不能访问共享资源
allow hosts=本网段指定IP指定IP
deny hosts=指定IP本网段指定IP