一,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服务开始测试,我已经在我的机子测试好啦