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