楼主: appleshuffle

误删sso_role下的用户,导致数据库现在没有用户拥有该角色,如何解决?

[复制链接]
论坛徽章:
11
生肖徽章2007版:兔
日期:2009-11-22 14:30:45鲜花蛋
日期:2013-01-27 21:01:57茶鸡蛋
日期:2012-04-05 13:26:452012新春纪念徽章
日期:2012-01-04 11:53:54ITPUB十周年纪念徽章
日期:2011-11-01 16:24:04迷宫蛋
日期:2011-10-24 02:01:552011新春纪念徽章
日期:2011-02-18 11:42:48ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512010年世界杯参赛球队:朝鲜
日期:2010-06-30 13:46:012010新春纪念徽章
日期:2010-03-01 11:19:07
11#
发表于 2012-2-28 13:45 | 只看该作者
本帖最后由 andkylee 于 2012-2-28 13:46 编辑

利用手动修改master设备文件的方法。

先记录系统表sysloginroles数据初始页的页号:
select first from sysindexes where id =object_id('sysloginroles')
go
结果为:545

由于当前登录test就有sa_role权限,在sysloginroles表对应的srid为0,修改srid为1,这样登录test就具有了sso_role权限。
那么,就可以使用登录test向系统表sysloginroles中插入数据。
为了防止向sysloginroles中插入数据时报没有权限的错误。要先给test创建一个master库的别名。

use master
go
sp_addalias test,dbo
go

然后使用登录test来关闭ase。

使用十六进制编辑器修改master设备对应的master.dat文件。跳到第545页,将suid=12对应的srid由0修改为1.
然后再次启动ase。


使用test登录,


1> sp_helpuser dbo
2> go
Users_name        ID_in_db    Group_name        Login_name
----------------- ----------- ----------------- -----------------
dbo                         1 public            sa
Users aliased to user.
Login_name
------------------------------
test
(return status = 0)
1> select * from sysloginroles
2> go
suid        srid        status
----------- ----------- ------
           1           0      1
           1           1      1
           1           2      1
           1           3      1
          12           1      1

(5 rows affected)
1> sp_displaylogin
2> go
Suid: 12
Loginame: test
Fullname:
Default Database: master
Default Language:
Auto Login Script:
Configured Authorization:
        sso_role (default ON)
Locked: NO
Date of Last Password Change: Feb 28 2012  1:28PM
Password expiration interval: 0
Password expired: NO
Minimum password length: 6
Maximum failed logins: 0
Current failed login attempts:
(return status = 0)
1> grant role sa_role to test
2> go
Msg 10353, Level 14, State 1:
Line 1:
You must have the following role(s) to execute this command/procedure: 'sa_role'
. Please contact a user with the appropriate role for help.
1> insert into sysloginroles values(12,0,1)
2> go
(1 row affected)
1> sp_displaylogin
2> go
Suid: 12
Loginame: test
Fullname:
Default Database: master
Default Language:
Auto Login Script:
Configured Authorization:
        sa_role (default ON)
        sso_role (default ON)
Locked: NO
Date of Last Password Change: Feb 28 2012  1:28PM
Password expiration interval: 0
Password expired: NO
Minimum password length: 6
Maximum failed logins: 0
Current failed login attempts:
(return status = 0)

修改好了。

使用道具 举报

回复
论坛徽章:
11
生肖徽章2007版:兔
日期:2009-11-22 14:30:45鲜花蛋
日期:2013-01-27 21:01:57茶鸡蛋
日期:2012-04-05 13:26:452012新春纪念徽章
日期:2012-01-04 11:53:54ITPUB十周年纪念徽章
日期:2011-11-01 16:24:04迷宫蛋
日期:2011-10-24 02:01:552011新春纪念徽章
日期:2011-02-18 11:42:48ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512010年世界杯参赛球队:朝鲜
日期:2010-06-30 13:46:012010新春纪念徽章
日期:2010-03-01 11:19:07
12#
发表于 2012-2-28 13:48 | 只看该作者
eisen-pb 发表于 2012-2-28 09:20
sysloginroles这个表的写权限就是sso_role的……

恩。 是的。 如此一来,sybase的用户权限还是比较安全的。呵呵。

使用道具 举报

回复
论坛徽章:
3
ITPUB十周年纪念徽章
日期:2011-11-01 16:26:592012新春纪念徽章
日期:2012-01-04 11:57:562013年新春福章
日期:2013-02-25 14:51:24
13#
发表于 2012-2-28 13:58 | 只看该作者
andkylee 发表于 2012-2-28 13:45
利用手动修改master设备文件的方法。

先记录系统表sysloginroles数据初始页的页号:

牛。

使用道具 举报

回复
论坛徽章:
0
14#
 楼主| 发表于 2012-2-29 16:15 | 只看该作者
andkylee 发表于 2012-2-28 13:48
恩。 是的。 如此一来,sybase的用户权限还是比较安全的。呵呵。

16进制编辑器要额外下载?
我执行 select first from sysindexes语句返回值为0。

使用道具 举报

回复
论坛徽章:
0
15#
 楼主| 发表于 2012-2-29 16:20 | 只看该作者
本帖最后由 appleshuffle 于 2012-2-29 17:06 编辑
andkylee 发表于 2012-2-28 13:45
你可以手动修改cfg文件的内容。
然后重启ase。
这样参数allow updates to system catalog就变成1了。
...

你指的是server option吗?
改变参数后往sysloginroles插数据修改就行了?

使用道具 举报

回复
论坛徽章:
0
16#
 楼主| 发表于 2012-2-29 16:41 | 只看该作者
yzw_random 发表于 2012-2-28 09:49
你还有原来的SA连接?有的话直接insert
sp_configure 'allow updates to system tabels', 1
go

改变该选项要求SSO_Role角色。。。。

使用道具 举报

回复
论坛徽章:
11
生肖徽章2007版:兔
日期:2009-11-22 14:30:45鲜花蛋
日期:2013-01-27 21:01:57茶鸡蛋
日期:2012-04-05 13:26:452012新春纪念徽章
日期:2012-01-04 11:53:54ITPUB十周年纪念徽章
日期:2011-11-01 16:24:04迷宫蛋
日期:2011-10-24 02:01:552011新春纪念徽章
日期:2011-02-18 11:42:48ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512010年世界杯参赛球队:朝鲜
日期:2010-06-30 13:46:012010新春纪念徽章
日期:2010-03-01 11:19:07
17#
发表于 2012-3-1 09:13 | 只看该作者
appleshuffle 发表于 2012-2-29 16:41
改变该选项要求SSO_Role角色。。。。

直接修改配置文件,然后重启就不需要sso_role角色了。

使用道具 举报

回复
论坛徽章:
0
18#
 楼主| 发表于 2012-3-1 09:36 | 只看该作者
本帖最后由 appleshuffle 于 2012-3-1 09:39 编辑
andkylee 发表于 2012-3-1 09:13
直接修改配置文件,然后重启就不需要sso_role角色了。

我在sybase central里的server properties尝试修改 'allow updates to system tables',它弹出一个Java.lang.NullPointerException.这是没装Java插件还是?


java.lang.NullPointerException
        at java.lang.String.compareTo(String.java:1167)
        at com.sybase.aseplugin.bo.prop.ServerProperties$ServerPropConfigPage.deploy(ServerProperties.java:3066)
        at com.sybase.aseplugin.bo.prop.ASEBasePropertiesDialog2.activateDeployAndRefresh(ASEBasePropertiesDialog2.java:227)
        at com.sybase.aseplugin.bo.prop.ASEBasePropertiesDialog2.activateDeployAndRefreshOK(ASEBasePropertiesDialog2.java:119)
        at com.sybase.aseplugin.bo.prop.ASEBasePropertiesDialog2.onOk(ASEBasePropertiesDialog2.java:297)
        at com.sybase.central.viewer.ScjBaseDialog.onOk(ScjBaseDialog.java:513)
        at com.sybase.central.viewer.ScjPropertiesDialog.onOk(ScjPropertiesDialog.java:204)
        at com.sybase.central.viewer.ScjPropertiesDialog.actionPerformed(ScjPropertiesDialog.java:300)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
        at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
        at java.awt.Component.processMouseEvent(Component.java:6289)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
        at java.awt.Component.processEvent(Component.java:6054)
        at java.awt.Container.processEvent(Container.java:2041)
        at java.awt.Component.dispatchEventImpl(Component.java:4652)
        at java.awt.Container.dispatchEventImpl(Container.java:2099)
        at java.awt.Component.dispatchEvent(Component.java:4482)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
        at java.awt.Container.dispatchEventImpl(Container.java:2085)
        at java.awt.Window.dispatchEventImpl(Window.java:2478)
        at java.awt.Component.dispatchEvent(Component.java:4482)
        at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:644)
        at java.awt.EventQueue.access$000(EventQueue.java:85)
        at java.awt.EventQueue$1.run(EventQueue.java:603)
        at java.awt.EventQueue$1.run(EventQueue.java:601)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
        at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
        at java.awt.EventQueue$2.run(EventQueue.java:617)
        at java.awt.EventQueue$2.run(EventQueue.java:615)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:614)
        at com.sybase.util.EventMonitor.dispatchEvent(EventMonitor.java:435)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

使用道具 举报

回复
论坛徽章:
11
生肖徽章2007版:兔
日期:2009-11-22 14:30:45鲜花蛋
日期:2013-01-27 21:01:57茶鸡蛋
日期:2012-04-05 13:26:452012新春纪念徽章
日期:2012-01-04 11:53:54ITPUB十周年纪念徽章
日期:2011-11-01 16:24:04迷宫蛋
日期:2011-10-24 02:01:552011新春纪念徽章
日期:2011-02-18 11:42:48ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512010年世界杯参赛球队:朝鲜
日期:2010-06-30 13:46:012010新春纪念徽章
日期:2010-03-01 11:19:07
19#
发表于 2012-3-1 19:37 | 只看该作者
手动修改配置文件。

使用道具 举报

回复
论坛徽章:
0
20#
 楼主| 发表于 2012-3-2 19:37 | 只看该作者
本帖最后由 appleshuffle 于 2012-3-2 19:37 编辑
andkylee 发表于 2012-3-1 19:37
手动修改配置文件。

已成功手动修改cfg文件,重启后选项 allow updates to system tables 也标示为 1. 尝试往sysloginroles里插入数据,提示要求有SSO_ROLE。。。。。。还是不行啊。sybase ASE 版本是15.7,这有关系吗?

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表