共计 12367 个字符,预计需要花费 31 分钟才能阅读完成。
一、Samba 简介
Samba 是一个能让 Linux 系统应用 Microsoft 网络通讯协议的软件,而 SMB 是 Server Message Block 的缩写,即为服务器消息块,SMB 主要是作为 Microsoft 的网络通讯协议,后来 Samba 将 SMB 通信协议应用到了 Linux 系统上,就形成了现在的 Samba 软件。后来微 软又把 SMB 改名为 CIFS(Common Internet File System),即公共 Internet 文件系统,并且加入了许多新的功能,这样一来,使得 Samba 具有了更强大的功能。
Samba 最大的功能就是可以用于 Linux 与 windows 系统直接的文件共享和打印共享,Samba 既可以用于 windows 与 Linux 之间的文件共享,也可以用于 Linux 与 Linux 之间的资源共享,由于 NFS(网络文件系统)可以很好的完成 Linux 与 Linux 之间的数据共享,因 而 Samba 较多的用在了 Linux 与 windows 之间的数据共享上面。
SMB 是基于客户机 / 服务器型的协议,因而一台 Samba 服务器既可以充当文件共享服务器,也可以充当一个 Samba 的客户端,例如,一台在 Linux 下已经架设好的 Samba 服务器,windows 客户端就可以通过 SMB 协议共享 Samba 服务器上的资源文件,同时,Samba 服务器也可以访问网络中 其它 windows 系统或者 Linux 系统共享出来的文件。
Samba 在 windows 下使用的是 NetBIOS 协议,如果你要使用 Linux 下共享出来的文件,请确认你的 windows 系统下是否安装了 NetBIOS 协议。
组成 Samba 运行的有两个服务,一个是 SMB,另一个是 NMB;SMB 是 Samba 的核心启动服务,主要负责建立 Linux Samba 服务器与 Samba 客户机之间的对话,验证用户身份并提供对文件和打印系统的访问,只有 SMB 服务启动,才能实现文件的共享,监听 139 TCP 端
[root@bind ~]# rpm -qa |grep samba
samba-common-3.6.9-151.el6.x86_64
samba-swat-3.6.9-151.el6.x86_64
samba-winbind-clients-3.6.9-151.el6.x86_64
samba-winbind-3.6.9-151.el6.x86_64
samba-client-3.6.9-151.el6.x86_64
samba-3.6.9-151.el6.x86_64 口;而 NMB 服务是负责解析用的,类似与 DNS 实现的功能,NMB 可以把 Linux 系统共享的工作组名称与其 IP 对应起来,如果 NMB 服务没有启 动,就只能通过 IP 来访问共享文件,监听 137 和 138 UDP 端口。
二、安装
笔者的安装环境是在 VMware 虚拟机中配置的,网上同真实机在同一个网段;CentOS6.4 x86 下; 关闭 Selinux
1、安装 samba 相关软件包
#yum install samba -y #确保能上外网,如果不能连接外网为了测试可以挂载光盘安装对应软件
2、检查安装的软件包
[root@bind ~]# rpm -qa |grep samba
samba-common-3.6.9-151.el6.x86_64 // 主要提供 samba 服务器的设置文件与设置文件语法检验程序 testparm
samba-swat-3.6.9-151.el6.x86_64
samba-winbind-clients-3.6.9-151.el6.x86_64
samba-winbind-3.6.9-151.el6.x86_64
samba-client-3.6.9-151.el6.x86_64 // 客户端软件,主要提供 linux 主机作为客户端时,所需要的工具指令集
samba-3.6.9-151.el6.x86_64 // 服务器端软件,主要提供 samba 服务器的守护程序,共享文档,日志的轮替,开机默认选项
Samba 的详细介绍:请点这里
Samba 的下载地址:请点这里
相关阅读:
Samba 文件共享 - 实现异构通信 http://www.linuxidc.com/Linux/2013-03/81152.htm
VMWare 虚拟机 Ubuntu 双网卡 访问 samba 速度 翻倍 http://www.linuxidc.com/Linux/2013-06/85445.htm
Samba 文件共享服务器加入 Windows Server 2003 域 http://www.linuxidc.com/Linux/2013-06/86391.htm
Samba 安装配置 http://www.linuxidc.com/Linux/2013-06/86101.htm
CentOS 6.2 下 Samba 服务的配置 http://www.linuxidc.com/Linux/2013-01/78390.htm
Win7+VMware+Fedora18 Samba 服务器的搭建图解 http://www.linuxidc.com/Linux/2013-01/78234.htm
三、配置 samba 服务器
1、建立匿名共享的目录
#mkdir /home/samba
#chmod nobody.nobody /home/samba -R
2、修改 smb.con 主配置文件
先备份一下 smb.conf
#cd /etc/samba
#cp smb.conf smb.conf.bak
#vi /etc/samba/smb.conf
首先是 global 全局设置的修改
[global] // 该设置与 Samba 服务整体运行环境有关,它的设置项目针对所有共享资源
workgroup = Workgroup // 定义工作组,也就是 windows 中的工作组概念
server string = Samba Server Version %v // 定义 Samba 服务器的简要说明
netbios name = SambaSamba // 定义 windows 中显示出来的计算机名称
security = share // 开启匿名共享必须确保该项为 share
[public]
comment = Shares for Everyone // 连接提示,随便填写
path = /home/samba // 开放匿名共享的路径
valid users = nobody //(任何人可浏览)
write list = nobody // 匿名用户可读
guest ok = yes // 开放匿名共享
public = yes
writable = yes // 匿名用户可写
browseable = yes
printable = no
create mask = 0777
directory mask = 0777 // 创建和文件夹的默认权限
// 当然如果有需要还可以设置禁止访问该共享的用户列表
invalid users = ……
保存退出
设置完保存后可以用 testparm 命令测试 smb.conf 配置是否正确。
开启 samba 服务
service smb start
service nmb start
如果中间 samba 服务有所修改则需要重启生效
service smb restart
service nmb restart
3、设置 samba 服务开机启动
chkconfig –level 35 smb on
chkconfig –level 35 nmb on
四、相关安全配置及测试
1| 关闭 selinux
如果你对 selinux 配置很熟悉就配置,否则关闭
#vi /etc/selinux/config
修改如下:
SELINUX=permissive
setenforce 0
2、配置 iptables 防火墙
一台服务器不能连防火墙也不开的吧?
#vi /etc/sysconfig/iptables
添加如下内容:
-A INPUT -p udp –destination-port 137 -j ACCEPT
-A INPUT -p udp –destination-port 138 -j ACCEPT
-A INPUT -m state –state NEW -m tcp -p tcp –dport 139 -j ACCEPT
#service iptables restart
3、测试
访问 samba 服务器
在 CentOS 系统下可以通过 smbclient 去访问
smbclient -L //192.168.5.254
Enter root’s password:
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.6.9-151.el6]
Sharename Type Comment
——— —- ——-
public Disk Shares for Everyone
IPC$ IPC IPC Service (Samba Server Version 3.6.9-151.el6)
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.6.9-151.el6]
Server Comment
——— ——-
EFLADJDLJ1QHIAO
IBELIEVE
SAMBA SHARES Samba Server Version 3.6.9-151.el6
SJ0052
SYSADMIN
WIN-AUVF3KPH158
Workgroup Master
——— ——-
WORKGROUP SAMBA SHARES
在 windows 系统下访问
在我的电脑地址栏里或者在开始 -> 运行里填上 \\192.168.5.254
如下图
一、Samba 简介
Samba 是一个能让 Linux 系统应用 Microsoft 网络通讯协议的软件,而 SMB 是 Server Message Block 的缩写,即为服务器消息块,SMB 主要是作为 Microsoft 的网络通讯协议,后来 Samba 将 SMB 通信协议应用到了 Linux 系统上,就形成了现在的 Samba 软件。后来微 软又把 SMB 改名为 CIFS(Common Internet File System),即公共 Internet 文件系统,并且加入了许多新的功能,这样一来,使得 Samba 具有了更强大的功能。
Samba 最大的功能就是可以用于 Linux 与 windows 系统直接的文件共享和打印共享,Samba 既可以用于 windows 与 Linux 之间的文件共享,也可以用于 Linux 与 Linux 之间的资源共享,由于 NFS(网络文件系统)可以很好的完成 Linux 与 Linux 之间的数据共享,因 而 Samba 较多的用在了 Linux 与 windows 之间的数据共享上面。
SMB 是基于客户机 / 服务器型的协议,因而一台 Samba 服务器既可以充当文件共享服务器,也可以充当一个 Samba 的客户端,例如,一台在 Linux 下已经架设好的 Samba 服务器,windows 客户端就可以通过 SMB 协议共享 Samba 服务器上的资源文件,同时,Samba 服务器也可以访问网络中 其它 windows 系统或者 Linux 系统共享出来的文件。
Samba 在 windows 下使用的是 NetBIOS 协议,如果你要使用 Linux 下共享出来的文件,请确认你的 windows 系统下是否安装了 NetBIOS 协议。
组成 Samba 运行的有两个服务,一个是 SMB,另一个是 NMB;SMB 是 Samba 的核心启动服务,主要负责建立 Linux Samba 服务器与 Samba 客户机之间的对话,验证用户身份并提供对文件和打印系统的访问,只有 SMB 服务启动,才能实现文件的共享,监听 139 TCP 端
[root@bind ~]# rpm -qa |grep samba
samba-common-3.6.9-151.el6.x86_64
samba-swat-3.6.9-151.el6.x86_64
samba-winbind-clients-3.6.9-151.el6.x86_64
samba-winbind-3.6.9-151.el6.x86_64
samba-client-3.6.9-151.el6.x86_64
samba-3.6.9-151.el6.x86_64 口;而 NMB 服务是负责解析用的,类似与 DNS 实现的功能,NMB 可以把 Linux 系统共享的工作组名称与其 IP 对应起来,如果 NMB 服务没有启 动,就只能通过 IP 来访问共享文件,监听 137 和 138 UDP 端口。
二、安装
笔者的安装环境是在 VMware 虚拟机中配置的,网上同真实机在同一个网段;CentOS6.4 x86 下; 关闭 Selinux
1、安装 samba 相关软件包
#yum install samba -y #确保能上外网,如果不能连接外网为了测试可以挂载光盘安装对应软件
2、检查安装的软件包
[root@bind ~]# rpm -qa |grep samba
samba-common-3.6.9-151.el6.x86_64 // 主要提供 samba 服务器的设置文件与设置文件语法检验程序 testparm
samba-swat-3.6.9-151.el6.x86_64
samba-winbind-clients-3.6.9-151.el6.x86_64
samba-winbind-3.6.9-151.el6.x86_64
samba-client-3.6.9-151.el6.x86_64 // 客户端软件,主要提供 linux 主机作为客户端时,所需要的工具指令集
samba-3.6.9-151.el6.x86_64 // 服务器端软件,主要提供 samba 服务器的守护程序,共享文档,日志的轮替,开机默认选项
Samba 的详细介绍:请点这里
Samba 的下载地址:请点这里
相关阅读:
Samba 文件共享 - 实现异构通信 http://www.linuxidc.com/Linux/2013-03/81152.htm
VMWare 虚拟机 Ubuntu 双网卡 访问 samba 速度 翻倍 http://www.linuxidc.com/Linux/2013-06/85445.htm
Samba 文件共享服务器加入 Windows Server 2003 域 http://www.linuxidc.com/Linux/2013-06/86391.htm
Samba 安装配置 http://www.linuxidc.com/Linux/2013-06/86101.htm
CentOS 6.2 下 Samba 服务的配置 http://www.linuxidc.com/Linux/2013-01/78390.htm
Win7+VMware+Fedora18 Samba 服务器的搭建图解 http://www.linuxidc.com/Linux/2013-01/78234.htm
五、Samb 的其他参数说明
主配置文件由两部分构成
Global Settings
该设置都是与 Samba 服务整体运行环境有关的选项,它的设置项目是针对所有共享资源的。
Share Definitions
该设置针对的是共享目录个别的设置,只对当前的共享资源起作用。
全局参数:
==================Global Settings ===================
[global]
config file = /usr/local/samba/lib/smb.conf.%m
说明:config file 可以让你使用另一个配置文件来覆盖缺省的配置文件。如果文件不存在,则该项无效。这个参数很有用,可以使得 samba 配置更灵活,可以让一台 samba 服务器模拟多台不同配置的服务器。比如,你想让 PC1(主机名)这台电脑在访问 Samba Server 时使用它自己的配置文件,那么先在 /etc/samba/host/ 下为 PC1 配置一个名为 smb.conf.pc1 的文件,然后在 smb.conf 中加入:config file = /etc/samba/host/smb.conf.%m。这样当 PC1 请求连接 Samba Server 时,smb.conf.%m 就被替换成 smb.conf.pc1。这样,对于 PC1 来说,它所使用的 Samba 服务就是由 smb.conf.pc1 定义的,而其他机器访问 Samba Server 则还是应用 smb.conf。
workgroup = WORKGROUP
说明:设定 Samba Server 所要加入的工作组或者域。
server string = Samba Server Version %v
说明:设定 Samba Server 的注释,可以是任何字符串,也可以不填。宏 %v 表示显示 Samba 的版本号。
netbios name = smbserver
说明:设置 Samba Server 的 NetBIOS 名称。如果不填,则默认会使用该服务器的 DNS 名称的第一部分。netbios name 和 workgroup 名字不要设置成一样了。
interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24
说明:设置 Samba Server 监听哪些网卡,可以写网卡名,也可以写该网卡的 IP 地址。
hosts allow = 127. 192.168.1. 192.168.10.1
说明:表示允许连接到 Samba Server 的客户端,多个参数以空格隔开。可以用一个 IP 表示,也可以用一个网段表示。hosts deny 与 hosts allow 刚好相反。
例如:hosts allow=172.17.2.EXCEPT172.17.2.50
表示容许来自 172.17.2.* 的主机连接,但排除 172.17.2.50
hosts allow=172.17.2.0/255.255.0.0
表示容许来自 172.17.2.0/255.255.0.0 子网中的所有主机连接
hosts allow=M1,M2
表示容许来自 M1 和 M2 两台计算机连接
hosts allow=@pega
表示容许来自 pega 网域的所有计算机连接
max connections = 0
说明:max connections 用来指定连接 Samba Server 的最大连接数目。如果超出连接数目,则新的连接请求将被拒绝。0 表示不限制。
deadtime = 0
说明:deadtime 用来设置断掉一个没有打开任何文件的连接的时间。单位是分钟,0 代表 Samba Server 不自动切断任何连接。
time server = yes/no
说明:time server 用来设置让 nmdb 成为 windows 客户端的时间服务器。
log file = /var/log/samba/log.%m
说明:设置 Samba Server 日志文件的存储位置以及日志文件名称。在文件名后加个宏 %m(主机名),表示对每台访问 Samba Server 的机器都单独记录一个日志文件。如果 pc1、pc2 访问过 Samba Server,就会在 /var/log/samba 目录下留下 log.pc1 和 log.pc2 两个日志文件。
max log size = 50
说明:设置 Samba Server 日志文件的最大容量,单位为 kB,0 代表不限制。
security = user
说明:设置用户访问 Samba Server 的验证方式,一共有四种验证方式。
1. share:用户访问 Samba Server 不需要提供用户名和口令, 安全性能较低。
2. user:Samba Server 共享目录只能被授权的用户访问, 由 Samba Server 负责检查账号和密码的正确性。账号和密码要在本 Samba Server 中建立。
3. server:依靠其他 Windows NT/2000 或 Samba Server 来验证用户的账号和密码, 是一种代理验证。此种安全模式下, 系统管理员可以把所有的 Windows 用户和口令集中到一个 NT 系统上, 使用 Windows NT 进行 Samba 认证, 远程服务器可以自动认证全部用户和口令, 如果认证失败,Samba 将使用用户级安全模式作为替代的方式。
4. domain:域安全级别, 使用主域控制器 (PDC) 来完成认证。
passdb backend = tdbsam
说明:passdb backend 就是用户后台的意思。目前有三种后台:smbpasswd、tdbsam 和 ldapsam。sam 应该是 security account manager(安全账户管理)的简写。
1.smbpasswd:该方式是使用 smb 自己的工具 smbpasswd 来给系统用户(真实用户或者虚拟用户)设置一个 Samba 密码,客户端就用这个密码来访问 Samba 的资源。smbpasswd 文件默认在 /etc/samba 目录下,不过有时候要手工建立该文件。
2.tdbsam:该方式则是使用一个数据库文件来建立用户数据库。数据库文件叫 passdb.tdb,默认在 /etc/samba 目录下。passdb.tdb 用户数据库 可以使用 smbpasswd –a 来建立 Samba 用户,不过要建立的 Samba 用户必须先是系统用户。我们也可以使用 pdbedit 命令来建立 Samba 账户。pdbedit 命令的 参数很多,我们列出几个主要的。
pdbedit –a username:新建 Samba 账户。
pdbedit –x username:删除 Samba 账户。
pdbedit –L:列出 Samba 用户列表,读取 passdb.tdb 数据库文件。
pdbedit –Lv:列出 Samba 用户列表的详细信息。
pdbedit –c“[D]”–u username:暂停该 Samba 用户的账号。
pdbedit –c“[]”–u username:恢复该 Samba 用户的账号。
3.ldapsam:该方式则是基于 LDAP 的账户管理方式来验证用户。首先要建立 LDAP 服务,然后设置“passdb backend = ldapsam:ldap://LDAP Server”
encrypt passwords = yes/no
说明:是否将认证密码加密。因为现在 windows 操作系统都是使用加密密码,所以一般要开启此项。不过配置文件默认已开启。
smb passwd file = /etc/samba/smbpasswd
说明:用来定义 samba 用户的密码文件。smbpasswd 文件如果没有那就要手工新建。
username map = /etc/samba/smbusers
说明:用来定义用户名映射,比如可以将 root 换成 administrator、admin 等。不过要事先在 smbusers 文件中定义好。比如:root = administrator admin,这样就可以用 administrator 或 admin 这两个用户来代替 root 登陆 Samba Server,更贴近 windows 用户的习惯。
guest account = nobody
说明:用来设置 guest 用户名。
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
说明:用来设置服务器和客户端之间会话的 Socket 选项,可以优化传输速度。
domain master = yes/no
说明:设置 Samba 服务器是否要成为网域主浏览器,网域主浏览器可以管理跨子网域的浏览服务。
local master = yes/no
说明:local master 用来指定 Samba Server 是否试图成为本地网域主浏览器。如果设为 no,则永远不会成为本地网域主浏览器。但是即使设置为 yes,也不等于该 Samba Server 就能成为主浏览器,还需要参加选举。
preferred master = yes/no
说明:设置 Samba Server 一开机就强迫进行主浏览器选举,可以提高 Samba Server 成为本地网域主浏览器的机会。如果该参数指定为 yes 时,最好把 domain master 也指定为 yes。使用该参数时要注意:如果在本 Samba Server 所在的子网有其他的机器(不论是 windows NT 还是其他 Samba Server)也指定为首要主浏览器时,那么这些机器将会因为争夺主浏览器而在网络上大发广播,影响网络性能。
如果同一个区域内有多台 Samba Server,将上面三个参数设定在一台即可。
os level = 200
说明:设置 samba 服务器的 os level。该参数决定 Samba Server 是否有机会成为本地网域的主浏览器。os level 从 0 到 255,winNT 的 os level 是 32,win95/98 的 os level 是 1。Windows 2000 的 os level 是 64。如果设置为 0,则意味着 Samba Server 将失去浏览选择。如果想让 Samba Server 成为 PDC,那么将它的 os level 值设大些。
domain logons = yes/no
说明:设置 Samba Server 是否要做为本地域控制器。主域控制器和备份域控制器都需要开启此项。
logon script = %u.bat
说明:当使用者用 windows 客户端登陆,那么 Samba 将提供一个登陆档。如果设置成 %u.bat,那么就要为每个用户提供一个登陆档。如果人比较多,那就比较麻烦。可以设置成一个具体的文件名,比如 start.bat,那么用户登陆后都会去执行 start.bat,而不用为每个用户设定一个登陆档了。这个文件要放置在 [netlogon] 的 path 设置的目录路径下。
wins support = yes/no
说明:设置 samba 服务器是否提供 wins 服务。
wins server = wins 服务器 IP 地址
说明:设置 Samba Server 是否使用别的 wins 服务器提供 wins 服务。
wins proxy = yes/no
说明:设置 Samba Server 是否开启 wins 代理服务。
dns proxy = yes/no
说明:设置 Samba Server 是否开启 dns 代理服务。
load printers = yes/no
说明:设置是否在启动 Samba 时就共享打印机。
printcap name = cups
说明:设置共享打印机的配置文件。
printing = cups
说明:设置 Samba 共享打印机的类型。现在支持的打印系统有:bsd, sysv, plp, lprng, aix, hpux, qnx
共享参数:
#================== Share Definitions ==================
[共享名]
comment = 任意字符串
说明:comment 是对该共享的描述,可以是任意字符串。
path = 共享目录路径
说 明:path 用来指定共享目录的路径。可以用 %u、%m 这样的宏来代替路径里的 unix 用户和客户机的 Netbios 名,用宏表示主要用于 [homes] 共享域。例如:如果我们不打算用 home 段做为客户的共享,而是在 /home/share/ 下为每个 Linux 用户以他的用户名建个目录,作为他的共享目 录,这样 path 就可以写成:path = /home/share/%u;。用户在连接到这共享时具体的路径会被他的用户名代替,要注意这个用户名路径一定要存在,否则,客户机在访问时会找不到网络路径。同样,如果我们不是以用 户来划分目录,而是以客户机来划分目录,为网络上每台可以访问 samba 的机器都各自建个以它的 netbios 名的路径,作为不同机器的共享资源,就可以 这样写:path = /home/share/%m。
browseable = yes/no
说明:browseable 用来指定该共享是否可以浏览。
writable = yes/no
说明:writable 用来指定该共享路径是否可写。
available = yes/no
说明:available 用来指定该共享资源是否可用。
admin users = 该共享的管理者
说明:admin users 用来指定该共享的管理员(对该共享具有完全控制权限)。在 samba 3.0 中,如果用户验证方式设置成“security=share”时,此项无效。
例如:admin users =david,sandy(多个用户中间用逗号隔开)。
valid users = 允许访问该共享的用户
说明:valid users���来指定允许访问该共享资源的用户。
例如:valid users = david,@dave,@tech(多个用户或者组中间用逗号隔开,如果要加入一个组就用“@组名”表示。)
invalid users = 禁止访问该共享的用户
说明:invalid users 用来指定不允许访问该共享资源的用户。
例如:invalid users = root,@bob(多个用户或者组中间用逗号隔开。)
write list = 允许写入该共享的用户
说明:write list 用来指定可以在该共享下写入文件的用户。
例如:write list = david,@dave
public = yes/no
说明:public 用来指定该共享是否允许 guest 账户访问。
guest ok = yes/no
说明:意义同“public”。
Samba 安装好后,使用 testparm 命令可以测试 smb.conf 配置是否正确。使用 testparm –v 命令可以详细的列出 smb.conf 支持的配置参数。
说明已经安装配置好了匿名的 samba 共享服务器了,这里公是抛砖引玉了更多的功能你们自己去发掘吧~欢迎交流; 本文的匿名共享是笔者参考网上及官方资料实践写成; 其他的参考摘自网上~
更多 CentOS 相关信息见CentOS 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=14