您的位置:首页 > 其它

Samba服务配置与应用案例

2013-03-22 11:51 309 查看
下面转载的文档内容,我没有测试过,不知道是不是正确的,转载的目的是担心以后用的时候找不到,感谢原作者和转载过来的网站!

一,Samba的简单介绍

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的某些管理功能.

二,Samba的安装

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服务配置

1.查看共享服务需要打开的端口


[root@www ~]# cat /etc/services | grep netbios

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

复制代码
注:这几个服务需要打开,否则用户将无法访问linux服务器上的共享资源,还要注意防火墙的是否允许Windows访问linux资源.

2.配置文件详细介绍:

#grep -v '^#' /etc/samba/smb.conf | grep -v '^$'|grep -v '^;' //忽略注释配置samba文件

[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

复制代码

可以看到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 后搜索%后可以看到很多参数介绍:

变量 说明

客户端变量

%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 当前日期和时间

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服务器:

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管理工具

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

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

}

复制代码
#service xinetd restart

#chkconfig swat on
http://192.168.0.1:901
六,企业应用案例.

要求:

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添加批量的用户:

#for user in seek len gao popo

>do

>useradd -g tech -s /bin/false $user

>smbpasswd -a $user

>done

New...passwd:一个一个的给其添加密码,市场部同样可以利用for批量添加用户.

#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 添加共享目录配置文件

[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

复制代码

#servcie smb restart 重启Samba服务开始测试,我已经在我的机子测试好啦

转载网址:/article/4304632.html

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: