Linux 服务器之SAMBA

1,samba 服务的主要作用:让windows 和 unix like 实现文件与设备的共享


2,samba的主要应用

  • 分享档案与打印机服务;

  • 可以提供用户登入 SAMBA 主机时的身份认证,以提供不同身份者的个别数据;

  • 可以进行 Windows 网络上的主机名解析 (NetBIOS name)

  • 可以进行设备的共享(例如 Zip, CDROM...)


3,samba 使用的NetBIOS通信协议

   由于NetBIOS协议是无法跨路由的,所以samba主要工作在LAN中,但是通过NetBiOS over TCP/IP技术,可以跨路由使用samba服务


4,samba使用的daemon

  • nmbd :用来管理工作组、NetBIOS name 等的解析。主要利用 UDP 协议开启 port 137, 138 来负责名称解析的任务

  • smbd :用来管理 SAMBA 主机分享的目录、档案与打印机等等。 主要利用可靠的 TCP 协议来传输数据,开放的端口为 139 及 445(不一定存在) 。

    启动samba 服务时,会启动137,138两个UDP端口和139 TCP端口


5,samba服务器的配置

5.1  samba所需软件

  • samba: 这个软件主要提供了 SMB 服务器所需的各项服务程序 (smbd 及 nmbd)、 的文件档、以及其他与 SAMBA 相关的 logrotate 配置文件及开机默认选项档案等;

  • samba-client: 这个软件则提供了当 Linux 做为 SAMBA Client 端时,所需要的工具指令,例如挂载 SAMBA 文件格式的 mount.cifs

  • samba-common: 这个软件提供的则是服务器与客户端都会使用到的数据,包括 SAMBA 的主要配置文件 (smb.conf)、语法检验指令 (testparm) 等等;


5.2 samab主要配置文件

  • /etc/samba/smb.conf: 这是 Samba 的主要配置文件,基本上,咱们的 Samba 就仅有这个配置文件而已,且这个配置文件本身就是很详细的说明文件了,请用 vim 去查阅它吧!主要的设定项目分为服务器的相关设定 (global),如工作组、NetBIOS 名称与密码等级等, 以及分享的目录等相关设定,如实际目录、分享资源名称与权限等等两大部分

  • /etc/samba/lmhosts: 早期的 NetBIOS name 需额外设定,因此需要这个 lmhosts 的 NetBIOS name 对应的 IP 。 事实上它有点像是 /etc/hosts 的功能!目前 Samba 预设会去使用你的本机名称 (hostname) 作为你的 NetBIOS name,因此这个文件不设定也无所谓

  • /etc/sysconfig/samba: 提供启动 smbd, nmbd 时,你还想要加入的相关服务参数

  • /etc/samba/smbusers: 由于 Windows 与 Linux 在管理员与访客的账号名称不一致,例如: administrator (windows) 及 root(linux), 为了对应这两者之间的账号关系,可使用这个文件来设定

  • /var/lib/samba/private/{passdb.tdb,secrets.tdb}: 管理 Samba 的用户账号/密码时,会用到的数据库文件

  • /usr/share/doc/samba-<版本>: 这个目录包含了 SAMBA 的所有相关的技术手册


5.3 samba主要脚本

  • /usr/sbin/{smbd,nmbd}:服务器功能,就是最重要的权限管理 (smbd) 以及 NetBIOS name 查询 (nmbd) 两个重要的服务程序;

  • /usr/bin/{tdbdump,tdbtool}:服务器功能,在 Samba 3.0 以后的版本中,用户的账号与密码参数已经转为使用数据库了!Samba 使用的数据库名称为 TDB (Trivial DataBase)。 既然是使用数据库,当然要使用数据库的控制指令来处理。tdbdump 可以察看数据库的内容,tdbtool 则可以进入数据库操作接口直接手动修改帐密参数。不过,你得要安装 tdb-tools 这个软件才行;

  • /usr/bin/smbstatus:服务器功能,可以列出目前 Samba 的联机状况, 包括每一条 Samba 联机的 PID, 分享的资源,使用的用户来源等

  • /usr/bin/{smbpasswd,pdbedit}:服务器功能,在管理 Samba 的用户账号密码时, 早期是使用 smbpasswd 这个指令,不过因为后来使用 TDB 数据库了,因此建议使用新的 pdbedit 指令来管理用户数据;

  • /usr/bin/testparm:服务器功能,这个命令主要在检验配置文件 smb.conf 的语法正确与否,当你编辑过 smb.conf 时,请务必使用这个指令来检查一次,避免因为打字错误引起的困扰啊!


  • /sbin/mount.cifs:客户端功能,在 Linux 上面,透过 mount (mount.cifs) 来将远程主机分享的文件与目录挂载到自己的 Linux 主机上面!

  • /usr/bin/smbclient:客户端功能,查看主机所分享出来的目录与设备。这个指令也可以使用在自己的 SAMBA 主机上面,用来查看是否设定成功!

  • /usr/bin/nmblookup:客户端功能,有点类似 nslookup !重点在查出 NetBIOS name 就是了。

  • /usr/bin/smbtree:客户端功能,这玩意就有点像 Windows 系统的网上邻居显示的结果, 能够查到工作组与计算机名称的树状目录分布图!


6,smb.conf的常规设置

    [ global options ]    

  • workgroup = 工作组的名称:注意,主机群要相同

  • netbios name = 主机的 NetBIOS 名称,每部主机均不同

  • server string = 主机的简易说明


   [ logging options ]

  • log file =日志文件,文件名可能会使用变量处;

  • max log size =日志最大仅能到多少 Kbytes ,若大于该数字,则会被 rotate 掉


   [ Standalone Server options ]

  • security = share, user, domain:三选一,这三个设定值分别代表:

    • share:共享的数据不需要密码,大家均可使用 (没有安全性)

    • user :使用 SAMBA 服务器本身的密码数据库,密码数据库与下面的 passdb backend 有关

    • domain:使用外部服务器的密码,亦即 SAMBA 是客户端之意,如果设定这个项目, 你还得要提供『password server = IP』的设定值才行

  • passdb backend = 数据库格式,为了加快速度, 目前密码文件已经转为使用数据库了!默认的数据库格式是 tdbsam ,而预设的文件则放置到 /var/lib/samba/private/passwd.tdb


  [ Share definitions ]

  • [homes] :共享目录的名称

  • comment:只是目录的说明而已

  • path :主机要共享的目录

  • browseable:是否让所有的用户看到这个项目

  • writable :是否可写。需要注意一下 read only 与 writable 两个设定值,如果 writable设为 yes ,亦即可以写入,如果 read only 同时设为 yes , 那不就互相抵触了!哪个才是正确的设定?答案是:最后出现的那个设定值为主要的设定

  • create mode directory mode都与权限有关

  • writelist = 使用者, @群组,这个项目可以指定能够进入到此资源的特定使用者。 如果是 @group 的格式,则加入该群组的使用者均可取得使用的权限,设定上会比较简单!


7,smb.conf 中的可用变量

  • %m:代表 Client 端的 NetBIOS 主机名

  • %M:代表 Client 端的 Internet 主机名,就是 HOSTNAME

  • %L:代表 SAMBA 主机的 NetBIOS 主机名

  • %H代表用户的家目录

  • %U:代表目前登入的使用者的使用者名称

  • %g:代表登入的使用者的组名

  • %h:代表目前这部 SAMBA 主机的 HOSTNAME ,注意是 hostname 不是 NetBIOS name

  • %I:代表 Client 的 IP

  • %T:代表目前的日期与时间

  • %S:取代目前设置的项目值,就是在 [共享文档] 里面的内容。因为 valid users 是允许的登入者,设定为 %S 表示任何可登入的使用者都能够登入的意思~今天如果bence 这个使用者登入之后,那个 [homes] 就会自动的变成 [bence] 了, %S 的用意就是在替换掉目前 [ ] 里面的内容


8,简单的samba 服务搭建流程< security = share 模式>

   a, 查询软件是否安装


  b,更改smb.conf,配置相关参数


 c,testparm 测试语法是否正确


   d,启动nbd 和 smb 服务


   e,本机检测samba服务是否成功


   f,windows 客户端验证













你可能感兴趣的:(linux,samba,文件共享)