http://blog.csdn.net/xiaoxxcool/article/details/3017569
1.Samba简介:
Samba主要用做Linux/UNIX系统向Windows客户提供共享服务,它可以做到当Windows访问Linux的文件或打印机的时候,可以像访问其他Windos一样直接用//ip地址 或者 //计算机名 的方式来访问。
所以我建议一般的文件服务器都可以使用Linux来做,既稳定,又快速,而且不怕中毒,因为文件服务器有很多客户机往文件服务器上交换文件,现在Windows上的病毒数不胜数,稍微一台机器中毒,极有可能造成服务器感染病毒,这样文件一来往,就会造成整个局域网都中毒了。我以前就碰到过因为文件服务器造成威金病毒泛滥的事情。
Samba服务器不但可以进行文件,设备(打印机,光驱资料…)的共享,而且还可以根据登陆的身份,来提供不同权限的共享资料。并且可以根据用户,显示不同的共享目录,这点好像Windowsserver做不到呢。
当然了,我这里并不是使用Samba做文件服务器,只是想让我的Linux与公司其他机器实现简单的文件共享交换。
现在我们可以用 rpm -qa | grep samba命令来看看服务器有没有安装samba组件,一般安装Linux的时候,最好能够安装上常用的服务,如果没有安装,可以去http://www.samba.org下载安装。现在最新版好像是samba-3.0.28。RHEL 5.0自带的是samba-3.0.23c-2。
另外,你的Linux的核心要支持smbfs,一般各种发布已经把smbfs的支持包含进去,如果没有包含的话,就要重新编译核心,获得smbfs支持,编译的方法以后会学习到。(*^__^*)
2.Samba配置:
samba是一个服务套件,安装之后会有一些命令和配置文件,下面我把常用的列出来。
samba会用到的一些命令:
service smb start | restart |stop:这个是系统自带的samba的启动|重启|停止的命令。
smbpasswd:这个是samba用户管理命令。这个命令是把Linux已经存在的用户加入到samba用户里面,来实行权限分配。一定要在系统里存在,已经列在了/etc/passwd里面,否则需要事先用useradd来建立。samba不像vsftp等服务,是直接调用系统的用户。
smbpasswd有很多参数,我们可以用 smbpasswd--?来查看所有参数说明。
testparm:每次配置完smb.conf之后,用此命令可以检查一下,有没有配置错误。
smbclient:此命令就是连接smb/cifs服务器的客户端命令。也有很多参数,具体看另外一篇文章。
Samba的几个配置文件:
/etc/samba/smb.conf 这个是samba的主要配置文件。一般的设置都在这里面了。
/etc/samba/smbpasswd 这个是存储samba用户密码的文档,smbpasswd命令的操作体现在这个文档中
/etc/samba/lmhosts 这个是LAN内netBIOSname与计算机对应的文档,有点跟/etc/hosts,但是现在好像不需要配置了,所以也没什么用了。
我们配置samba服务器只要是配置/etc/samba/smb.conf就了以了。
smb.conf文件的共享项目用[name]来开头。
第一个[global]是必须选项,这个不是共享项目,是全局配置:
之后就是共享项目了,格式为:
比如:
下面列出所有共享的指令:
3.配置实例:
其中 vi/etc/samba/smb.conf里面配置了一个名为data1的共享,共享的目录也是/data1,并允许zmt这个用户可以修改,其他用户只能只读。
还有,如果配置zmt可以修改data1共享的时候,必须在Linux下,设置zmt也有对/data1这个目录的修改权限。
下面是smb.conf中[data1]的配置:
如果用其他Linux计算机访问此共享,那么可以用smbclient或者用mount挂载:
Samba主要用做Linux/UNIX系统向Windows客户提供共享服务,它可以做到当Windows访问Linux的文件或打印机的时候,可以像访问其他Windos一样直接用//ip地址 或者 //计算机名 的方式来访问。
所以我建议一般的文件服务器都可以使用Linux来做,既稳定,又快速,而且不怕中毒,因为文件服务器有很多客户机往文件服务器上交换文件,现在Windows上的病毒数不胜数,稍微一台机器中毒,极有可能造成服务器感染病毒,这样文件一来往,就会造成整个局域网都中毒了。我以前就碰到过因为文件服务器造成威金病毒泛滥的事情。
Samba服务器不但可以进行文件,设备(打印机,光驱资料…)的共享,而且还可以根据登陆的身份,来提供不同权限的共享资料。并且可以根据用户,显示不同的共享目录,这点好像Windowsserver做不到呢。
当然了,我这里并不是使用Samba做文件服务器,只是想让我的Linux与公司其他机器实现简单的文件共享交换。
现在我们可以用 rpm -qa | grep samba命令来看看服务器有没有安装samba组件,一般安装Linux的时候,最好能够安装上常用的服务,如果没有安装,可以去http://www.samba.org下载安装。现在最新版好像是samba-3.0.28。RHEL 5.0自带的是samba-3.0.23c-2。
另外,你的Linux的核心要支持smbfs,一般各种发布已经把smbfs的支持包含进去,如果没有包含的话,就要重新编译核心,获得smbfs支持,编译的方法以后会学习到。(*^__^*)
2.Samba配置:
samba是一个服务套件,安装之后会有一些命令和配置文件,下面我把常用的列出来。
samba会用到的一些命令:
service smb start | restart |stop:这个是系统自带的samba的启动|重启|停止的命令。
smbpasswd:这个是samba用户管理命令。这个命令是把Linux已经存在的用户加入到samba用户里面,来实行权限分配。一定要在系统里存在,已经列在了/etc/passwd里面,否则需要事先用useradd来建立。samba不像vsftp等服务,是直接调用系统的用户。
smbpasswd有很多参数,我们可以用 smbpasswd--?来查看所有参数说明。
程序代码
这几个samba用户管理参数主要是root用户才能使用的:
-aUSER 加入用户,输入此命令后,会要求你输入2次密码,以后此用户就一此密码登录samba服务器
-x 删除用户
-n 删除用户密码,这样这个用户以后登录就只需要输入用户名。
-d 禁用用户
-e 启用用户
-aUSER 加入用户,输入此命令后,会要求你输入2次密码,以后此用户就一此密码登录samba服务器
-x 删除用户
-n 删除用户密码,这样这个用户以后登录就只需要输入用户名。
-d 禁用用户
-e 启用用户
testparm:每次配置完smb.conf之后,用此命令可以检查一下,有没有配置错误。
smbclient:此命令就是连接smb/cifs服务器的客户端命令。也有很多参数,具体看另外一篇文章。
Samba的几个配置文件:
/etc/samba/smb.conf 这个是samba的主要配置文件。一般的设置都在这里面了。
/etc/samba/smbpasswd 这个是存储samba用户密码的文档,smbpasswd命令的操作体现在这个文档中
/etc/samba/lmhosts 这个是LAN内netBIOSname与计算机对应的文档,有点跟/etc/hosts,但是现在好像不需要配置了,所以也没什么用了。
我们配置samba服务器只要是配置/etc/samba/smb.conf就了以了。
smb.conf文件的共享项目用[name]来开头。
第一个[global]是必须选项,这个不是共享项目,是全局配置:
程序代码
我写的都是默认的文档,如果前面加了;号,别是注释掉了。如果你想配置该项,把前面的;号去掉就可以了。
workgroup =mygroup #这个是windows下看到此samba服务器的工作组
server string = sambaserver #这个是在用windos打开samba服务器的时候,标题栏显示的标题。
security =user #认证等级。
share---不需要提供用户名和密码
user----需要提供用户名和密码,而且身份验证由 sambaserver 负责
server--需要提供用户名和密码,可指定其他机器(winNT/2000/XP)或另一台samba server作身份验证
domain--需要提供用户名和密码,指定winNT/2000/XP域服务器作身份验证
; hosts allow = 192.168.1. 192.168.2.127. #表示允许访问的IP或者网段。默认前面加了;号,就是注释掉了,表示允许任何计算机。
load printers =yes #开机的时候就自动共享打印机。
; printcap name =/etc/printcap #打印机配置文件地址
; printing =cups #打印机类型
cups options = raw
; guest account =pcguest #表示来宾帐户名称,既匿名时候的用户权限
log file =/var/log/samba/%m.log #日志文件地址
max log size =50 #日志文件最大容量,单位为KB。如果是0,表示不做限制。
; password server =<NT-Server-Name> #指定ip或计算机名,以此台计算机的用户密码为认证服务器。
…………
…………
……下面还有N多参数,不一一列出,自己去看看。
workgroup =mygroup #这个是windows下看到此samba服务器的工作组
server string = sambaserver #这个是在用windos打开samba服务器的时候,标题栏显示的标题。
security =user #认证等级。
share---不需要提供用户名和密码
user----需要提供用户名和密码,而且身份验证由 sambaserver 负责
server--需要提供用户名和密码,可指定其他机器(winNT/2000/XP)或另一台samba server作身份验证
domain--需要提供用户名和密码,指定winNT/2000/XP域服务器作身份验证
; hosts allow = 192.168.1. 192.168.2.127. #表示允许访问的IP或者网段。默认前面加了;号,就是注释掉了,表示允许任何计算机。
load printers =yes #开机的时候就自动共享打印机。
; printcap name =/etc/printcap #打印机配置文件地址
; printing =cups #打印机类型
cups options = raw
; guest account =pcguest #表示来宾帐户名称,既匿名时候的用户权限
log file =/var/log/samba/%m.log #日志文件地址
max log size =50 #日志文件最大容量,单位为KB。如果是0,表示不做限制。
; password server =<NT-Server-Name> #指定ip或计算机名,以此台计算机的用户密码为认证服务器。
…………
…………
……下面还有N多参数,不一一列出,自己去看看。
之后就是共享项目了,格式为:
程序代码
[共享项目]
指令1 = 参数
指令2 = 参数
指令3 = 参数
指令1 = 参数
指令2 = 参数
指令3 = 参数
比如:
[share]
conmengt = This is a test share
path = /root/test
public = yes
browseable = yes
writable = no
这样就在Linux共享了一个名为“share”的目录了。conmengt = This is a test share
path = /root/test
public = yes
browseable = yes
writable = no
下面列出所有共享的指令:
程序代码
comment---------注释说明
path------------分享资源的完整路径名称,除了路径要正确外,目录的权限也要设对
browseable------是yes/否no在浏览资源中显示共享目录,若为否则必须指定共享路径才能存取
printable-------是yes/否no允许打印
hide dot ftles--是yes/否no隐藏隐藏文件
public----------是yes/否no公开共享,若为否则进行身份验证(只有当security= share 时此项才起作用)
guestok--------是yes/否no公开共享,若为否则进行身份验证(只有当security= share 时此项才起作用)
readonly-------是yes/否no以只读方式共享当与writable发生冲突时也writable为准
writable--------是yes/否no不以只读方式共享当与readonly发生冲突时,无视read only
validusers-----设定只有此名单内的用户才能访问共享资源(拒绝优先)(用户名/@组名)
invalidusers---设定只有此名单内的用户不能访问共享资源(拒绝优先)(用户名/@组名)
readlist-------设定此名单内的成员为只读(用户名/@组名)
writelist------若设定为只读时,则只有此设定的名单内的成员才可作写入动作(用户名/@组名)
veto files = /*.exe/*.com/------限制共享的文件类型(此处限制exe和com这2种文件),支持通配符*和?,每个类型以斜线(/)区分开。
create mask-----建立文件时所给的权限
directory mask--建立目录时所给的权限
forcegroup-----指定存取资源时须以此设定的群组使用者进入才能存取(用户名/@组名)
forceuser------指定存取资源时须以此设定的使用者进入才能存取(用户名/@组名)
allowhosts-----设定只有此网段/IP的用户才能访问共享资源
allwo hosts = 网段 except IP
denyhosts------设定只有此网段/IP的用户不能访问共享资源
allow hosts=本网段指定IP指定IP
deny hosts=指定IP本网段指定IP
path------------分享资源的完整路径名称,除了路径要正确外,目录的权限也要设对
browseable------是yes/否no在浏览资源中显示共享目录,若为否则必须指定共享路径才能存取
printable-------是yes/否no允许打印
hide dot ftles--是yes/否no隐藏隐藏文件
public----------是yes/否no公开共享,若为否则进行身份验证(只有当security= share 时此项才起作用)
guestok--------是yes/否no公开共享,若为否则进行身份验证(只有当security= share 时此项才起作用)
readonly-------是yes/否no以只读方式共享当与writable发生冲突时也writable为准
writable--------是yes/否no不以只读方式共享当与readonly发生冲突时,无视read only
validusers-----设定只有此名单内的用户才能访问共享资源(拒绝优先)(用户名/@组名)
invalidusers---设定只有此名单内的用户不能访问共享资源(拒绝优先)(用户名/@组名)
readlist-------设定此名单内的成员为只读(用户名/@组名)
writelist------若设定为只读时,则只有此设定的名单内的成员才可作写入动作(用户名/@组名)
veto files = /*.exe/*.com/------限制共享的文件类型(此处限制exe和com这2种文件),支持通配符*和?,每个类型以斜线(/)区分开。
create mask-----建立文件时所给的权限
directory mask--建立目录时所给的权限
forcegroup-----指定存取资源时须以此设定的群组使用者进入才能存取(用户名/@组名)
forceuser------指定存取资源时须以此设定的使用者进入才能存取(用户名/@组名)
allowhosts-----设定只有此网段/IP的用户才能访问共享资源
allwo hosts = 网段 except IP
denyhosts------设定只有此网段/IP的用户不能访问共享资源
allow hosts=本网段指定IP指定IP
deny hosts=指定IP本网段指定IP
3.配置实例:
这个是我配置samba的实例,摘录如下:
[root@sounix01 ~]# rpm -qa | grep samba
samba-3.0.23c-2
samba-common-3.0.23c-2
system-config-samba-1.2.39-1.el5
samba-client-3.0.23c-2
[root@sounix01 ~]# service smb start
启动 SMB服务: [确定]
启动 NMB服务: [确定]
[root@sounix01 ~]# smbpasswd -a zmt
New SMB password:
Retype new SMB password:
Added user zmt.
[root@sounix01 ~]# ls -l / |grep data1
drwxrwxr-x 14zmt zmt 4096 01-18 11:41data1
[root@sounix01 ~]# vi /etc/samba/smb.conf
[root@sounix01 ~]# service smb restart
关闭 SMB服务: [确定]
关闭 NMB服务: [确定]
启动 SMB服务: [确定]
启动 NMB服务: [确定]
[root@sounix01 ~]#
[root@sounix01 ~]# rpm -qa | grep samba
samba-3.0.23c-2
samba-common-3.0.23c-2
system-config-samba-1.2.39-1.el5
samba-client-3.0.23c-2
[root@sounix01 ~]# service smb start
启动 SMB服务: [确定]
启动 NMB服务: [确定]
[root@sounix01 ~]# smbpasswd -a zmt
New SMB password:
Retype new SMB password:
Added user zmt.
[root@sounix01 ~]# ls -l / |grep data1
drwxrwxr-x 14zmt zmt 4096 01-18 11:41data1
[root@sounix01 ~]# vi /etc/samba/smb.conf
[root@sounix01 ~]# service smb restart
关闭 SMB服务: [确定]
关闭 NMB服务: [确定]
启动 SMB服务: [确定]
启动 NMB服务: [确定]
[root@sounix01 ~]#
其中 vi/etc/samba/smb.conf里面配置了一个名为data1的共享,共享的目录也是/data1,并允许zmt这个用户可以修改,其他用户只能只读。
还有,如果配置zmt可以修改data1共享的时候,必须在Linux下,设置zmt也有对/data1这个目录的修改权限。
下面是smb.conf中[data1]的配置:
[data1]
comment = Sounix Software
path = /data1
public = no
guest ok = no
browseable = yes
writable = no
write list = zmt
最后就可以访问了:comment = Sounix Software
path = /data1
public = no
guest ok = no
browseable = yes
writable = no
write list = zmt
如果用其他Linux计算机访问此共享,那么可以用smbclient或者用mount挂载:
[root@qaeback mnt]# mount -t cifs -o username=zmt,password=zmt//sounix01/data1 /mnt/test
[root@qaeback mnt]# mount | grep sounix
//sounix01/data1 on /mnt/test type cifs (rw,mand)
[root@qaeback mnt]#
附:Samba相关命令
这是《Linux工作日志之:Samba与NFS的基本配置》的补充篇。
因为篇幅有限,所以上篇配置里面不能列出一些命令的详细参数,现在这里这种讲讲。
smbclient
[root@qaeback mnt]# mount | grep sounix
//sounix01/data1 on /mnt/test type cifs (rw,mand)
[root@qaeback mnt]#
附:Samba相关命令
这是《Linux工作日志之:Samba与NFS的基本配置》的补充篇。
因为篇幅有限,所以上篇配置里面不能列出一些命令的详细参数,现在这里这种讲讲。
smbclient
smbclient(samba client)
功能说明:可存取SMB/CIFS服务器的用户端程序。
语 法:smbclient[网络资源][密码][-EhLN][-B<IP地址>][-d<排错层级>][-i<范围>][-I<IP地址>][-l<记录文件>][-M<NetBIOS名称>][-n<NetBIOS名称>][-O<连接槽选项>][-p<TCP连接端口>][-R<名称解析顺序>][-s<目录>][-t<服务器字码>][-T<tar选项>][-U<用户名称>][-W<工作群组>]
补充说明:SMB与CIFS为服务器通信协议,常用于Windows95/98/NT等系统。smbclient可让Linux系统存取Windows系统所分享的资源。
参 数:
[网络资源] [网络资源]的格式为//服务器名称/资源分享名称。
[密码] 输入存取网络资源所需的密码。
-B<IP地址> 传送广播数据包时所用的IP地址。
-d<排错层级> 指定记录文件所记载事件的详细程度。
-E 将信息送到标准错误输出设备。
-h 显示帮助。
-i<范围> 设置NetBIOS名称范围。
-I<IP地址> 指定服务器的IP地址。
-l<记录文件> 指定记录文件的名称。
-L 显示服务器端所分享出来的所有资源。
-M<NetBIOS名称> 可利用WinPopup协议,将信息送给选项中所指定的主机。
-n<NetBIOS名称> 指定用户端所要使用的NetBIOS名称。
-N 不用询问密码。
-O<连接槽选项> 设置用户端TCP连接槽的选项。
-p<TCP连接端口> 指定服务器端TCP连接端口编号。
-R<名称解析顺序> 设置NetBIOS名称解析的顺序。
-s<目录> 指定smb.conf所在的目录。
-t<服务器字码> 设置用何种字符码来解析服务器端的文件名称。
-T<tar选项> 备份服务器端分享的全部文件,并打包成tar格式的文件。
-U<用户名称> 指定用户名称。
-W<工作群组> 指定工作群组名称。
功能说明:可存取SMB/CIFS服务器的用户端程序。
语 法:smbclient[网络资源][密码][-EhLN][-B<IP地址>][-d<排错层级>][-i<范围>][-I<IP地址>][-l<记录文件>][-M<NetBIOS名称>][-n<NetBIOS名称>][-O<连接槽选项>][-p<TCP连接端口>][-R<名称解析顺序>][-s<目录>][-t<服务器字码>][-T<tar选项>][-U<用户名称>][-W<工作群组>]
补充说明:SMB与CIFS为服务器通信协议,常用于Windows95/98/NT等系统。smbclient可让Linux系统存取Windows系统所分享的资源。
参 数:
[网络资源] [网络资源]的格式为//服务器名称/资源分享名称。
[密码] 输入存取网络资源所需的密码。
-B<IP地址> 传送广播数据包时所用的IP地址。
-d<排错层级> 指定记录文件所记载事件的详细程度。
-E 将信息送到标准错误输出设备。
-h 显示帮助。
-i<范围> 设置NetBIOS名称范围。
-I<IP地址> 指定服务器的IP地址。
-l<记录文件> 指定记录文件的名称。
-L 显示服务器端所分享出来的所有资源。
-M<NetBIOS名称> 可利用WinPopup协议,将信息送给选项中所指定的主机。
-n<NetBIOS名称> 指定用户端所要使用的NetBIOS名称。
-N 不用询问密码。
-O<连接槽选项> 设置用户端TCP连接槽的选项。
-p<TCP连接端口> 指定服务器端TCP连接端口编号。
-R<名称解析顺序> 设置NetBIOS名称解析的顺序。
-s<目录> 指定smb.conf所在的目录。
-t<服务器字码> 设置用何种字符码来解析服务器端的文件名称。
-T<tar选项> 备份服务器端分享的全部文件,并打包成tar格式的文件。
-U<用户名称> 指定用户名称。
-W<工作群组> 指定工作群组名称。