因为没有定制文件devel.c和devel.h,所以只好使用fb2k-v2。但编译之后认证出了问题。在newsmth上询问,只说passwds相关的数据在struct.h中定义,与devel和fb2k-v2无关。
查看这二个定制文件,发现后者有CNV_PASS的常量,这会导致passwd结构的改变。使得passwds的每一个记录多出16个字节。
后来注释了fb2k-v2的相关代码,但编译后的程序还是不认原来的passwds。也许是操作不当,即没有清空共享内存造成的。因为修改passwds文件之后也没有一下就成功,而是重启系统之后才行的。
用C编程,对我来说实在有些太麻烦,所以只好用PHP写了一个修改passwds的程序,通过对照前后二个passwds中的数据,发现新的比旧要多出16年字节,于是就将这16个字节加入,重启之后,BBS系统可以认证原来的用户。但所有的用户都变成为新手,要填写注册单,但权限等不变。可见关于新手标记这个字节没有弄好。
PHP的程序:
<?php
/*用于修改kbs的.PASSWDS文件。2006.12.24
在原来的文件中每一个用户内加入16个字节。
*/
$maxfiles=10000;
$fp=fopen("passwd.new",'w+');
//$filename="passwd";
$fp1=fopen("passwd",'rb');
for ($i=0; $i<=20000; $i++) {
$data=fgets($fp1,44);
fputs($fp, $data);
fputs($fp, "\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0");
$data=fgets($fp1,160);
fputs($fp, $data);
}
fclose($fp);
fclose($fp1);
?>
--
FROM 61.170.195.*