ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
## 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://moto.debian.org.tw/viewtopic.php?t=7732&) * [http://de.samba.org/samba/docs/using_samba/ch09.html](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 的说明我们在[基础学习篇第三版第十四章](http://linux.vbird.org/linux_basic/0410accountmanager.php#acl_talk)已经提过了, 这里不再啰唆,请自行前往查阅吶! ^_^ * * *