samba config2

为什么选用Samba
Samba的配置
sam.conf文件简介
配置选项
Samba全局设置
大小写管理
默认全局设置-全局设置
配置共享
共享打印机
配置登录目录
默认全局设置-目录与打印机
配置片段
排除错误
基本网络是否正常
Samba 服务是否运行
防火墙是否打开
用户口令是否使用
Samba是Windows操作系统用来共享文件和打印机的协议.利用Samba可以把Linux计算机放进Microsoft网络中.

Samba是个异构服务.配置好的Linux服务器放入Microsoft的网络后,其他计算机看不到它与Microsoft计算机的任何区别.

Samba可以沟通Linux与Microsoft Windows, 即可以在这些操作系统中无差异的通信.可以将提供Samba服务的Linux服务器的特定目录配置成与Microsoft Windows 网络的任何其他成员一样的共享目录.

为什么选用Samba

文件共享的工具有很多,比如ftp,nfs等等. Samba不同于ftp,提供在线运行程序的功能,即不需要下载到本地硬盘也能够使用一些程序.最常见的是提供在线观看电影. 虽然nfs也能提供文件共享功能,但是nfs的共享功能需要类Unix的系统,在一般的网络中,很多用户使用Windows系统.

基于上述的考虑,学习使用Samba是有用处的.

Samba提供了很全的共享功能,同时配置文件中的选项十分丰富.

Samba的主要配置文件是smb.conf.

Samba的配置sam.conf文件简介sam.conf文件记录samba的配置信息.建议修改前备份安装Samba时默认的配置文件,每次修改后使用 service smb reload 命令读取新的配置.

配置文件一般有三部分,全局配置,打印机配置,共享配置.配置文件以[]标识某一部分配置的开始.全局配置中的内容可以作为后续配置的默认选项.

修改配置文件的方法有两类:修改文本smb.conf,使用有交互界面的配置程序,如SWAT,redhat-config-samba等,后者也是通过修改smb.conf文件达到配置的目的的.一般推荐修改smb.conf文件的方法进行配置.

配置选项Samba全局设置smb.conf文件中有大量全局变量.如果不用某个变量,则Samba程序采用默认值.
  • 基本网络类型: 描述要加入的网络类型. workgroup = WORKGROUP 计算机的描述 server string = CPSELinux Samba Server
  • IP地址限制: 除可以用iptables限制对Samba的访问外,可以用hosts allow命令进一步限制访问. hosts allow = 166.111.8.238 或者允许一个网段的访问 hosts allow = 166.111. 更多限制 hosts allow = 59.66. 166.111.8.238
  • Samba与打印机: 默认情况下,打印机放在共享的可浏览的项目列表中.通过Samba在标准的CUPS系统装入一系列打印机: printcap name = /etc/printcap
    load printers = yes
    printing = cups
  • 宾客账号: Samba可以生成标准的guest帐号.如果要使用宾客帐号,要保证pcguest是Linux系统中的实名用户: ;guest account = pcguest
  • 日志文件: 下列选项对连接Samba服务器的每台计算机配置不同的日志文件。 log file = /var/log/samba/%m.log 指定日志文件大小,size为0时表示日志文件的长度不受限制。当指定大小时, 文件长度的单位为K。 max log size =0
  • 安全模式: Microsoft Windows 网络提供了几个基本的安全模式。选择的方法取决于共享目录的条件和共享网络的类型。 security = share
    security = user
    security = server
    security = domain Samba的安全模式 share 共享目录只要用口令即可访问的系统。 user 共享目录通过用户名和口令限制的系统。 server 用户名和口令优先选择集中式数据库的系统。 domain 选择windows域系统,要求/etc/samba中有smbuser与smbpasswd数据库文件。
  • 口令设置: 如果设置security = share或security = domain,则还应指定网络的口令服务器。如果已知主域控制器和备份域控制器名称为ntserv1与ntserv2,则需使用下 列命令: password server = ntserv1 ntserv2 如果不知道主域控制器和备份域控制器名称,则可以将Samba服务器设置成搜索主域控制器: password server = 试验八字符口令与用户名的所有大小写字母组合: ;password level = 8
    ;username level = 8 将Samba配置成以标准Samba口令文件发送加密口令。可以用smbadduser添加 Microsoft Windows 用户和口令。 encrypt passwords = yes
    smb passwd file = /etc/samba/smbpasswd 用户在Microsoft Windows计算机上更改口令,下列命令同步相应的Linux口令: unix password sync = yes
    passwd program = /usr/bin/passwd %u
    passwd chat = New Password %nn Retype new password %nn passwd: all
    authentication tokens updated successfully 用PAM(可插入验证模块)保护口令,PAM将覆盖password program变量 pam password change = yes 如果设置明文口令,下列命令用PAM控制对系统的访问 obey pam restrictions = yes
  • 映射Linux 与 Windows 用户: 可以用不同的用户名匹配Linux与Windows用户。可以使用smbadduser添加用户,也可以直接修改/etc/samba/smbusers文件。 ;username map = /etc/samba/smbusers
  • 计算机定制 Samba: 可以在远程计算机上配置Samba服务器。激活下面的命令,则每台计算机会寻找特定的配置文件。 ; include = /etc/samba/smb.conf.%m
  • 性能管理: 优化网络性能。TCP_NODELAY通常使Samba性能加倍,SO_RCVBUF与SO_SNDBUF变量 是进出Samba的数据缓冲区。 socket options = TCP_NODELAY SO_RCVBUF = 8192 SO_SNDBUF = 8192
  • 网络接口: 服务器可以配置多个网络接口卡,将Samba访问限制在一个网卡上,也可以将Samba服务器设置用于特定的远程网络。 interfaces eth1 172.168.88.0/24
  • 浏览: 在Microsoft Windows网络中,浏览就是计算机显示可用的共享目录与打印机。一台计算机是浏览主计算机,其他计算机将共享信息发送到这台计算机。 如果不知道网络中的主浏览器的IP地址,则可以使用广播地址。 remote browse sync = 192.168.1.255 Microsoft 网络中的一台计算机保存浏览表,通过“选举”确定此计算机,不参与选举。 ;local master = no 参与“选举”,同时战胜除域名控制器和Microsoft Windows NT 服务器外的其他计算机。 不让别的计算机有任何机会,将Samba设置为域中的主浏览器 ;domain master = yes Samba服务器的工作量不足,设置为优选主浏览器 ;preferred master = yes
  • 登录管理: 网络中有Linux和Microsoft Windows计算机,激活下面的命令,将Samba设置为这个网络的主域控制器,控制用户名与口令数据库: ;domain logons = yes Microsoft网络可以按用户或计算机配置登录,一个登录脚本配置一种,这些脚本可以放在Samba服务器中。%m对应与每台机器,即计算机,%U对应每个用户。 ; logon script = %m.bat
    ; logon script = %U.bat 利用中央配置文件,用户登录时可以向网络中的任何Microsoft计算机提供一致的外观。可以将配置文件存放在Samba服务器的登录路径中。%L表示服务器名,%U表示用户名。 ;logon path= \%LProfiles%U
  • WINS与DNS: WINS 是Windows Internet Name Server的缩写,与DNS相似,它是一个NetBIOS名称与IP地址的数据库。如果Samba无法在/etc/hosts中找到所需的计算机名,则WINS与DNS提供了两个其他的数据库。 下列命令在本地Samba服务器中设置WINS: ;wins support = yes 也可以查找特定IP地址的不同WINS服务器(这里的地址是任意的,应换成相应的 地址)。这里Samba服务器成为WINS客户机: ;wins server = 192.168.0.22 如果Microsoft网络中还有旧式计算机,激活下面的命令,使所有计算机都能访 问WINS数据库: ;wins proxy = yes 如果计算机不再WINS数据库中,激活下面的命令,将DNS服务器设置为数据库: ;dns proxy = yes 大小写管理 Linux是大小写相关的操作系统,Microsoft是大小写无关的操作系统。通常,Samba保留所传输的文件的大小写。可强制让一切保持小写,下面命令影响长文件名和采用Microsoft 8.3文件名格式的文件名: ;preserve case = no
    ;short preserve case = no 用下列命令将所有文件名设置为默认大写: ;default case = upper 如果所有用户都采用大小写相关的文件名,可以使用下面的命令使Samba服务器大小写相关: ;case sensitive = yes
默认全局设置-全局设置这里列出了smb.conf默认的全局设置。如果使用默认参数,则不必在smb.conf中列出。 变量 默认 case sensitive no default case lower dns proxy yes domain logons no encrypt passwords no guest account nobody hosts allow 所有主机 include 无默认 interfaces 除127.0.0.1外的所有活动接口 load printers yes local master yes log file 无默认 logon script 无默认 max log size 5000KB obey pam restrictions no pam password change no passwd program /bin/passwd passwd server 无默认 passwd level 0 preferred master auto preserve case yes printcap name /etc/printcap printing 无默认 remote announce 无默认 remote browse sync 无默认 security user server string Samba %v, %v显示版本号 short preserve case yes smb password file 无默认 socket options TCP_NODELAY ssl CA certFile /usr/local/ssl/certs/trustedCAs.pem unix password sync no username level 0 username map 无默认 wins proxy no wins server 不支持 wins support no workgroup WORKGROUP 配置共享
  • [Homes]共享 [homes]
    comment = Home Directories
    browseable = no
    writeable = yes
    valid users = %S
    create mode = 0664
    directory mode = 0775
  • [tmp]共享 [tmp]
    comment = Temporary file space
    path = /tmp
    read only = no
    public = yes 共享打印机 配置了CUPS打印机,则要配置基本共享。 [printers]
    comment = All Printers
    path = /var/spool/samba
    browseable = no
    guest ok = no
    writeable = no
    printanble = yes 配置登录目录 在Microsoft网络上用Samba将Linux计算机配置成域控制器时,要配置每个用户的登录和配置文件路径。要先建立相应的目录。 下列命令根据path指定的目录在Microsoft Windows域中配置登录: [netlogon]
    comment = Network Logon Service
    path = /usr/local/samba/lib/netlogon
    guest ok = yes
    writable = no
    share modes = no 下列命令可以对登录Samba服务器的用户配置本地配置文件: [Profiles]
    path=/usr/local/samba/profiles
    broweable = no
    guest ok = yes 默认全局设置-目录与打印机 目录与打印机的默认全局设置。 变量 默认 browseable yes comment 无默认 create mode create mask = 0744 directory mode directory mask = 0755 guest ok no path 无默认 printable no public guest ok = no read only yes writable no write list 无默认 valid users 无默认
配置片段这里是几个例子。
  • [public]共享

不一定要与所有人共享目录。

[public]
comment = Public Stuff
path = /home/samba
public = yes
writeable = yes
printalbe = no
write list = @staff
  • 另一个[public]共享

下列的目录使所有用户可以读取和写入该目录下的所有文件。only guest = yes命令使任何连接这个目录的用户只有guest用户的权限。

[public]
path = /usr/somewhere/else/public
public = yes
only guest = yes
writeable = yes
printable = no
  • 两人共享

仅有两人共享,只有两个人可以访问此共享目录。

[myshare]
comment =Mary’s and Fred’s stuff
path = /usr/somewhere/shared
valid users = mary fred
public = no
writable = yes
printable = no
create mask = 0765服务器中包含 /usr/somewhere/shared目录和用户mary与fred。
  • 专有目录

专有目录只有特定的人可以访问。

[fredsdir]
comment = Fred’s Service
path = /usr/somewhere/private
valid users = fred
public = no
write able = yes
printable = no
  • 计算机的共享目录

配置特定计算机的共享目录。

[pchome]
comment = PC Directories
path = /usr/local/pc/%m
public = no
write able = yes

%m表示计算机名。

排除错误基本网络是否正常广播地址应该与Samba服务器同学的所有客户端的广播地址相同。 使用下面的命令查看广播地址:# ifconfig -aSamba 服务是否运行在Linux系统上用smbclient命令检查Samba所需的进程是否在运行并且像预期的那样进行共享。

使用下面的命令:

# smbclient -L localhost
Password: **如果显示出工作组中的所有机器,则说明Samba服务器在本地计算机上运行。如果服务器没有运行,将看到"Connection refused"的提示信息。此时需要重启Samba服务。防火墙是否打开如果Samba已经在本地计算机上运行,但是无法从局域网中的Windows或Linux客户端访问,有可能是Linux Samba服务器上的防火墙禁止对NetBIOS服务的访问。 在安全的局域网中,使用下列命令清除防火墙的规则:# iptables -F如果不是防火墙的问题,用下面的命令重新启动防火墙。# service iptables restart用户口令是否使用作为特定用户尝试访问Samba共享目录。使用如下的命令:# smbclient //localhost/tmp -U chris如果没有问题将看到Samba提示符,一个类似于DOS的提示符。