2013-05-22 85 views
1

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

我管理吨连接在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中的超级用户密码吗? 在此先感谢。

回答

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似乎并不理解示例密码,这意味着它不是unhashed或不是像unix crypt这样的公认的格式)。

+0

非常感谢您的回答。感谢你,我找到了一种方法来取代旧的密码,现在CMDBuild的作品!密码被腌制,这就是为什么约翰开膛手没有找到它。我在源代码中找到盐。 – Leitoo0

+0

@ Leitoo0很高兴为您提供帮助。 –