samba.docx
《samba.docx》由会员分享,可在线阅读,更多相关《samba.docx(20页珍藏版)》请在冰点文库上搜索。
![samba.docx](https://file1.bingdoc.com/fileroot1/2023-5/20/978c6edc-d99c-41bc-80b2-e666a4ed3cd3/978c6edc-d99c-41bc-80b2-e666a4ed3cd31.gif)
samba
帮助|留言交流|
首页我的图书馆主题阅读精彩目录精品文苑Tags会员浏览好书推荐samba服务器的架设_刘永宏的技术论坛_XX空间(转载)jan_hf收录于2010-02-21阅读数:
公众公开原文来源
samba服务器的架设
一.samba的基本概念
1.samba的功能
samba是一种基于linux/unix平台中利用于smb(服务信息块)协议,实现以下功能的软件包:
?
Linux/UNIX与MS系统主机之间的文件及打印共享
?
支持wins服务器解析和浏览
?
支持Windows域控制器和成员服务器的身份验证
?
可以模拟windows的域控制器
?
支持SSL
2.samba的工作原理
samba利用smbd程序来监听139号端口实现主机之间文件及打印共享,利用nmbd监听137,138端口实现主机之间可以利用netbios名称相互访问
二.samba的配置
1.安装samba的软件包.
#mount/dev/cdrom(插入第一张安装光盘)
#cd/mnt/cdrom/RedHat/RPMS
#rpm–ivhsamba-common-2.2.7a-7.9.0.i386.rpm
#rpm–ivhsamba-2.2.7a-7.9.0.i386.rpm
#rpm–ivhsamba-client-2.2.7a-7.9.0.i386.rpm
相关文件:
/etc/samba/smb.confsamba的核心配置文件
/etc/rc.d/init.d/smbsamba的启动脚本
/usr/sbin/smbdsamba的守护进程
/usr/sbin/nmbdnetbois的守护进程
/etc/samba/smdpasswd存放samba用户口令
/etc/samba/smbusers存放samba用户与系统用户的映射情况
/usr/sbin/swatsamba的web配置工具
/usr/bin/smbadduser加samba用户
/usr/bin/smbpasswd设置samba用户的口令
/usr/bin/smbclientsamba的客户访问工具
/usr/bin/smbprintsamba的打印工具
/usr/bin/smbmountsamba客户加载工具
/usr/bin/smbumountsamba客户卸载工具
2.修改/etc/samba/smb.conf
作用:
设置samba服务器选项和共享资源的设置
内容:
#说明语句
[global]//定义samba服务器的全局选项
…………
…………
全局参数=值
…………
…………
[homes]//共享用户主目录
…………
…………
资源共享参数=值
…………
…………
[printers]//打印机共享
…………
…………
资源共享参数=值
…………
…………
[public]//共享目录设置
…………
…………
资源共享参数=值
…………
…………
以上声明为系统自带的声明,用户也可以根据实际需要定义共享目录:
[自定义]自定义的共享
…………
…………
资源共享参数=值
…………
…………
说明:
(1)全局参数
基本设置参数:
Workgroup=域名/工作组名
功能:
设定samba服务器所属工作组/域的名称)
实例:
workgroup=linux
Netbiosname=主机名称
功能:
设置samba服务器的netbios名称
实例:
netbiosname=smbserver
Serverstring=字符串
功能:
设置samba服务器的描述
实例:
serverstring=sambaserver
interfaces=接口名/ip地址
功能:
设置samba服务器的ip地址,如果不想使用默认IP地址或者想同时使用多个IP地址,可以设置这个选项
实例:
interfaces=eth0192.168.1.1/255.255.255.0
netbiosaliases=主机名称
功能:
设置netbios的别名
实例:
netbiosaliases=smb1smb2
bindinterfacesonly=true/false
功能:
设置主机配置多块网卡时,是否区分开不同网卡的数据报,默认为false
实例:
bindinterfacesonly=false
安全设置参数:
adminusers=用户名
功能:
设置管理员账号,该用户拥有所有文件的存取权限
实例:
adminusers=smbadmin
socketaddress=ip地址
功能:
指定samba服务器监听的ip地址
实例:
socketaddress=192.168.0.1
security=user/share/domain/server
功能:
设置samba的共享安全级别
注意:
share表示共享级访问,服务器不对客户机进行身份验证
user表示用户级访问,被访问的samba服务器要对客户机进行身份验证
server表示服务器级访问,被访问的samba服务器请求另一台samba服务器对客户机进行身份验证
domain表示域级访问,被访问的samba服务器请求另一台winNT域控制器对客户机进行身份验证
实例:
security=share
encryptpasswords=yes/no
功能:
指定是否使用加密口令
注意:
对于windows客户机来说,该选项应该设置为yes
实例:
encryptpasswords=yes
restrictanonymous=true/false
功能:
指定服务器是否允许winNT/2000以匿名方式登录
实例:
restrictanonymous=false
securitymask=权限值
功能:
设置windows客户机改变samba服务器文件权限时所能更改的最大文件权限
实例:
securitymask=0744
smbpasswdfile=文件路径
功能:
指定samba用户密码的文件位置
实例:
smbpasswdfile=/etc/samba/smbpasswd
maptoguest=never/baduser/badpassword
功能:
设置当用户所输入的用名和密码不正确时的处理方式
注意:
该选项只有security=user时才有效,该选项可以取以下三种值:
never表示拒绝使用任何资源
baduser表示用户输入用户名正确,但密码错误时,可以允许以guest登录
badpassword表示用户输入的用户名和口令都错误时,可以允许以guest登录
minpasswdlength=数字
功能:
指定密码的最小长度,默认值为5位
实例:
minpasswdlength=5
nullpasswords=yes/no
功能:
设置是否允许用户密码为空
实例:
nullpasswords=yes
passwordlevel=数字
功能:
设置用户设置密码时,最多允许几个字符大小写不同
实例:
passwdlevel=8
usernamelevel=数字
功能:
当验证账号时,设定最多允许几个字符大小写不同
实例:
usernamelevel=8
usernamemap=文件路径
功能:
指定SMB用户名与LINUX用户名映射文件的路径
实例:
usernamemap=/etc/samba/smbusers
unixpasswdsync=false/true
功能:
设置服务器是否允许samba用户口令与linux系统用户密码同步,当改变samba用户口令同时更新linux系统用户的口令
实例:
unixpasswdsync=false
passwordserver=ip址址/主机名
功能:
指定密码服务器的位置,当security值为server/domain必须设置该参数
实例:
passwordserver=192.168.3.1
updateencryptd=yes/no
功能:
设置客户在samba用户登录时,是否需要修改密码
实例:
updateencryptd=yes
guestaccount=用户名
功能:
指定来宾账号的名称,默认为nobody
实例:
guestaccount=guest
rootdirectory=目录名
功能:
指定samba服务器工作主目录,任何不在此目录下的资源则拒绝访问
实例:
rootdirectory=/etc/samba/
hostsallow=ip地址/主机名/域名
功能:
设置允许访问的客户机
实例:
hostsallow=192.168.1.1
hostsdeny=ip地址/主机名/域名
功能:
设置禁止访问的客户机
实例:
hostsdeny=192.168.0.2
打印机设置参数:
printcapname=路径
功能:
设定打印机的配置文件的位置
实例:
printcapname=/etc/printcap
loadprinters=yes/no
功能:
设定是否自动装载打印机的装载文件,当要做打印服务器时必须设置为yes
实例:
loadprinters=yes
printing=bsd/lprng/aix/hpux/qnx/sysv/plp
功能:
设置打印机相关指令时所采取的模式
实例:
printing=lprng
printername=名称
功能:
设置打印机的名称
实例:
printername=hpprint
printerdriverfile=路径
功能:
设置打印机驱动文件的位置
实例:
printerdriverfile=/etc/samba/driver
日志设置参数:
logfile=路径
功能:
定义日志文件的位置
实例:
logfile=/var/log/samba/%m.log
maxlogsize=数字
功能:
定义日志文件的最大千字节
实例:
maxlogsize=5000
运行效率参数:
changenotifytimeout=数字
功能:
设置服务器周期性异常通知
实例:
changenotifytimeout=90
deadtime=数字
功能:
客户端无操作多少分钟后服务器中断连接
实例:
deadtime=10
getwdcache=yes/no
功能:
是否启用cache功能
实例:
getwdcache=yes
keepalive=数字
功能:
服务器每隔多少秒向客户端发送keepalive包用于确认客户端是否工作正常
实例:
keepalive=30
maxopenfiles=数字
功能:
同一个客户端最多能打开的文件数目
实例:
maxopenfiles=1000
maxttl=数字
功能:
设定nmbd程序采用wins方式解析时,最大存活时间
实例:
maxttl=259200
clientcodepage=850/936
功能:
设定客户端存取samba服务器的资源时所使用的字符编码表
实例:
clientcodepage=936
wins设置参数:
winssupport=yes/no
功能:
是否支持wins解析
实例:
winssupport=yes
winsserver=服务器
功能:
指定wins服务器的位置
实例:
winsserver=192.168.0.2
winsproxy=yes/no
功能:
设置samba服务器是否支持wins代理功能
实例:
winsproxy=yes
(2)资源共享的选项
基本选项:
comment=说明语句
功能:
对共享资源的说明
实例:
comment=fileshared
path=路径
功能:
共享资源的路径
实例:
path=/soft
访问控制选项:
browseable=yes/no
功能:
是否可以浏览共享目录,默认为yes
实例:
browseable=no
printable=yes/no
功能:
设置客户机是否可以使用共享打印机打印
实例:
printable=yes
available=yes/no
功能:
设置共享资源是否可用
实例:
avalidable=yes
public=yes/no
功能:
设置共享资源是否允许所有用户访问,除guest用户以外
实例:
public=yes
guestok=yes/no
功能:
设置是否允许guest用户访问共享资源
实例:
guestok=yes
guestonly=yes/no
功能:
设置共享目录只允许guest用户访问
实例:
guestonly=yes
readonly=yes/no
功能:
访问用户对共享资源只读
功能:
readonly=yes
validusers=用户名/@组名
功能:
指定允许访问共享资源的用户/组,多用户名用逗号分开,指定组时要在组名前加@
实例:
valideusers=u1,u2,@g1
invalidusers=用户名/@组名
功能:
指定禁止访问共享资源的用户/组,多用户名用逗号分开,指定组时要在组名前加@
实例:
invalidusers=@g2
createmode=权限值
功能:
指定客户机在共享目录中创建文件的默认权限,默认权限为744
实例:
createmode=755
directorymode=0775
功能:
指定客户机共享目录中创建文件目录的默认权限,默认权限为755
实例:
directorymode=755
writable=yes/no
功能:
指定共享的路径是否可写
实例:
writable=yes
writelist=用户名/@组名
功能:
设定允许读写共享目录的用户列表
实例:
writelist=abc,@g2
readlist=用户名/@组名
功能:
设定只读访问用户列表
实例:
readlist=abc,@cuo
preexec=路径
功能:
指定客户机连接时要自动执行文件
实例:
preexec=/bin/mount/dev/cdrom
postexec=路径
功能:
指定客户机断开连接时要自动执行的文件
实例:
postexec=/bin/umount/dev/cdrom
rootpreexec=路径
功能:
指定客户机连接时要以ROOT用户身份自动执行的文件
实例:
rootpreexec=/bin/mount/dev/cdrom
rootpostexec=路径
功能:
指定客户机断开连接时要以ROOT用户身份自动执行的文件
实例:
rootpostexec=/bin/umount/dev/cdrom
(3)特殊变量
%S:
当前服务名
%P:
当前服务的根目录
%u:
当前服务的用户名
%h:
samba服务器的主机名
%m:
客户机的NETBIOS名
%Lsamba服务器的netbios名
%vsamba版本号
%g给定%u的所在的主工作组名
%H给定的%u的宿主目录
%T当前日期和时间
文件实例:
根据以下要求/etc/samba/smb.conf文件:
?
设置samba服务器的工作组名为linuxgroup,NETBIOS名为linux
?
设置samba服务器的访问模式为share
?
共享/soft目录,共享名为soft,该共享目录允许所有的用户读写操作
#vi/etc/samba/smb.conf
修改内容如下:
[global]
Workgroup=linuxgroup
Netbiosname=linux
Security=share
………………
………………
………………
[homes]
………………
………………
………………
………………
[printers]
………………
………………
………………
………………
[soft]//添加如下这个声明
comment=applicsoftshared
path=/soft
browseable=yes
writable=yes
guestok=yes
public=yes
3.启动samba服务
#servicesmbstart
4.samba用户的建立
samba用户其实是系统用户的映射,所以建立samba用户先必须在系统中建立相应的用户,再通过特定方式映射为samba用户
方法一:
smbadduser用户名:
用户名
实例:
建立samba用户u1
#useraddu1
#passwdu1
#smbadduseru1:
u1
方法二:
#smbpasswd–a用户名
实例:
#useraddu2
#passwdu2
#smbpasswd–au2
三.Samba的客户工具的使用
1.Smbclient
功能:
(1)查看其他主机上共享资源
(2)连接其他主机的共享目录
格式:
#smbclient[参数]主机ip或netbios名称
参数:
-N不提示输入用户口令
-L主机IP地址/netbios名称查看指定主机上的共享目录
-U用户名指定连接其它主机的用户名
实例:
#smbclient-L192.168.0.1-Uadministrator
#smbclient//192.168.0.1/c-Uadministrator
2.smbmount
功能:
加载smb文件系统
格式:
smbmount//主机IP地址或netbios名/共享名装载点-ousername=用户名,password=密码
实例:
#smbmount//192.168.0.1/c/h2-ousername=administrator
四.配置案例
配置要求:
设某公司有财务,技术,领导3个部门,我们分别为3个部门建立3个用户组为caiwu,network,lingdao;三个部门里各有2个用户,我们建用户分别为caiwu01,caiwu02,network01,network02,lingdao01,lingdao02,具体如下:
1.首先服务器采用用户验证的方式,每个用户可以访问自己的宿主目录,并且只有该用户能访问宿主目录,并具有完全的权限,而其他人不能看到你的宿主目录
2.建立一个caiwu的文件夹,希望caiwu组和lingdao组的人能看到,network02也可以访问,但只有caiwu01有写的权限
3.建立一个lindao的目录,只有领导组的人可以访问并读写,还有network02也可以访问,但外人不可访问该目录
4.建立一个文件交换目录exchange,所有人都能读写,包括guest用户,但每个人不能删除别人的文件
5.建立一个公共的只读文件夹public,所有人只读这个文件夹的内容
配置过程:
1.建立相应的用户和用户组
#groupaddcaiwu
#groupaddnetwork
#groupaddlingdao
#useraddcaiwu01-gcaiwu
#useraddcaiwu02-gcaiwu
#useraddnetwork01-gnetwork
#useraddnetwork02-gnetwork
#useraddlingdao01-glingdao
#useraddlingdao02-glingdao
然后我们使用smbpasswd-acaiwu01的命令为6个帐户分别添加到samba用户中
2.建立相应的目录
#mkdir/home/samba
#mkdir/home/samba/caiwu
#mkdir/home/samba/lingdao
#mkdir/home/samba/exchange
#mkdir/home/samba/public
3.改变目录的权限
我们为了避免麻烦可以在这里把上面所有的目录的权限都设置成777:
#chmod777/home/samba
#chmod777/home/samba/caiwu
#chmod777/home/samba/lingdao
#chmod777/home/samba/exchange
#chmod777/home/samba/public
4.修改/etc/samba/smb.conf
#vi/etc/samba/smb.conf
修改内容如下:
[global]
workgroup=linux
netbiosname=smbser
serverstring=xhnet’sSambaFileServer
security=user
encryptpasswords=yes
#其他的基本上可以按照默认的来
[homes]
comment=HomeDirectories
browseable=no
writable=yes
validusers=%S
createmode=0664
directorymode=0775
#homes段满足第1条件
[caiwu]
comment=caiwu
path=/home/samba/caiwu
public=no
validusers=@caiwu,@lingdao,network02
writelist=caiwu01
#caiwu段满足我们的第2要求
[lingdao]
comment=lingdao
path=/home/samba/lingdao
browseable=yes
validusers=@lingdao,network02
writelist=@lingdao
#lingdao段能满足我们的第3要求
[exchage]
comment=ExchangeFileDirectory
path=/home/samba/exchange
public=yes
gusetok=yes
writable=yes
#exchange段基本能满足我们的第4要求,但不能满足每个人不能删除别人的文件这个条件,即使设置了mask也是没用,其实这个条件只要linux设置一个粘着位就行
chmod-R1777/home/samba/exchange
注意这里权限是1777,类似的系统目录/tmp也具有相同的权限,这个权限能实现每个人能自由写文件,但不能删除别人的文件这个要求
[public]
comment=ReadOnlyPublic
path=/home/samba/public
public=yes
readonly=yes
#这个public段能满足我们的第5要求。
4.启动服务
#/