CentOS6 samba配置实例及详解

CentOS6 samba配置实例及详解
操作系统:CentOS 6.2
samba版本:Samba 3.5.10-114.el6

##################################################
比较重要的相关配置文件
##################################################
/etc/samba/smb.conf        主配置文件
/etc/samba/lmhosts        对应NetBIOS Name与主机ip,类似于/etc/hosts
/etc/samba/smbpasswd        samba默认的用户密码对应表
/etc/samba/smbusers        windows与unix like管理员等账号的不一致,administrator root,用来对应两者间的账号关系,需smb.conf内的"username map"设置项来启动才行
/usr/share/doc/samba-    相关的技术手册




##################################################
常用相关的命令
##################################################
smbd            管理主机共享目录,文件与打印机等的守护进程
nmbd            管理群组和NetBIOS Name的解析

testparm        检测配置文件的语法
smbstatus        列出运行状态
smbpasswd        建立和设置smb用户的密码
smbclient        用于查看smb或"网上邻居"共享情况
smbmount        远程挂载(centos6中没有),这一命令可行 mount -t cifs  ///资源

nmblookup        查询NetBIOS Name,类似nslookup的功能
smbtree            查看工作级与计算机名称的树状目录分布图



##################################################
相关软件
##################################################
samba            主要的daemon文件(smbd及nmbd)
samba-common        主要配置(smb.conf),testparm
samba-client        smbmount,smbclient
samba-swat        网页配置程序
samba-domainjoin-gui    domainjoin GUI




示例一:匿名共享
vim /etc/samba/smb.conf
对默认的配置文件只需修改共享模式
CentOS6 <wbr>samba配置实例及详解
user ---> share

然后添加如下共享段
CentOS6 <wbr>samba配置实例及详解
service smb restart
service nmb restart
chkconfig smb on
chkconfig nmb on

chmod -R 777 /mnt/samba
以上配置即可开启匿名共享

windows可以win+R快捷键调出运行框,输入\\192.168.x.x即可打开共享目录
CentOS6 <wbr>samba配置实例及详解



提示:可选参数
browseable = no #默认为yes, 即所有人都可以看到该目录, 当设置为no的时候,看不到该目录,但仍然可以访问,访问方式如下:
\\192.168.x.x\share

CentOS6 <wbr>samba配置实例及详解

##################################################
samba常用的有两种联机模式
##################################################
1.workgroup    和一般的windows客户机一样
2.domain    Primary Domain Controller,简称PDC,类似于linux环境下的nis或ldap服务器,将所有的账号与密码都放在一台主控计算机上面,统一管理.



##################################################
配置参数
##################################################
smb.conf主要分两部分,一部分是主机信息部分,[global]部分,一部分是共享信息,如:[homes],#和;都是批注

#############
[global]部分
#############

workgroup=workgroup            NT域名或工作组名,如:mshome,workgroup
netbios name=jlive            主机的netbios名称
server string=jlive's samba        主机的简易说明
interface=接口或ip            配置samba使用多个网络界面,设置samba需要监听的网上
                    如interface=192.168.100.2 58.195.172.229
                    或interface=eth0 lo

hosts allow=ip地址或ip地址段        smb自带的防火墙,允许哪些机器可以访问
hosts deny=ip地址或ip地址段        smb自带的防火墙,允许哪些机器可以访问,一般allow就足够了如hosts allow=ct6,jlive.com,192.168.100. EXCEPT 192.168.100.5
允许主机名为ct6的主机,域名为jlive.com的域以及192.168.100.0/24中除            192.168.100.5外的所有主机访问

smb ports=139                指定smb服务端口,默认139 445端口都是开启状态,可以关闭445端口,只允许标准的139端口
username map=/etc/samba/smbusers    把身份相同但用户名不同的windows和linux用户进行映射
guest account=pcguest            允许作为客户登录的账号,默认为nobody
restrict anonymous=yes|no        是否限制匿名用户登录

#若出现乱码问题,可进行以下设置
display    charset=UTF-8            smb服务器编码
unix charset=UTF-8            linux编码
dos charset=UTF-8            windows编码

log file                日志文件的存放位置
max log size                日志文件最大千字节,单位kb
max open files                能够开启最多的文件数量,默认没有限制

#密码相关的设置
security                有如下几种匹配模式
share    共享级访问,不需密码即可分享
user    用户级访问,使用smb本身的密码数据库
server    服务器级访问,使用外部主机密码,可以为windows(pdc),samba,若           设置该项则在smb.conf中要提供password server=ip地址的设置
domain    域级访问,把samba加入到域,用windows域控制器作为samba的密码           服务器, 来对客户机进行身份验证,也需要password server来指定.
                        netbios=main
                        password server=**    #用主域控制器来作密码服务器
                        security=domain        
                        workgroup=***        #主域控制器的域名
                        ads    最高级别的验证模式,把samba服务器加入到windows活动目录中,一般不使用
encrypt passwords            密码是否加密
smb passwd file=/etc/samba/smbpasswd    密码文件
passdb backend = tdbsam            centos6中默认使用tdb数据库存储密码文件
machine password timeout        输入密码的超时设置,单位为秒
min password length            密码的最小长度
password level                有效密码的位数
name resolve order            smb主机对netbios name的解析方式:
                            lmhosts         直接以lmhosts来对照
                            wins         利用一台可管理windows网上邻居的主控计算机来记录,smb主机向该windows server要求netbios name的解析
                            host      通过/etc/hosts或nis dns等方式来解析结果
                            bcast         在局域网中直接通过广播功能来处理

unix password sync=yes|no        是否同步linux主机/etc/passwd
passwd program                运行修改密码程序所在路径


#############
打印机
#############
load printers = yes            允许自动加载打印机列表
cups options = raw
printcap name = /etc/printcap        打印机配置文件的位置
printcap name = lpstat            打印机名称
printing = cups                打印机类型,主要有cups|bsd|sysv|plp|lprng|aix|hpux|qnx



#############
wins参数
#############
wins support=yes|no    是否作为wins服务器
wins server=ip|主机名  wins服务器地址,一台samba服务器不能同时作为wins服务器和客户端,当一台samba服务器不是wins服务器而仅需wins服务时,可设置该参数指定wins服务器
wins proxy=yes|no    是否启用wins代理
dns proxy=yes|no    是否启用dns代理,用dns来查询netbios name

domain master=yes|no    指定samba服务器为网络中的网域控制器
domain logons=yes|no    是否允许windos登录网域
password server     指定windows(pdc)或samba密码服务器


#############
共享部分
#############
[共享名称]        只是一个"代号",[homes]是一个特殊的共享名,代表linux主机上的用户默认目录
comment            目录的说明
path            共享目录的实际路径
public            是否让所有可以登录的用户看到这个项目
read only        是否只读
browseable        目录浏览权限
writable        目录写入权限,与read only相似,若两者都有则以最后出现的那个设置参数为主
create mode        新建文件的默认权限
directory mode        新建目录的默认权限
valid users        指定能进入此资源的合法用户
guest ok        是否允许来宾用户访问
guest only        强制以guest身份浏览
read list        只读权限用户列表
write list        读写权限的用户列表,@表示用户组
printable        是否可打印



#############
变量特性
#############
%S    任何可登陆的用户均可登陆
%m    客户端的netbios主机名
%M    客户端hostname
%L    smb主机的netbios主机名
%h    smb主机的hostname
%H    用户的默认目录
%U    目前登陆的用户名
%g    登陆用户的群组名
%I    客户端的ip
%T    目前的日期与时间



##################################################
配置参数
##################################################
以下是一个样例,更多的设置要依实际需要和用途来设置

1.设置lmhosts,对应netbios与ip
vi /etc/samba/lmhosts
127.0.0.1    localhost
192.168.100.2    jlive

2.检查语言设置
一般考虑以下几个因素:
            源文件,即要共享的文件
            linux默认语言编码
            samba显示编码
            客户端编码

3.vi /etc/samba/smb.conf

#======================= Global Settings=====================================
   
[global]
   
    workgroup = mshome
    server string = Samba Server Version %v
    netbios name = jlive
   
    interfaces = lo eth0 192.168.100.2/24 58.195.172.229/24
    hosts allow = 127. 192.168.100. 58.195.172.
   
# --------------------------- Logging Options -----------------------------
   
    log file = /var/log/samba/log.%m
    max log size = 50
   
# ----------------------- Standalone Server Options ------------------------
    security = user
    encrypt passwords=yes
    passdb backend = tdbsam

    name resolve order = lmhosts bcast host


##################################################
使smb服务器作为pdc主机
##################################################
# ----------------------- Domain Controller Options ------------------------
   
    domain master = yes                   #指定samba服务器为网络中的网域控制器
    domain logons = yes                  #允许登录服务
    logon  script = start.bat              #登录后自动执行的程序
    logon path = /home/samba/netlogon              #登录默认目录
    logon drive = j                      #登录后默认目录挂载成为windows的哪个盘
    time server = yes                  #保持windows与samba的时间同步
    admin users = root                  #默认的管理员账号
   
# ----------------------- Browser Control Options ----------------------------
    local master = yes
    preferred master = yes
    os level = 200        #操作系统的等级趆高才能成为主网段的控制者,但不可超过255
   
#----------------------------- Name Resolution -------------------------------
   
    wins support = yes    #开启wins(pdc)主机服务
   
##############################################
打印机的设置
##############################################
# --------------------------- Printing Options -----------------------------
   
    load printers = yes        #允许自动加载打印机列表
    cups options = raw

    printcap name = /etc/printcap    #打印机配置文件的位置
    printcap name = lpstat        #打印机名称
    printing = cups            #打印机类型


##############################################
共享设置
##############################################
#============================ Share Definitions ==============================
[netlogon]
    comment = Network Logon Service
    path = /home/samba/netlogon        #与前面的logon script有关,该程序便放在这里
    writable = no
    write list = root
    guest ok = yes
    follow symlinks = yes
    share modes = no
   
   
[Profiles]
    path = /home/samba/profiles
    browseable = no
    guest ok = yes
   
[homes]
    comment = Home Directories
    browseable = no
    writable = yes
    valid users = %S
    valid users = MYDOMAIN\%S
    create mode = 0664
    directory mode = 0775
   
[printers]
    comment = All Printers
    path = /var/spool/samba        #打印队列
    printable = yes            
    public = yes            
    browseable = yes
    guest ok = yes
    writable = no

    valid users = @root shihan    #可以使用的合法用户
    printer admin = shihan        #打印管理员
   
[ftp]
    comment = Public ftp
    path = /var/ftp
    public = yes
    writable = no
    printable = no
    write list = root
    valid users = %root

[tmp]
    comment = Public Stuff
    path = /tmp
    public = yes
    writable = yes
    printable = no
    write list = root



######################################################
打印共享
###############################################
cups主要通过postscript的打印语言与打印机沟通,客户端只要取得postscript的驱动程序就能够使用samba服务器所提供的打印机了.

###########
cups设置
###########
vi /etc/cups/cupsd.conf

# Restrict access to the server...

  Order allow,deny
  Allow From 192.168.100.0/24


# Restrict access to the admin pages...

  Order allow,deny
  Allow From 192.168.100.0/24

......
Listen 0.0.0.0:631   

#至于为了操作windows相关软件传来的打印数据,目前还未偿试

###########
samba设置
###########
1.到http://www.cups.org/Windows/software.php下载cups-samba-xxx.tar.gz这个包,解压后安装,默认目录在/usr/share/cups/drivers

2.要支持windowsXP还需将C:\windows\system32\spool\drivers\w32x86中以PS开头的文件全部另存为小写的文件并放置到/usr/share/cups/drivers目录下即可

3.增加打印机驱动共享数据
vi /etc/samba/smb.conf

......

[print$]
    comment    = Printer driver
    path       = /etc/samba/drivers        #共享打印机驱动的存放目录
    browseable = yes
    read only  = yes
    write list = root            #驱动程序的管理员

4.建立好相关目录
mkdir /etc/samba/drivers

5.告知samba,cups可提供winXP的客户端打印驱动程序共享
cupsaddsmb -H [samba主机名] -h [cups主机名] -a -v -U [用户账号]

cupsaddsmb -H localhost -U root -a -v

之后驱动程序的存放目录会自动生成一个目录/etc/samba/drivers/W32X86

6.重启服务
/etc/init.d/cups restart
/etc/init.d/smb restart



##############################################
搭建pdc主机
##############################################

1.建立所需要的目录与文件
mkdir -p /home/samba/{netlogon,profiles}
cd /home/samba/netlogon

vi start.bat

net time
jlive    /set /yes
net use J: /home
net use D:
jlive    emp
#主要格式为net use [device:] [directory]

2.将该文件转成dos的断行格式,因为windows是以^M$结尾,而unix-like是以$结尾
unix2dos  /home/samba/netlogon/start.bat

cat -A /home/samba/netlogon/start.bat

net time^M$
jlive^I/set /yes^M$
net use J: /home^M$
net use D:^M$
jlive^Iemp^M$
#具体用法请查阅dos命令的相关用法

3.建立用户
smbpasswd -a root

说明:windows用户的"桌面" "我的文档"等目录会默认保存在/home/用户账号/profile/目录下,该目录在用户登录时会主动的建立.对于新增的用户可心这样设置,
mkdir /etc/skel/profile
以后使用useradd新增用户后就可以直接拥有samba PDC的目录了

4.建立机器码账号
由于PDC会对windows客户端的主机名(netbios name)进行检查,所以还需为客户端的主机名称进行账号设置
useradd -M -s /sbin/nologin -d /dev/null  pc1$
useradd -M -s /sbin/nologin -d /dev/null  pc2$

-M    新建用户时不要创建用户主目录
-d    指定用户的主目录,这里指定的是/dev/null这个特殊文件,即为空
pc1$    主机账号需在后面加上一个"$"

5.添加samba账号
smbpasswd -a -m pc1$
smbpasswd -a -m pc2$



#################################################
相关命令的常见用法
#################################################

#############
1.testparm    测试samba服务的正确性
#############
testparm

#############
2. smbpasswd    smb用户的新增,删除,密码修改等有关
#############
smbpasswd  -adexm  username

-a     add
-d    disable 使某个用户暂无法使用
-e    enable     与disable相反
-x    删除某个用户
-m    用户的机器代码

#############
3.smbclient   
#############
#客户端的查看等
smbclient  -L //127.0.0.1
smbclient  -L //127.0.0.1 -U username

#利用类似ftp的方式登录远程主机
smbclient '//[IP|hostname]/资源名称' [-U username]

smbclient  -L //127.0.0.1/tmp -U username

#############
4.smbmount|mount 远程挂载
#############

smbmount //IP/资源 /挂载点 [-o options]
mount -t smbfs  //IP/资源 /挂载点 [-o options]

-o username=    用户名
   password=    密码
   codepage=    远程主机语言编码
   iocharset=    本机语言编码

mount -t smbfs //127.0.0.1/tmp /mnt/tmp -o username=test,password=****,codepage=GB2312

注:centos6中好像省去了smbmount这个命令,并且挂载时,mount不认识smbfs,但可以以cifs来挂载
mount -t cifs //127.0.0.1/tmp /mnt/tmp -o username=test,password=****,codepage=GB2312


#############
5.nmblookup    查询netbios name,ip等相关信息
#############

nmblookup [-S] [-U wins IP] [-A IP] name

nmblookup -U localhost jlive

querying jlive on 127.0.0.1
58.195.172.229 jlive<00>
192.168.100.2 jlive<00>

nmblookup -S jlive

querying jlive on 127.255.255.255
58.195.172.229 jlive<00>
Looking up status of 58.195.172.229
    JLIVE           <00> -         H
    JLIVE           <03> -         H
    JLIVE           <20> -         H
    ..__MSBROWSE__. <01> - H
    MSHOME          <1d> -         H
    MSHOME          <1b> -         H
    MSHOME          <1c> - H
    MSHOME          <1e> - H
    MSHOME          <00> - H

    MAC Address = 00-00-00-00-00-00

#############
6.smbstatus    观察samba的状态
#############
smbstatus [-pS] [-u username]
-p processID
-S 列出已经被使用的资源共享状态
-u 只列出某个用户相关的共享数据


Samba version 3.5.10-114.el6

Samba version 3.5.10-114.el6
PID     Username      Group         Machine                        
-------------------------------------------------------------------
3092      root          root          127.0.0.1    (127.0.0.1)

Service      pid     machine       Connected at
-------------------------------------------------------
ftp          3092   127.0.0.1     Fri May 18 22:41:05 2012




###############################################
windows客户端访问
###############################################
XP用户:
1."我的文档"--"网上邻居"--"整个网络"--"microsoft windows network"

2."开始"--"搜索"--"计算机或人"--"网络上的一个计算机"

支持不同的网段ip联机
"控制面板"--"windows防火墙"--"例外"--"文件和打印机共享"--"编辑"
勾选相应的端口
"更改范围"--"自定义列表",输入网段范围即可
填写正确的ip,"立即搜索"



################################################
通过445端口的特殊登录方式
################################################
windows客户机,"开始---运行"输入
\\samba主机的ip\共享资源,如:\\192.168.100.2\public

还可以登录别人的c盘或d盘,只要别人允许共享
\\192.168.100.2\c$


posted @ 2013-05-11 20:30  李庆喜  阅读(750)  评论(0编辑  收藏  举报