2006/08/16 | Samba服务配置与应用案例
类别(网络工程师) | 评论(0) | 阅读(507) | 发表于 17:36
在论坛上找到的Samba配置方法 讲解比较实用
Samba服务配置与应用案例

Samba服务配置与应用案例[/b:be313e1499]
Author:NetSeek From:http://www.linuxmine.com

一,Samba的简单介绍[/b:be313e1499]
1.Samba的作用:
它能够使windows用户通过"网上邻居",等熟悉的方式直接访问Linux上的资源,也能使linux利用SMB客户端程序访问Windows的共享资源。

2.SMB协议简介:
SMB(Server Message Block,服务信息块),看作是局域网上的共享文件夹/打印机的一种协议.

3.Samba服务的简介:
Samba属于GNU Public License (GPL)软件,任何用户都可以合法且免费的使用他可以到其官方网站http://www.samba.org 下载.

Samba的主要功能:
1,提供windows风格的文件和打印机共享。
2,在Windows网络中解析NetBios的名字
3,提供SMB客户端,linux用户可以利用smbclient利用类似于ftp的形式访问windows资源.
4, 提供命令行工具,利用该工具可以有限制地支持windows的某些管理功能.
[b9]
二,Samba的安装[/b9]

1.Samba服务的安装:
[root@www ~]# rpm -qa |grep samba //查看是否安装软件,我已经安装好啦.
samba-common-3.0.10-1.4E.2
samba-client-3.0.10-1.4E.2
system-config-samba-1.2.21-1
samba-3.0.10-1.4E.2

2.rpm -ivh ....//如果没有安装将以上套件包安装上.

三,Samba服务配置[/b:be313e1499]

1.查看共享服务需要打开的端口
[root@www ~]# cat /etc/services | grep netbios
[code:be313e1499]
netbios-ns 137/tcp # NETBIOS Name Service
netbios-ns 137/udp
netbios-dgm 138/tcp # NETBIOS Datagram Service
netbios-dgm 138/udp
netbios-ssn 139/tcp # NETBIOS session service
netbios-ssn 139/udp
[/code:be313e1499]
注:这几个服务需要打开,否则用户将无法访问linux服务器上的共享资源,还要注意防火墙的是否允许Windows访问linux资源.

2.配置文件详细介绍:
#grep -v '^#' /etc/samba/smb.conf | grep -v '^$ '|grep -v '^;' //忽略注释配置samba文件
[code:be313e1499][global]
workgroup = WORKGROUP
server string = Samba Server
printcap name = /etc/printcap
load printers = yes
cups options = raw
log file = /var/log/samba/%m.log
max log size = 50
security = user
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
dns proxy = no
idmap uid = 16777216-33554431
idmap gid = 16777216-33554431
template shell = /bin/false
winbind use default domain = no
[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 [/code:be313e1499]

可以看到Samba的配置文件分为三段.
[global] :这个小节主要包含全局参数.
[homes] :这个小节用于共享存储在\home中的Linux用户目录
[printers] :用于共享本地linux打印机文件/etc/printcap中列出的所有打印机.

[global] 全局参数配置
workgroup = WORKGROUP
netbios = dolinux.cn
server string = NetSeek's Samba Server(%h Samba Server)
hosts allow = netseek,cnseek.org,192.168.0. EXPECT 192.168.0.5
//允许主机名为netseek的客户端访问,允许域为cnseek.org的域访问,允许192.168.0.*所有的
主机均可访问,
除了192.168.0.5之外.
printcap name = /etc/printcap //Samba启动是,将自动加载的打印机配置文件,建议默认即可.
load printers = yes //允许自动加载浏览列表,默认即可.

log file = /var/log/samba/%m.log samba相关的日志文件.
关于变量介绍:#man 5 smb.conf 后搜索%后可以看到很多参数介绍:
[code:be313e1499]变量 说明
客户端变量
%a 客户端体系:
比如: Win98, WinNT, Samba ...
%I 客户端IP地址
%m 客户端NetBios名
%M 客户端DNS名
用户变量
%g 用户%u 主要组
%H 用户%u home 目录
%u Unix 当前用户名
共享变量
%P 当前共享的根目录
%S 当前的共享名
服务器变量
%h Samba服务器的DNS名字
%L Samba服务器的Netbios名字
%v Samba版本
其他变量
%T 当前日期和时间
[/code:be313e1499]
security = user //使用的安全等级,默认值为user,
其安全等级分为5类:
(1)share
当客户端连接到该等级的Samba服务器时,不需要输入账号和密码,就可以访问samba服务器上的共享
资源,但安全性无法保证.
(2)user
用户需要输入有效的密码,通过验证后才能使用服务器的共享。
(3)server
与user等级相同,也需要输入有效的账号和密码,但需要指定口令服务器:; password server =
<NT-Server-Name>
eg: security = server
password server= SMB2
smb passwd file =/etc/samba/smbpasswd_smb2
(4)Samba服务器加入到windows NT域中后,samba的服务器不再负责账号和密码的验证,统一由域控制
器负责,则使用访安全等级,同时也必须指定口令服务器。
(5)ads安全等级
Samba服务器加入到windows活动目录后,使用访安全等级。同时也需要指定口令服务器.

; password level = 8
; username level = 8 //用户名和密码长度限制.

encrypt passwords = yes //使用口令加密
smb passwd file = /etc/samba/smbpasswd //smaba账号存放文件,注意误必采用加密形式,否则要改win注册表,应为win也采用啦加密方式.

username map = /etc/samba/smbusers //用户映射
功能:将不同的用户映射成为一个用户,
#vi /etc/samba/smbusers
root = administrator admin
nobody = guest pcguest smbguest
格式:
单独的linux账号 = 要映射的windows账号列表.
netseek = testok

; interfaces = 192.168.12.2/24 192.168.13.2/24 //监听多个网卡
格式:interfaces = 网卡IP地址或网络接口.
eg: interfaces = eth0
wins support = yes //设置samba充当wins服务器(WINS 名称服务)
wins server = w.x.y.z //设置wins服务的IP地址.

#testparm //技巧:检查smb.conf 配置文件内是否存在语法错误:

[homes] 设置共享目录:
[homes]
comment = Home Directories //目录文字说明
browseable = no //是否允许用户浏览homes主目录,建议使用默认值,不允许.
writable = yes //是否允许写入个人主目录.

comment = 文字说明内容.
browseable = no 表示禁止浏览,也就是本目录只参有权使用的用户是可以看到的.
writable = yes 允许有权限限的用户写入
vaiid users = netseek,lin,@share 只允许netseek,lin,用户share组的.

设置一个共享目录:
[shares]
comment = NetSeek's share Directory
read list = netseek
write list = @share
path = /home/share
注:netseek 这个用户可以读,share组的用户可以读写,所有testok这个用户对这个目录可读可写.

[printers] 共享打印
comment = All Printers
path = /var/spool/samba
browseable = no
//如果允许guest 打印,只需在末尾加入public = yes
# Set public = yes to allow user 'guest account' to print
guest ok = no
writable = no
printable = yes
3.用户创建:
系统用户映射给samba
#cat /etc/passwd | /usr/bin/mksmbpasswd.sh > /etc/samba/smbpasswd
为用户添加SMB口令:
#smbpasswd netseek
New SMB password:*******
Retype new SMB password:*******

添加新用
为系统加用户后,再添加到samba用户中:
#adduser smb
#smbadduser smb:wsmb(可以不一样,不过管理员为啦好记忆,可以用一样的.)

给上面定义的share目录添加samba用户:
#groupadd share
#useradd testok
#smbpasswd testok
#usermod -G share testok 将test用户添加到share组中
#mkdir /home/share
#chown :share /home/share
#chmod -c g+rwx /home/share 设置share组对该目录有读写和执行权限

4.服务启动:
/etc/rc.d/init.d/smb start
/etc/rc.d/init.d/smb restart
#chkconfig smb on
#chkconfig --list smb

四,访问Samba服务器[/b:be313e1499]:
1.Linux客房机访问Samba共享服务:
smbclient -L //主机名或IP -U 登陆名 //列出共享
smbclient -L //localhost 查看本共情况.

[root@oracle ~]# smbclient -L //oracle.dolinux.cn 查看Samba服务器共享情况.
Password:
Domain=[ORACLE] OS=[Unix] Server=[Samba 3.0.10-1.4E.2]
smb: \>
Password:
Anonymous login successful
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.0.10-1.4E.2]

Sharename Type Comment
--------- ---- -------
tech Disk Tech 's Files
market Disk Market 's Files
Software Disk Share Software
TmpUpload Disk Temp Files
IPC$ IPC IPC Service (NetSeek's Samba server)
ADMIN$ IPC IPC Service (NetSeek's Samba server)
Anonymous login successful
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.0.10-1.4E.2]

Server Comment
--------- -------
IBM-5B367FC73A5
ORACLE NetSeek's Samba server

Workgroup Master
--------- -------
WORKGROUP IBM-5B367FC73A5
smbclient //主机名或IP/共享文件夹 -U 登陆名
[root@oracle ~]# smbclient //oracle.dolinux.cn/tech -U seek
Password:
Domain=[ORACLE] OS=[Unix] Server=[Samba 3.0.10-1.4E.2]
smb: \> (ls,put,get,mput *,mget *)

smbstatus查看Samba资源状态:
#smbstatus -d 查看目前Samba服务的使用状况.
#smbstatus -u netseek

加载资源:
smbmount 共享资源列表 加载点 -o 参数
smbumount 加载点
smbmount //主机名或IP/share -o username=netseek (或者mount)
#smbmount //oracle.dolinux.cn/tech /mnt/share/ -o username=seek
#mount -t smbfs -o username=seek,password=seek //oracle.dolinux.cn/tech /mnt/share/
//上面的命令效果相同
#smbumount /mnt/share 或者umount /mnt/share 卸载挂载点.

2.Windows客户主机访问Samba服务器.
通过网邻居.

五,SWAT,Samba web管理工具[/b:be313e1499]

1.SWAT(Samba web Administration Tool,Samba web )
# rpm -ivh samba-swat-3.0.10-1.4E.2.i386.rpm //安全WEB配置管理工具
#vi /etc/xinetd.d/swat
[code:be313e1499]service swat
{
port = 901
socket_type = stream
wait = no
only_from = 127.0.0.1 192.168.0.1
user = root
server = /usr/sbin/swat
log_on_failure += USERID
disable = no
}[/code:be313e1499]
#service xinetd restart
#chkconfig swat on
192.168.0.1:901
六,企业应用案例.[/b:be313e1499]

要求:
1.所有的员工在公司都能流动办公,都能把自己的文件保存到Samba服务器上.
2.技术部和市场部都有各参的目录,同一个部门的人拥有一个共享目录,共它部门的人都只能访问在
服务器上的自己home目录.
3.所有的用户都不允许使用服务器上的shell,只能通过Samba访问服务器.
4.要求提供一个软件共享目录,存放一个常用软件,供公司员工使用.
5.提供临是文件目录,任何用户都可以对其进行读写(最好是,谁放在这里面的,谁可以删)

分析:
1.要求员工都能流动办公,都能把文件保存Samb服务器上,这个利用home目录就可以实现.
2.创建market,tech组,创建组共享目录.
3.利用不可用的shell就可以如,/bin/false.
4.软件共享:software 公司任何人都可以访问, 不能写.
5.TmpUpload:临时上传文件:
公司员工名单:
总经理:ceo
财务:finance
技术部: tech(seek,len,gao,popo)
市场部:market(jake,joe,linda,gavin)

#groupadd tech
#groupadd market
#useradd -g tech seek -s /bin/false
#useradd -g market jake -s /bin/false
#smbpasswd -a seek
#smbpasswd -a jake //这样一个一个添加用户,我们可以利用for添加批量的用户:
[code:be313e1499]
#for user in seek len gao popo
>do
>useradd -g tech -s /bin/false $ user
>smbpasswd -a $ user
>done
New...passwd:一个一个的给其添加密码,市场部同样可以利用for批量添加用户.
[/code:be313e1499]
#useradd ceo
#useradd finance
#smbpasswd -a ceo
#smbpasswd -a finance

建立共享目录
#mkdir /home/tech /home/market
#ls -ld /home/tech /home/market
#chgrp tech /home/tech
#chgrp market /home/market
#chmod 3770 /home/tech
#chmod 3770 /home/market
(并且设定SGID和粘滞位使得所有在这个目录中建立的文件都拥有tech组的权限并且组中其他的人不能
删除该用户建立的文件。)

#mkdir /software
#mkdir /tmpupload
#chmod 777 /tmpupload
#chmod a+t /tmpupload

#vi /etc/samba/smb.conf 添加共享目录配置文件
[code:be313e1499]
[tech]
comment = Tech 's Files
path = /home/tech
public = no
valid users = @tech
write list = @tech
create mask = 0770
directory mask = 0770
[market]
comment = Market 's Files
path = /home/market
public = no
valid users = @market
write list = @market
create mask = 0770
directory mask = 0770

[Software]
comment = Share Software
path = /software
public = yes
read only = yes
[TmpUpload]
comment = Temp Files
path = /tmpupload
public = yes
writable = yes
[/code:be313e1499]
#servcie smb restart 重启Samba服务开始测试,我已经在我的机子测试好啦.[/code]
0

评论Comments