鸟哥的 Linux 私房菜 -- SAMBA 服务器

since2012/04/23

最近更新日期:2011年07月29日

大标题的图示16.5 服务器简单维护与管理

除了上述的正规作法之外,其实还有一些稍微重要的事情要跟大家分享的!


小标题的图示16.5.1 服务器相关问题克服

通常我们在设定 SAMBA 的时候,如果是以单一主机的工作组 (Workgroup) 的方式来进行 smb.conf 的设定时,几乎很容易就可以设定成功了!并没有什么很困难的步骤。不过,万一还是无法成功的设定起来, 请务必察看登录档,也就是在 /var/log/samba/ 里面的数据!在这里面的资料当中,你会发现:咦! 怎么这么多档案啊!因为我们在 smb.conf 里面设定了:

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

那个 %m 是指客户端计算机的 NetBIOS Name 的意思,所以,当有个 vbirdwinxp 的主机来登入我们的 vbirdserver 主机时,那么登入的信息就会被纪录在 /var/log/samba/log.vbirdwinxp 档案喔!而如果万一来源 IP 并没有 Netbios name 的时候,那么很可能是一些错误讯息,这些错误讯息就会被纪录到 log.smbd, log.nmbd 里面去了!所以,如果你要察看某部计算机连上你的 SAMBA 主机发生了什么问题时,特别要留意这个登录档的形式喔!

另外,如果你的 SAMBA 明明已经启动完成了,却偏偏老是无法成功,又无法查出问题时,建议先关闭 Samba 一阵子,再重新启动:

  • /etc/init.d/smb stop

在鸟哥过去的案例当中,确实有几次是因为 PID 与 NetBIOS 的问题,导致整个 SAMBA 怪怪的〜所以完整的关闭之后, 经过一阵子的短暂时间,再重新启动,应该就可以恢复正常了!

还有,万一你在进行写入的动作时,老是发现『你没有相关写入的权限!』,不要怀疑,几乎可以确定是 Permission 的问题,也就是 Linux 的权限与 SAMBA 开放的权限并不相符合,或者是 SELinux 在搞鬼!无论如何, 你必须要了解能不能写入 Linux 磁盘,看的是 PID 的权限与 Linxu 文件系统是否吻合,而那个 smb.conf 里面设定的相关权限只是在 SAMBA 运作过程当中『预计』要给使用者的权限而已,并不能取代真正的 Linux 权限喔!所以,万一真的发现该问题存在, 请登入 Linux 系统,查验一下该对应的目录的 permission 吧!^_^

另外,通常造成明明已经查到分享 (smbclient -L 的结果),却老是无法顺利挂载的情况,主要有底下几个可能的原因:

  • 虽然 smb.conf 设定正确,但是设定值『 path 』所指定的目录却忘记建立了 (最常见的呆样!);
  • 虽然 smb.conf 设定为可擦写,但是目录针对该用户的权限却是只读或者是无权限;
  • 虽然权限全部都正确,但是 SELinux 的类型却错误了!
  • 虽然全部的数据都是正确的,但是 SELinux 的规则 (getsebool -a) 却没有顺利启动。

上述都是一些常见的问题,更多问题的解决方案,请参考最正确的登录文件信息吧! ^_^


小标题的图示16.5.2 让使用者修改 samba 密码同时同步更新 /etc/shadow 密码

有个问题是,我们知道使用者可以透过 passwd 修改 /etc/shadow 内的密码,而且用户也能够自行以 smbpasswd 修改 Samba 的密码。如果用户是类似 PDC 的用户,那么这些用户理论上就很少使用 Linux 啦!那么想一想, 能否让用户在修改 Windows 密码 (就是 Samba) 时,同步更新 Linux 上面的 /etc/shadow 密码呢? 答案是可行的啦!而且动作并不困难〜因为 smb.conf 里头已经提供了相对应的参数设定值!你可以参考底下的网站数据:

鸟哥做个总结,基本上你需要的是 smb.conf 里面 [global] 的几个设定值:

[root@www ~]# vim /etc/samba/smb.conf
[global]
# 保留前面的各项设定值,并新增底下三行即可:
 unix password sync = yes <==让 Samba 与 Linux 密码同步
 passwd program = /usr/bin/passwd %u <==以 root 呼叫修改密码的指令
 pam password change = yes <==并且支持 pam 模块!
[root@www ~]# testparm
[root@www ~]# /etc/init.d/smb restart

接下来,当你以一般用户 (例如 dmtsai) 修改 samba 的密码时,就会像这样:

[dmtsai@www ~]$ smbpasswd
Old SMB password: <==得先输入旧密码,才能输入新密码
New SMB password:
Retype new SMB password:
Password changed for user dmtsai <==这就是成功的字样!
# 若出现底下的字样,应该就是你的密码输入被限制了!例如输入的密码字符少于 6 个!
machine 127.0.0.1 rejected the password change: Error was : Password restriction.
Failed to change password for dmtsai

小标题的图示16.5.3 利用 ACL 配合单一使用者时的控管

想象一个案例,如果你是学校的网管人员,有个兼任老师向你申请账号,主要是要在很多班级内取得同学的专题资料。 因为该老师是兼任的,你或许担心一不小心该教师就将同学的辛苦资料给销毁,倒不是教师们故意的, 而是很多时候...不熟嘛!这个时候如果你将该老师加入同学的群组,然后偏偏同学们所在的目录是群组可写入的话, 那么该教师就能够拥有可擦写的权限了,也就容易造成一些莫名的灾难〜

那该怎么办?其实可以透过 ACL 来管理某个目录的单一用户权力啦!所以说, 权限的管理不必透过 smb.conf 的设定,只要透过 ACL 来管理就能够达到你所需要的目的了。 关于 ACL 的说明我们在基础学习篇第三版第十四章已经提过了, 这里不再啰唆,请自行前往查阅吶! ^_^


http://linux.vbird.org is designed by VBird during 2001-2011. ksu.edu 

本网页主要以Firefox配合解析度 1024x768 作为设计依据 鸟哥自由软件整合应用研究室

AltStyle によって変換されたページ (->オリジナル) /