共计 21795 个字符,预计需要花费 55 分钟才能阅读完成。
一,Samba 服务器安装(通过 yum 来进行安装)
在源码安装 Samba 失败未果后,我果断选择了放弃,于是想着采用 yum 来进行安装,直接经历的艰辛过程就不再多陈述了。
有关 yum 的各种命令详解将会在后续的 Linux 学习中记录出来,这里只是简单的通过使用 yum 来进行 Samba 的安装。
1. 通过 yum 来进行 Samba 服务器,注意,如果通过 yum 方式来下载软件,格式都是 rpm 的格式(有关 rpm 的命令详解也会在后续的 Linux 学习中记录下来)
[root@localhost ~]# yum install samba samba-client samba-swat
在等待了一番时间后,我们可以看到如下界面(通过 yum 方式安装时,有依赖关系的包 samba-common、samba-winbind-clients、libsmbclient 将自动安装上去。):
安装包的说明:
samba-common-3.6.9-151.el6.x86_64 // 主要提供 samba 服务器的设置文件与设置文件语法检验程序 testparm
samba-client-3.6.9-151.el6.x86_64 // 客户端软件,主要提供 linux 主机作为客户端时,所需要的工具指令集
samba-swat-3.6.9-151.el6.x86_64 // 基于 https 协议的 samba 服务器 web 配置界面
samba-3.6.9-151.el6.x86_64 // 服务器端软件,主要提供 samba 服务器的守护程序,共享文档,日志的轮替,开机默认选项
经过一番下载、安装等待以后,如果出现以下界面,则表示 Samba 以及与 Samba 相关的包以及安装成功了
2. 查看安装结果
我们可以通过如下命令来查看 Samba 的安装结果
[root@localhost ~]# rpm -qa | grep samba
得到的结果如下:
3. 启动 Samba 服务器
启动 Samba 服务器可以通过 /etc/init.d/smb start/stop/restart 来启动、关闭、重启 Samba 服务,启动 SMB 服务如下所示:
例如:
[root@localhost ~]# /etc/init.d/smb start // 启动 smb 服务
[root@localhost ~]# /etc/init.d/nmb start // 启动 nmb 服务
4. 查看 Samba 服务的启动情况
我们可以通过 service smb status 命令来查看服务启动情况,如:
5. 设置 smb、nmb 服务开机自启动
通过 chkconfig –list | grep smb 命令我们可以查看 smb 服务在各个启动级别的启动情况,通过 chkconfig –level 35 smb on 命令可以使的 smb 服务在 3、5 启动级别时随着系统启动而自动启动,如:
6. 关闭防火墙
如果不关闭防火墙,Samba 服务器可能就访问不了
———————————— 分割线 ————————————
如何在 Ubuntu 14.04 中使用 Samba 共享文件
http://www.linuxidc.com/Linux/2014-07/104894.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
Samba 服务器安装和配置
http://www.linuxidc.com/Linux/2014-12/110459.htm
Win7+VMware+Fedora18 Samba 服务器的搭建图解 http://www.linuxidc.com/Linux/2013-01/78234.htm
———————————— 分割线 ————————————
二、配置 Samba 服务器
Samba 的主配置文件为 /etc/samba/smb.conf
主配置文件由两部分构成
Global Settings (55-245 行)
该设置都是与 Samba 服务整体运行环境有关的选项,它的设置项目是针对所有共享资源的。
Share Definitions(246- 尾行)
该设置针对的是共享目录个别的设置,只对当前的共享资源起作用。
全局参数:
#==================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”。
几个特殊共享:
[homes]
comment = Home Directories
browseable = no
writable = yes
valid users = %S
; valid users = MYDOMAIN\%S
[printers]
comment = All Printers
path = /var/spool/samba
browseable = no
guest ok = no
writable = no
printable = yes
[netlogon]
comment = Network Logon Service
path = /var/lib/samba/netlogon
guest ok = yes
writable = no
share modes = no
[Profiles]
path = /var/lib/samba/profiles
browseable = no
guest ok = yes
Samba 安装好后,使用 testparm 命令可以测试 smb.conf 配置是否正确。使用 testparm –v 命令可以详细的列出 smb.conf 支持的配置参数。
更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2016-06/132192p2.htm
下面我们通过两个例子来验证一下 Samba 服务器是否可以正常访问
实例一:现有一个工作组 workgroup,需要添加 samba 服务器作为文件服务器,并发布共享目录 /share,共享名为 public,此共享目录允许所有员工访问。
1. 首先我们要修改一下我们的 smb.conf 文件,(我们最好先将这个文件备份一下)
#======================= Global Settings =====================================
[global] // 该设置与 Samba 服务整体运行环境有关,它的设置项目针对所有共享资源
# ----------------------- Network Related Options -------------------------
#
# workgroup = NT-Domain-Name or Workgroup-Name, eg: MIDEARTH
#
# server string is the equivalent of the NT Description field
#
# netbios name can be used to specify a server name not tied to the hostname
workgroup = WORKGROUP // 定义工作组,也就是 windows 中的工作组概念
server string = Samba Server Version %v // 定义 Samba 服务器的简要说明
netbios name = SambaSamba // 定义 windows 中显示出来的计算机名称
# --------------------------- Logging Options -----------------------------
#
# Log File let you specify where to put logs and how to split them up.
log file = /var/log/samba/log.%m // 定义 Samba 用户的日志文件,%m 代表客户端主机名
//Samba 服务器会在指定的目录中为每个登陆主机建立不同的日志文件
# ----------------------- Standalone Server Options ------------------------
#
# Scurity can be set to user, share(deprecated) or server(deprecated)
security = share // 共享级别,用户不需要账号和密码即可访问
#============================ Share Definitions ==============================
[public] // 设置针对的是共享目录个别的设置,只对当前的共享资源起作用
comment = Public Stuff // 对共享目录的说明文件,自己可以定义说明信息
path = /share // 用来指定共享的目录,必选项
public = yes // 所有人可查看, 等效于 guest ok = yes
2. 因为上面设置了共享目录为 /share,下面就需要建立 /share 目录:
[root@linuxidc /]# mkdir share
然后在该目录下创建两个空文件:
[root@linuxidc /]# touch samba.txt
[root@linuxidc /]# touch test.txt
由于要设置匿名用户 (也就是所有的用户) 可以下载或上传共享文件,所以要给 /share 目录授权为 nobody 权限。
[root@linuxidc /]# chown -R nobody:nobody share // 将 share 目录授权为 nobody 权限,任何用户都可以对其进行访问
[root@linuxidc /]# ll /share/
总用量 0
-rw-r--r--. 1 nobody nobody 0 4 月 6 00:42 samba.txt
-rw-r--r--. 1 nobody nobody 0 4 月 6 00:42 test.txt
3. 重启 smd、nmd 服务:
4. 测试 smb.conf 是否配置成功
我们可以通过 testparm 来验证刚修改的 smb.conf 是否配置有错
[root@linuxidc /]# testparm
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[homes]"
Processing section "[printers]"
Processing section "[public]"
Processing section "[hr]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
[global]
workgroup = MYGROUP
netbios name = MYSERVER
server string = Samba Server Version %v
log file = /var/log/samba/log.%m
max log size = 50
idmap config * : backend = tdb
cups options = raw
[homes]
comment = Home Directories
read only = No
browseable = No
[printers]
comment = All Printers
path = /var/spool/samba
printable = Yes
print ok = Yes
browseable = No
[public]
comment = Public Stuff
path = /share
guest ok = Yes
5. 访问 Samba 服务器的共享文件
a. 在 Linux 下访问 Samba 服务器的共享文件
[root@linuxidc /]# smbclient //192.168.113.128/public
Enter linuxidc's password:
Anonymous login successful
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.9-151.el6]
smb: \> ls
. D 0 Sat Apr 6 00:42:53 2013
.. DR 0 Sat Apr 6 00:42:43 2013
test.txt 0 Sat Apr 6 00:42:53 2013
samba.txt 0 Sat Apr 6 00:42:51 2013
35355 blocks of size 524288. 16458 blocks available
smb: \>
【注意】如果在出现 smb: \> 时,则表示 Samba 服务器已经配置成功,我们可以通过 ls 命令来查看该分享文件夹下面的文件列表信息,如果是第一次访问可能会在输入 ls 以后出现以下错误:
NT_STATUS_ACCESS_DENIED listing \*
[root@linuxidc /]# smbclient //127.0.0.1/sambar -U sambar%sambar
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.5.10-114.el6]
smb: \> ls
NT_STATUS_ACCESS_DENIED listing \*
52265 blocks of size 1048576. 48406 blocks available
解决方法如下:关闭 SELIUNX
[root@linuxidc /]# getenforce ; // 查看当前状态
Enforcing
SELINUX 几种状态表示:
enforcing:强制模式,代表 SELinux 运行中,且已经正确的开始限制 domain/type 了;permissive:宽容模式:代表 SELinux 运行中,不过仅会有警告信息并不会实际限制 domain/type 的存取。这种模式可以运来作为 SELinux 的 debug 之用;disabled:关闭,SELinux 并没有实际运行。
所以我们通过以下命令将 SELIUNX 设置成 disabled 或者 permissive 就行了
[root@linuxidc /]# setenforce 0 ; // 关闭 0 表示 permissive
这时我们再在上面的 smb: \> 输入
ls 命令时,就可以看到我们共享文件夹里面的东西了
b. 在 windows 系统中访问 Samba 服务器的共享文件
通过【开始】——【运行】中输入 \\192.168.113.128\ 来访问 samba 服务器 192.168.113.128 上面提供的服务。
实例二:一个公司现有多个部门,因工作需要,将 hr 部的资料存放在 samba 服务器的 /hr 目录中集中管理,以便 hr 人员浏览,并且该目录只允许 hr 部员工访问。
1. 首先我们需要添加 hr 组以及 hr 组的组员
建立用户的同时加入到相应的组中的方式:useradd -g 组名 用户名
2. 在根目录下建立 /hr 文件夹
3. 将刚才建立的两个帐户添加到 samba 的账户中,通过 smbpasswd -a USER 姓名 命令
4. 修改主配置文件如下:
#======================= Global Settings =====================================
[global]
# ----------------------- Network Related Options -------------------------
#
# workgroup = NT-Domain-Name or Workgroup-Name, eg: MIDEARTH
#
# server string is the equivalent of the NT Description field
#
# netbios name can be used to specify a server name not tied to the hostname
workgroup = WORKGROUP
server string = David Samba Server Version %v
netbios name = DavidSamba
# --------------------------- Logging Options -----------------------------
#
# Log File let you specify where to put logs and how to split them up.
log file = /var/log/samba/log.%m
# ----------------------- Standalone Server Options ------------------------
#
# Scurity can be set to user, share(deprecated) or server(deprecated)
security = user // 用户级别,由提供服务的 Samba 服务器负责检查账户和密码
#============================ Share Definitions ==============================
[homes] // 设置用户宿主目录
comment = Home Directories
browseable = no
writable = yes
; valid users = %S
; valid users = MYDOMAIN\%S
[public]
comment = Public Stuff
path = /share
public = ye
[hr] //hr 组目录,只允许 hr 组成员访问
comment = HR
path = /hr
valid users = @hr // 这个表示只有 hr 组的成员才能够访问 hr 目录
5. 重新加载主配置文件 smb.conf,通过service smb reload 命令
6. 到 windows 客户端验证,访问 \\192.168.113.128,提示输入用户名和密码,在此输入 chris 验证,如下图:
7. 访问成功,可以看到公共的 public 目录,用户 chris 的宿主目录,和其有权限访问的 hr 目录
六、Linux 客户端访问操作
上面介绍了 windows 客户端访问 Samba 服务器的操作,那么在 Linux 作为客户端时,查看其它 Linux Samba 服务器共享的文件时,我们通过可以对其服务器共享的文件进行操作,这时用到 smbclient 这个工具,系统默认自带了这个命令,Smbclient 常见用法介绍如下:
1、查看 Samba 服务器的共享资料
[root@linuxidc /]# smbclient –L //Samba 服务器的 ip 地址 -U Samba 用户名
“-L” 即为 list 的含义,”-U” 是 user 的意思,如果 Samba 服务器是无密码访问的话,可以省略 ”-U
Samba 用户名 ”。
例如:samba 需要密码登陆时,查看共享方法如下:
[root@linuxidc /]# smbclient -L //192.168.113.128/public
–U chris
Samba 无密码访问时,执行如下命令:
[root@linuxidc /]# smbclient -L //192.168.113.128/public
password: 直接回车即可。
2、登陆 Samba 服务器
如果需要���Linux 客户端登陆 Samba 服务器,用法如下:
[root@linuxidc /]# smbclient //Samba 服务器的 ip 地址 -U Samba 用户名
例如下面执行的操作:
[root@linuxidc /]# smbclient //192.168.113.128/public –U chris
smb: \> ?
// 在这里输入? 即可查看在 smb 命令行可用的所有命令。
操作过程与登陆 FTP 服务器很类似,登陆 Samba 服务器后,就可以进行文件的上传与下载,如果有足够的权限,还可以进行修改文件操作。
Samba 的详细介绍:请点这里
Samba 的下载地址:请点这里
本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-06/132192.htm
一,Samba 服务器安装(通过 yum 来进行安装)
在源码安装 Samba 失败未果后,我果断选择了放弃,于是想着采用 yum 来进行安装,直接经历的艰辛过程就不再多陈述了。
有关 yum 的各种命令详解将会在后续的 Linux 学习中记录出来,这里只是简单的通过使用 yum 来进行 Samba 的安装。
1. 通过 yum 来进行 Samba 服务器,注意,如果通过 yum 方式来下载软件,格式都是 rpm 的格式(有关 rpm 的命令详解也会在后续的 Linux 学习中记录下来)
[root@localhost ~]# yum install samba samba-client samba-swat
在等待了一番时间后,我们可以看到如下界面(通过 yum 方式安装时,有依赖关系的包 samba-common、samba-winbind-clients、libsmbclient 将自动安装上去。):
安装包的说明:
samba-common-3.6.9-151.el6.x86_64 // 主要提供 samba 服务器的设置文件与设置文件语法检验程序 testparm
samba-client-3.6.9-151.el6.x86_64 // 客户端软件,主要提供 linux 主机作为客户端时,所需要的工具指令集
samba-swat-3.6.9-151.el6.x86_64 // 基于 https 协议的 samba 服务器 web 配置界面
samba-3.6.9-151.el6.x86_64 // 服务器端软件,主要提供 samba 服务器的守护程序,共享文档,日志的轮替,开机默认选项
经过一番下载、安装等待以后,如果出现以下界面,则表示 Samba 以及与 Samba 相关的包以及安装成功了
2. 查看安装结果
我们可以通过如下命令来查看 Samba 的安装结果
[root@localhost ~]# rpm -qa | grep samba
得到的结果如下:
3. 启动 Samba 服务器
启动 Samba 服务器可以通过 /etc/init.d/smb start/stop/restart 来启动、关闭、重启 Samba 服务,启动 SMB 服务如下所示:
例如:
[root@localhost ~]# /etc/init.d/smb start // 启动 smb 服务
[root@localhost ~]# /etc/init.d/nmb start // 启动 nmb 服务
4. 查看 Samba 服务的启动情况
我们可以通过 service smb status 命令来查看服务启动情况,如:
5. 设置 smb、nmb 服务开机自启动
通过 chkconfig –list | grep smb 命令我们可以查看 smb 服务在各个启动级别的启动情况,通过 chkconfig –level 35 smb on 命令可以使的 smb 服务在 3、5 启动级别时随着系统启动而自动启动,如:
6. 关闭防火墙
如果不关闭防火墙,Samba 服务器可能就访问不了
———————————— 分割线 ————————————
如何在 Ubuntu 14.04 中使用 Samba 共享文件
http://www.linuxidc.com/Linux/2014-07/104894.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
Samba 服务器安装和配置
http://www.linuxidc.com/Linux/2014-12/110459.htm
Win7+VMware+Fedora18 Samba 服务器的搭建图解 http://www.linuxidc.com/Linux/2013-01/78234.htm
———————————— 分割线 ————————————
二、配置 Samba 服务器
Samba 的主配置文件为 /etc/samba/smb.conf
主配置文件由两部分构成
Global Settings (55-245 行)
该设置都是与 Samba 服务整体运行环境有关的选项,它的设置项目是针对所有共享资源的。
Share Definitions(246- 尾行)
该设置针对的是共享目录个别的设置,只对当前的共享资源起作用。
全局参数:
#==================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”。
几个特殊共享:
[homes]
comment = Home Directories
browseable = no
writable = yes
valid users = %S
; valid users = MYDOMAIN\%S
[printers]
comment = All Printers
path = /var/spool/samba
browseable = no
guest ok = no
writable = no
printable = yes
[netlogon]
comment = Network Logon Service
path = /var/lib/samba/netlogon
guest ok = yes
writable = no
share modes = no
[Profiles]
path = /var/lib/samba/profiles
browseable = no
guest ok = yes
Samba 安装好后,使用 testparm 命令可以测试 smb.conf 配置是否正确。使用 testparm –v 命令可以详细的列出 smb.conf 支持的配置参数。
更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2016-06/132192p2.htm
![post-qrcode](https://www.xgss.net/wp-content/uploads/2023/07/二维码-微信公众号256x256.jpg)