现在的位置: 首页Linux, 系统管理>正文
cat_ico10 category cat_ico1 category
Samba 3.0.10 的 MySQL 用户表验证(ZT)
发表于206 天前 Linux, 系统管理 评论关闭 ⁄ 被围观 451 views+

http://forum.ubuntu.org.cn/viewtopic.php?f=54&t=193343

http://pdbsql.sourceforge.net/
As of Samba release 3.0.23, support for MySQL and PostGreSQL passdb backends has been removed from the Samba tree.

具体的 MySQL 文档在 http://pdbsql.sourceforge.net/pdb_mysql.html

http://www.litrin.net/2005/12/05/samba-3010-%E7%9A%84-mysql-%E7%94%A8%E6%88%B7%E8%A1%A8%E9%AA%8C%E8%AF%81/

Samba 让 Linux 的灵活性表露无遗。在公司的局域网内部,我十分喜欢 Samba 的自由自在。

  安装和编译的步骤并不复杂,但是需要了解为了支持 MySQL 认证,编译时需要的参数,以及配置时采用正确的参数。

编译命令:

$ ./configure –with-expsam=mysql –with-mysql-prefix=/opt/mysql

如果以上命令成功的话,然后就是 make ; make install 了。
然后拷贝一个 examples 下的 smb.conf 到 /usr/local/samba/lib 。
用 /usr/local/samba/sbin/smbd -D 即可启动。
用 smbstatus 命令可以查看 Samba 服务器的状态。

下面配置 MySQL 的支持。 和 MYSQL 相关的配置有以下几行:

[global]

# passdb backend = plugin:/usr/local/samba/lib/pdb/mysql.so:mysql
passdb backend = mysql:mysql
mysql:mysql host = localhost #主机名
mysql:mysql port = nnnn #端口号,默认3306
mysql:mysql user = samba #mysql用户
mysql:mysql password = password #mysql密码
mysql:mysql database = smb_user #数据库名
mysql:mysql table = user #数据表,似乎没有用处

……
  建立 smb_user.user 表的脚本可以从 examples/pdb/mysql 目录下的 mysql.dump 导入,如果使用的版本是samba3,还需要单独手工增加“logon_hours"键值,这个目录下的 smb.conf 是一个最简单的配置,可以供参考。但是这个文件有几个地方是错的。

  最主要的就是上面注释掉的那行,我发现根据这个 sample 不能使用,后来修改为简单的
mysql:mysql 后就能使用了。

  具体的调试还是必须看相关的日志文件,如果是数据库连接错误,相关的日志文件会报告数据库不能连接的错误。

  这样,一个基于 MySQL 用户的 Samba 系统建立了起来。
       如果安装了swat,可以运行一下,重新格式化一下配置文件,这样看起来更方便一些。

   但是,目前没有现成的完全基于 PHP 的针对 Samba 口令的修改程序。因为 user 表中的 lm_pw 和 nt_pw 分别代表口令的散列,其算法相对比较复杂, 远远不是 PHP 和 MySQL 提供的 encrypt() md5() 之类的函数能解决的。

  如果有读者已经发现或者已经研发出纯 PHP 的修改 lm_pw 和 nt_[pw 字段的程序,欢迎一起交流。

报歉!评论已关闭.