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 里头已经提供了相对应的参数设定值!你可以参考底下的网站数据:
- http://moto.debian.org.tw/viewtopic.php?t=7732&
- http://de.samba.org/samba/docs/using_samba/ch09.html
鸟哥做个总结,基本上你需要的是 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 的说明我们在基础学习篇第三版第十四章已经提过了, 这里不再啰唆,请自行前往查阅吶! ^_^
原文: https://wizardforcel.gitbooks.io/vbird-linux-server-3e/content/118.html