1

我必须处理旧的 CMDBUild,但不幸的是,没有人拥有超级用户密码。所以我想直接在postgres数据库中更改它。

我管理吨连接到 psql 中的 cmdbuild 数据库。我有一个表调用用户,但select * from User;只给了我:

current_user 
--------------
 postgres
(1 row)

SELECT column_name FROM information_schema.columns WHERE table_name ='User';给了我更多的专栏:

 column_name 
-------------
 Id
 IdClass
 Code
 Description
 Status
 User
 BeginDate
 Notes
 Username
 Password
 Email
(11 lignes)

所以第一个选择似乎是错误的,其他 10 列在哪里?此外,我在 CMDBuild 技术手册中找到了这些行,我尝试过但没有结果。

execute the following SQL commands to create the "Superuser" user (in the example with
username admin and password admin):

INSERT INTO "User" ("Status", "Username", "IdClass", "Password", "Description") VALUES ('A', 'admin',
'"User"', 'DQdKW32Mlms=', 'Administrator');
INSERT INTO "Role" ("Status", "IdClass", "Administrator", "Description") VALUES ('A', '"Role"', true,
'SuperUser');
INSERT INTO "Map_UserRole" ("Status", "IdClass2", "IdClass1", "IdObj2", "IdObj1", "IdDomain") VALUES ('A

有人可以帮我恢复或删除 CMDBuild 中的超级用户密码吗?提前致谢。

4

1 回答 1

1

听起来这个“CMDBuild”工具使用自己的用户表,而不是内置的 PostgreSQL 用户和角色。

在您执行任何其他操作之前,请对您的数据库进行完整备份

如果你想恢复现有的密码,你需要查明它是加盐和散列还是以明文形式存储。如果它以明文形式存储,请愤怒地斥责 CMDBuild 开发人员,直到他们承诺在下一个版本中修复它。

如果是明文,那么:

select "Username", "Password" from "User" where "Username" = 'admin';

如果使用生成的密码登录不起作用,那么它可能是经过哈希处理的,在这种情况下,您需要弄清楚使用的是什么算法。按照上面的示例语句,它可能只是 unix crypt。您可以将提取的密码放入文本文件并在其上运行 Jack the Ripper 或类似的破解工具。

如果你没有成功破解它,那么,如果你已经确定了它是如何散列的,你可以散列一个新密码并将其存储为:

 UPDATE "User" SET "Password" = "sdgfsdf" WHERE "Username" = 'admin';

用您生成的哈希替换上面的占位符文本。

(John the Ripper 似乎不理解示例密码,这意味着它要么未散列,要么未采用普遍认可的格式,如 unix crypt)。

于 2013-05-23T00:05:29.360 回答