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 %n\n Retype new password %n\n 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 服务器外的其他计算机。 ;os level = 33 不让别的计算机有任何机会,将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= \\%L\Profiles\%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 -a
Samba 服务是否运行
在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的提示符。






评论
想第一时间抢沙发么?