网络文件共享服务 - Samba详解

文章目录

一、 Samba 简介

1.1 概述

SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同操作系统的计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。

1.2 samba与FTP

  1. ftp 的优缺点:
  • 优点:文件传输、应用层协议、可跨平台
  • 缺点:只能实现文件传输,无法实现文件系统挂载;无法直接修改服务器端文件
  1. Samba 的特性:使用smb/cifs协议、可跨平台、可实现文件系统挂载、可实现服务器端修改文件

二、Samba安装使用

2.1 安装samba服务器

sudo apt-get install samba samba-common

2.2 配置文件(/etc/samba/)

  • smb.conf配置文件
  • smbusers别名配置文件

2.3 用户管理

tdbsam:该方式是使用一个数据库文件来验证。数据库文件叫passdb.tdb。可以通过pdbedit -a 向数据库中添
加新用户,不过要建立的Samba用户必须先是系统用户。也可以理解为我们使用pdbedit -a将系统用户转化为了samba用户。pdbedit命令的参数很多,列出几个主要的。

  • pdbedit -a username:新建Samba账户(将系统用户转化为samba用户,并设置密码)
  • pdbedit -x username:删除Samba账户
  • pdbedit -L:列出Samba用户列表,读取passdb.tdb数据库文件

2.4 常见配置参数

2.4.1 global 标签

[global]用于定义Samba服务器的总体特性,其配置项对所有共享资源生效。

  1. workgroup = WORKGROUP
    设定 Samba Server 所要加入的工作组或者域。
  2. server string = Samba Server Version %v
    设定 Samba Server的注释,可以是任何字符串,也可以不填。宏%v表示显示Samba的版本号。
  3. interfaces = lo eth0 192.168.12.2/24
    设置Samba Server监听哪些网卡,可以写网卡名,也可以写该网卡的IP地址。
  4. hosts allow = 127. 192.168.1. 192.168.10.1
    表示允许连接到Samba Server的客户端,多个参数以空格隔开。可以用一个IP表示,也可以用一个网段表示。
    hosts deny 与hosts allow 刚好相反(二选一)。
  5. log file = /var/log/samba/log.%m
    设置Samba Server日志文件的存储位置以及日志文件名称。在文件名后加个宏%m(主机名),表示对每台访问
    Samba Server的机器都单独记录一个日志文件。
  6. max log size = 50
    设置Samba Server日志文件的最大容量,单位为kB,0代表不限制
  7. security = user
    设置用户访问Samba Server的验证方式。
  8. passdb backend = tdbsam
  9. load printers = yes/no
    设置是否在启动Samba时就共享打印机

2.4.2 home标签

[homes]用于设置用户宿主目录的共享属性(特殊共享)
[homes] 共享名(特殊共享,泛指每个用户对应的家目录)

  1. comment = Home Directories 共享描述
  2. browseable = no 共享是否可被查看
  3. writable = yes 共享是否可写
  4. valid users = %S 允许访问该共享的用户

2.4.3 printers标签

[printers]用于设置打印机共享资源的属性(特殊共享,共享打印设备,现在基本不用)
[printers] 共享名

  1. comment = All Printers 共享描述
  2. path = /var/spool/samba 共享路径
  3. browseable = no 共享是否可被查看
  4. guest ok = no 是否可以匿名访问,类似于public
  5. writable = no 是否可写
  6. printable = yes 是否可以打印

2.4.4自定义标签

[自定义]自定义共享区域
[自定义] 共享名

  1. comment = the share 共享描述
  2. path = /share 共享路径
  3. public = yes 是否可以匿名访问,类似于guest ok
  4. browseable = yes 共享是否可被查看
  5. writable = yes 是否可写(同时设置目录的W)

2.5 常用的命令

2.5.1 配置文件检查

testparam:""Loaded services file OK."表示配置文件语法正确

2.5.2 服务的启动和关闭

  1. 启动服务
service smb start
  1. 停止服务
service smb stop
  1. 重启服务
service smb restart
  1. 重新加载服务
service smb reload

三、Samba客户端

3.1 安装

apt-get install smbclient

3.2 Samba客户端登陆

1.Linux 端:

#查看服务器共享
smbclient -U 用户名 -L //服务器 IP 
#登录服务器共享
smbclient -U 用户名 //服务器 ip/共享名 
  1. Window 端:
\\服务器 ip\共享名

清空登录缓存

net use * /del

四、配置参数详解

4.1 global settings

4.1.1 [global]

1. 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。

2. workgroup = WORKGROUP

说明:设定 Samba Server 所要加入的工作组或者域。

3. server string = Samba Server Version %v

说明:设定 Samba Server 的注释,可以是任何字符串,也可以不填。宏%v 表示显示 Samba 的版本号。

4. netbios name = smbserver

说明:设置 Samba Server 的 NetBIOS 名称。如果不填,则默认会使用该服务器的 DNS 名称的第一部分。netbios name 和 workgroup 名字不要设置成一样了。

5. interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24

说明:设置 Samba Server 监听哪些网卡,可以写网卡名,也可以写该网卡的 IP 地址。

6. hosts allow = 127. 192.168.1. 192.168.10.1

说明:表示允许连接到 Samba Server 的客户端,多个参数以空格隔开。可以用一个 IP 表示,也可以用一个网段表示。hosts deny 与 hosts allow 刚好相反。

例如:hosts allow=172.17.2.EXCEPT 172.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=@xq表示容许来自 XQ 网域的所有计算机连接

7. max connections = 0

说明:max connections 用来指定连接 Samba Server 的最大连接数目。如果超出连接数目,则新的连接请求将被拒绝。0 表示不限制。

8. deadtime = 0

说明:deadtime用来设置断掉一个没有打开任何文件的连接的时间。单位是分钟,0 代表 Samba Server不自动切断任何连接。

9. time server = yes/no

说明:time server 用来设置让nmdb成为windows 客户端的时间服务器。

10. log file = /var/log/samba/log.%m

说明:设置 Samba Server日志文件的存储位置以及日志文件名称。在文件名后加个宏%m(主机名),表示对每台访问 Samba Server 的机器都单独记录一个日志文件。如果 pc1、pc2 访问过 Samba Server,就会在/var/log/samba 目录下留下 log.pc1 和 log.pc2 两个日志文件。

11. max log size = 50

说明:设置 Samba Server 日志文件的最大容量,单位为 kB,0 代表不限制。

12. 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)来完成认证。

13. 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 用户的账号。

14. encrypt passwords = yes/no

说明:是否将认证密码加密。因为现在 windows 操作系统都是使用加密密码,所以一般要开启此项。
不过配置文件默认已开启。

15. 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 用户的习惯。

16.guest account = nobody

说明:用来设置 guest 用户名。

17.socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192

说明:用来设置服务器和客户端之间会话的 Socket 选项,可以优化传输速度。

18. domain master = yes/no

说明:设置 Samba 服务器是否要成为网域主浏览器,网域主浏览器可以管理跨子网域的浏览服务。

19. local master = yes/no

说明:local master 用来指定 Samba Server是否试图成为本地网域主浏览器。如果设为no,则永远不会成为本地网域主浏览器。但是即使设置为 yes,也不等于该 Samba Server 就能成为主浏览器,还需要参加选举。

20. 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 值设大些。

21. domain logons = yes/no

说明:设置 Samba Server 是否要做为本地域控制器。主域控制器和备份域控制器都需要开启此项。

22. logon . = %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

4.2 share definitions

4.2.1 [共享名]

1. comment = 任意字符串

说明:comment是对该共享的描述,可以是任意字符串。

2.path = 共享目录路径

说明:path 用来指定共享目录的路径。可以用%u、%m 这样的宏来代替路径里的unix用户和客户机的Netbios 名,用宏表示主要用于[homes]共享域。

例如:如果我们不打算用home段做为客户的共享,而是在/home/share/下为每个Linux用户以他的用户名建个目录,作为他的共享目录,这样path就可以写成:

path = /home/share/%u;

用户在连接到这共享时具体的路径会被他的用户名代替,要注意这个用户名路径一定要存在,否则,客户机在访问时会找不到网络路径。同样,如果我们不是以用户来划分目录,而是以客户机来划分目录,为网络上每台可以访问 samba的机器都各自建个以它的netbios名的路径,作为不同机器的共享资源,就可以这样写:path = /home/share/%m 。

3. browseable = yes/no

说明:browseable 用来指定该共享是否可以浏览。

4. writable = yes/no

说明:writable 用来指定该共享路径是否可写。

5. available = yes/no

说明:available 用来指定该共享资源是否可用。

6. admin users = 该共享的管理者

说明:admin users 用来指定该共享的管理员(对该共享具有完全控制权限)。在 samba 3.0中,如果用户验证方式设置成“security=share”时,此项无效。

例如:admin users=bobyuan,jane(多个用户中间用逗号隔开)。

7. valid users = 允许访问该共享的用户

说明:valid users 用来指定允许访问该共享资源的用户。
例如:valid users=bobyuan,@bob,@tech(多个用户或者组中间用逗号隔开,如果要加入一个组
就用“@+组名”表示。)

8. invalid users = 禁止访问该共享的用户

说明:invalid users 用来指定不允许访问该共享资源的用户。
例如:invalid users =root,@bob(多个用户或者组中间用逗号隔开。)

9. write list = 允许写入该共享的用户

说明:write list 用来指定可以在该共享下写入文件的用户。
例如:write list = bobyuan,@bob

10. public = yes/no

说明:public 用来指定该共享是否允许 guest 账户访问。

11. guest ok = yes/no

说明:意义同“public”。

4.2.2 [homes]

comment = Home Directories
browseable = no
writable = yes
valid users = %S
; valid users = MYDOMAIN%S

4.2.3 [printers]

comment = All Printers
path = /var/spool/samba
browseable = no
guest ok = no
writable = no
printable = yes

4.2.4 [netlogon]

comment = Network Logon Service
path = /var/lib/samba/netlogon
guest ok = yes
writable = no
share modes = no

4.2.5 [Profiles]

path = /var/lib/samba/profiles
browseable = no
guest ok = yes

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页