一些相关的介绍:

◆samba产生背景: 

在 Client 端直接进行 ServeClient 端将 Server 所提供分享的目录挂载进来,在Client 的机器上面就可以直接取用 Server 上的档案资料,在linux下有NFS。在windows下有Common Internet File System, CIFS。但是他们不能实现两大平台之间的共享,samba的产生也是基于这样的背景。

◆NetBIOS 通讯协议:

  NFS 是架构在 RPC Server 上面一样, SAMBA 这个档案系统是架构在 NetBIOS ( Network Basic Input/Output System, NetBIOS )这个通讯协议上面所开发出来的。

◆SAMBA 使用的 daemons:

SAMBA 的主要目的是让 Linux 主机加入 Windows 的网络系统当中来分享使用彼此的数据,而 Windows 使用的是 NetBIOS 这个通讯协议,所以说,SAMBA 主要是使用 NetBIOS over TCP/IP 的技术。

启用的有:1.smbd :这个 daemon 的主要功能就是用来管理 SAMBA 主机分享什么目录、档案与打印机等等的内容。

          2.nmbd :这个 daemon 则是用来管理群组啦、NetBIOS name 啦等等的解析。

====================================================================================================

安装samba:

◆rpm安装的包有:1.samba       2.samba-client          3.samba-common

 

◆SAMBA 的执行档:

   1.smbd 与 nmbd:即是那两个主要的 daemons  !每次启动 SAMBA 都会使用到的两个执行档!

   2.testparm:当我们设定完成了 smb.conf 这个主要设定档之后,而想要查看一下 SAMBA 的所有设定参数与 smb.conf 的设定项目是否正确时,就需要使用这个 testparm 来查看。

  3.smbclient:当你的 Linux 主机想要藉由『网络上的芳邻』的功能来查看别台计算机所分享出来的目录与装置时,就可以使用 smbclient 来查看啦!这个指令也可以使用在自己的 SAMBA 主机上面,用来查看是否设定成功

◆SAMBA 的相关目录:

1./usr/share/doc/samba:这个目录包含了 SAMBA 的所有相关的技术手册

�2./usr/share/doc/sam2./var/log/samba:这个目录就是 SAMBA 预设的登录文件放置目录

3./usr/share/samba/codepages:这个目录里面放置的就是各个语言的支持格式

===============================================================================================================

 

◆关于变数:

 我们有看到一个比较有趣的设定是『log file = /var/log/samba/log.%m』,怎么会有个 %m 啊?!呵呵!那个就是 SAMBA 里面的变量值啦!在 SAMBA 当中,为了便利使用者的设定,所以会有许多的变量值提供给系统管理员来使用,主要的变量有底下几个:

o %S:取代目前的设定项目值,所谓的『设定项目值』就是在 [ ] 里面的内容!举例来说:

[homes]

valid users = %S

....

o 因为 valid users 是允许的登入者,设定为 %S 表示任何可登入的使用者都能够登入的意思~今天如果 test 这个使用者登入之后,那个 [homes] 就会自动的变成了 [test] 了!这样可以明白了吗?! %S 的用意就是在替换掉目前 [ ] 里面的内容啦!

o %m:代表 Client 端的 NetBIOS 主机名称喔!例如上面案例的登录档!

o %M:代表 Client 端的 Internet 主机名称喔!就是 HOSTNAME。

o %L:代表 SAMBA 主机的 NetBIOS 主机名称。

o %H:代表使用者的家目录。

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

o %g:代表登入的使用者的群组名称。

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

o %I:代表 Client 的 IP 咯。

 

◆smb.conf的具体配置不详释,因为不同版本会不同。

◆测试 smb.conf 设定值:

  testparm 可以用来察看所有 SAMBA 的属性, # 这些属性很多都是默认值!如果没有 smb.conf 里面设定时,就是默认值

◆Client 端的测试:

  smbclient 指令可以用来(1)查询某部主机的分享内容与(2)登入某部主机进行数据的存取!更详的用法我们会在底下说明!在上面的案例下,我们使用 -L 这个参数,去察看主机名称(注意,这里是以 netbios name 为主机名称喔!)分享出来的数据有哪些。

==============================================================================================

◆如何设定每个人要使用的家目录:

[homes]

comment = Home Directories

browseable = no

writable = yes

valid users = %S

create mode = 0664

directory mode = 0775

 create mode 指的是新建立档案的权限,而 directory mode 则是新建目录的权限 至于 valid users 则是有权限进入者,这里设定为 %S 喔!所以,  每个使用者就可以进入自己的家目录了!  

 

  重点只有在于 security = user 以及 encrypt passwords 与 smb passwd file 这三行!有了这三行,  SAMBA 就需要去查询使用者要登入时的账号与密码了。同时,请注意在 [homes] 里面的设定当中,有一个 valid users  。这个 valid users 指的是: 能够登入这个目录的使用者是谁?

◆设定使用者账号与密码:

  我们需要透过 SAMBA 所提供的功能来进行 Linux 的存取,而 Linux 的存取是需要取得 Linux 系统上面的 UID 与 GID 的,因此,我们登入 SAMBA 主机时,所利用 SAMBA 取得的其实是 Linux 系统里面的相关账号!这也就是说,在 SAMBA 上面的使用者账号,必须要是 Linux 账号中的一个。

# smbpasswd -a bird

New SMB password: <==在这里输入 bird 的密码

Retype new SMB password: <==再输入一遍 bird 的密码

Added user bird.

# 请特别留意, SAMBA 的密码是放在 /etc/samba/smbpasswd 这个档案内,当然, 您可以更改这个档名 (在 smb.conf 里面改),但是, Linux 系统的账号密码 # 是放在 /etc/shadow ,这也就是说, SAMBA 服务器的密码与 Linux 底下的 账号密码并不一定要相同的。

-a : 在 smbpasswd 密码文件里面新增一个使用者

-d : 让在 smbpasswd 密码文件里面的某个账号的使用者暂时无法使用 SAMBA 当多了 -d 的参数时,在 smbpasswd 里面某个字段会多出一个 D 的参数, 代表该账号目前无法使用喔!

-e : 与 -d 参数相反,让某个账号恢复使用!

-m : 该 username 为机器代码(Machine Account),这个与 domain model 有关!

◆当然这些只是简单的设定,samba还可以在大型的网络中使用,还可以共享打印功能,这里没有说明了。详见鸟哥私房菜。