免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 7178 | 回复: 9
打印 上一主题 下一主题

sa被删除或锁住的处理方法 [复制链接]

论坛徽章:
1
操作系统版块每日发帖之星
日期:2016-06-20 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-04-07 13:25 |只看该作者 |倒序浏览
看了两个帖子,以前也有,但是不会弄,看来现在水平提高了一点,嘻嘻
http://bbs.chinaunix.net/viewthr ... p;extra=&page=1
不知兄弟搞好了吗?没有结果了
http://bbs.chinaunix.net/viewthr ... &extra=page%3D2
就写了下面的东东

sa被删除或锁住的处理方法
基础知识:
master库的syslogins和sysloginroles系统表
syslogins中记录login的信息,但是没有权限信息。几个主要的字段name,status(状态 2锁住,0正常),suid,此表sa_role的login可以操作
sysloginroles中记录login权限信息,suid对应login,srid对应权限(0 sa_role;1 sso_role 具体看syssrvroles表)此表只有具有sso_role的login可以操作,光有sa_role也不行
sa_role系统管理员具有数据库操作的特权,但一些只有sso_role可以完成(授权,添加login,改口令等)

先说说被锁住:
正常最后一个sso_role是无法锁住的,如果sa被锁,用ssa_role的login sp_locklogin sa,'unlock'即可。
非正常因为syslogins表sa_role的login就可以修改,只要update syslogins set status=2就锁住,解锁update syslogins set status=0
没有具有sa_role的login,那往下看吧,直接修改master文件吧

再说说sa被删除:(这里指的是从syslogins中删,即sysloginroles表中内容还有。sp_droplogin sa我没有成功)
1有sa_role和sso_role的login
没有什么问题,加上sa即可,sp_addlogin sa,passwd ,但是注意一定把syslogins中sa的suid改为1(新建不是1),这样才能和sysloginroles对应,要不没有权限。当然你手工授权也行。

2有sa_role但没有sso_role的login(sa自己删完自己不断连接也是这样,sso_role好象已经没了)
原来以为没有什么方法,因为sa_role无法创建用户和授权,突然想到可以操作syslogins,插入一个sa即可:insert syslogins values(1,0,'2004-01-01',0,0,0,0,0,'master','sa',null,null,null,null,null,null,null,null),主要这的sa密码插入的是null,插入什么最终sa密码你都不知道(也可能有值对应固定密码),sa的密码也无法改(没有sso_role),一个好办法就是重启sybase加-psa让系统告知,剩下不用我说了吧。

3只有普通权限的login
其实这才是我想主要说说的,原理如下,在sysloginrols表中还有sa的权限信息,select * from sysloginroles(ase12.5)
suid        srid        status
----------- ----------- ------
          1           0      1
          1           1      1
          1           2      1
          1           3      1
其中srid为0和1表明sa_role和sso_role,要做的就是把suid的13(sa)改为3(普通login的suid,假定login为testlogin)
dbcc page看看
Offset 32 - row ID=0 row length=12 # varlen cols=0
21571020 (     0):  00000100 01000000 00000000
Row-Offset table for variable-length columns:

Offset 44 - row ID=1 row length=12 # varlen cols=0
2157102C (     0):  00010100 01000000 01000000
前面是状态,中间是suid,后面srid.
如果是windows下sybase12.5
直接打开master文件,查找00000100 01000000 00000000 00010100 01000000 01000000
如果你的login的id是3
直接改为00000100 0c000000 00000000 00010100 0c000000 01000000
重启sybase,你的这个login就具有sa_role和ssa_role,然后再处理sa
如果找不到“00000100 01000000 00000000 00010100 01000000 01000000”,分开找,应该就在附近。

4如果没有login或sysloginroles记录也没有
目前我还没有办法,那位弟兄知道,告知一声。但是一般ase都有mon_user这个login可用,probe这个login都有但好象不能登录,给sybsystemdb的,有知道到底干什么用的贴一下,懒得问sybase了

这问题应该不会经常遇到,遇到不改master好象还没什么好办法(如果没有master的备份),做重要操作一定加事务,检查对了再提交,写的较仓促,一些试验也未必全面,不对的地方请拍砖。ase12.0的sysloginroles的结构好象有点不同,没有仔细试,应该也是可以的,unix下改法看我以前的贴,应该也可以。

论坛徽章:
0
2 [报告]
发表于 2006-04-08 00:21 |只看该作者
Thanks, man, good practices!

论坛徽章:
0
3 [报告]
发表于 2006-04-09 14:55 |只看该作者
lz现在修改master设备现在是得心应手了啊.

论坛徽章:
1
操作系统版块每日发帖之星
日期:2016-06-20 06:20:00
4 [报告]
发表于 2006-04-10 11:14 |只看该作者
楼上的过奖了

论坛徽章:
0
5 [报告]
发表于 2006-04-10 17:57 |只看该作者
佩服!
BTW,
如果是在UNIX 下,是不是改红色的部分就可以了阿?
dbcc page看看
Offset 32 - row ID=0 row length=12 # varlen cols=0
21571020 (     0):  00000100 01000000 00000000
Row-Offset table for variable-length columns:

Offset 44 - row ID=1 row length=12 # varlen cols=0
2157102C (     0):  00010100 01000000 01000000

用od可以改嘛?还是要用其它什么专门的工具?

论坛徽章:
1
操作系统版块每日发帖之星
日期:2016-06-20 06:20:00
6 [报告]
发表于 2006-04-11 11:27 |只看该作者
红的是srid的值,应该改中间suid的值,上面文章说的很清楚,
unix下,应该看我以前的帖子:直接修改master设备改变master数据库状态(win和UNIX)
http://bbs.chinaunix.net/viewthr ... ge=1&highlight=

论坛徽章:
0
7 [报告]
发表于 2006-04-13 15:31 |只看该作者
文章是好,对于系统标的理解都好!
但希望用的人少!呵呵

论坛徽章:
7
数据库技术版块每日发帖之星
日期:2015-08-09 06:20:00数据库技术版块每日发帖之星
日期:2015-11-03 06:20:00数据库技术版块每日发帖之星
日期:2016-02-20 06:20:00数据库技术版块每日发帖之星
日期:2016-07-13 06:20:00数据库技术版块每日发帖之星
日期:2016-07-31 06:20:00数据库技术版块每日发帖之星
日期:2016-08-01 06:20:00数据库技术版块每日发帖之星
日期:2016-08-18 06:20:00
8 [报告]
发表于 2006-04-13 15:51 |只看该作者
lz真是bin edit master的高手。佩服啊

论坛徽章:
0
9 [报告]
发表于 2006-04-13 16:42 |只看该作者
大天使都出现了!!!

论坛徽章:
0
10 [报告]
发表于 2006-04-21 09:16 |只看该作者
强人,应该先加精,对于后人很有用的!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP