本文讨论范围是samba使用过程中遇到的问题。
问题1:在win2000客户端,用中文做文件名,到linux的命令行下,变成乱码怎么解决?
解决:可能是命令行下不支持unicode,为了通用,强制samba使用GB2312就可以了在[global]小节加一行: unix charset = GB2312 后注:最好设置为GBK,否则某些字符会出问题,造成漫游账号不能用。
问题2:在共享目录设置中可以用comment做注解,但是中文字符在win客户端看过来会乱码,怎么解决?
解决:在[global]小节,添加一行: display charset = GB2312 就可以了,要求samba是3.0以上。
问题3:如何开放共享资源给匿名(guest)用户?
解决:在[global]小节,添加一行: map to guest = bad user 然后在相应的共享资源小节增加2行: guest account = nobody guest ok = Yes 这样所有没有账号对应和密码错误的用户连上来,访问这个共享资源时,它的对应用户就是nobody。
问题4:在某些win2000的机器上面不能修改域的账号的密码,samba的log提示 check_oem_password: incorrect password length (-312332314)。
解决: 卸载win2k的hotfix补丁:KB828741 或者下载更新当前最新版的samba3.04。
问题5: 原来使用的是发行版打包的samba,现在要下载最新版源码编译安装,怎么把原来的设置保留?
解决: 先停掉原来的samba服务:
/etc/init.d/smb stop
备份原来的域账号资料到:
/root/anheng.backup: pdbedit -e smbpasswd:/root/anheng.backup
再编译安装新的samba:
./configure --prefix=/usr/local/samba
--enable-cups --with-smbmount --with-acl-support make make install
这样新的samba就安装在:
/usr/local/samba了smb.conf
放在了:
/usr/local/samba/lib/smb.conf
把老的smb.conf复制到上面的目录:
cp /etc/samba/smb.conf /usr/local/samba/lib/smb.conf
用testparm测试设置文件是否有问题,要指定绝对路径:
/usr/local/samba/bin/testparm
如果直接执行testparm,执行的将是老版本的samba的testparm 一般不会有问题,我这里遇到的一个问题是说passwd程序没有找到,把smb.conf中行 passwd program = passwd %u 改成 passwd program = /usr/bin/passwd %u 最后,修改启动脚本,/etc/init.d/smb 将里面的nmbd和smbd前面增加绝对路径/usr/local/samba/sbin 就全部安装完成了。启动之前,恢复域账号: pdbedit -i smbpasswd:/root/anheng.backup 然后就可以启动了/etc/init.d/smb start 新安装后,由于程序和设置文件跟原来发行版的linux的目录位置不一致,如果你使用webmin进行管理,就要重新设置一下webmin里面samba模块的配置信息。