善意提醒

如果您打开本站很慢,布局排版混乱,并且看不到图片,那么可能是因为您还没有掌握用科学的方法上网的本领。

2008-04-29

在Windows服务中以SYSDBA无需密码登录本地Oracle

因为客户的特殊需求,导致我们要在一个Windows服务中以SYSDBA权限去访问本地的Oracle数据库,并且不能输入任何密码。通常情况下,当Windows的用户帐号是ORA_DBA组成员时,直接用sqlplus "/ as sysdba"的方式就可以登录本地Oracle数据库,无需输入sys的用户名和密码。因此我计划用这种方式来实现无密码登录Oracle。但是得到了如下的错误信息:
ORA-01031: insufficient privileges
很明显,权限方面出了问题。想想也应该,我们的Windows服务使用的应该是NT AUTHORITY/SYSTEM(S-1-5-18)的权限在运行。于是方案A出台了。

方案A:将SYSTEM帐户加入ORA_DBA组。

从UI是看不到SYSTEM帐户的,只有用命令行的方式加。
net localgroup ORA_DBA system /add
结果还是得到了ORA-01031。分析了一下,有可能是因为操作系统认证需要从操作系统的用户帐号来进行,而SYSTEM帐号是个内置帐号,在用户管理里面是看不到的。于是这个方案宣告失败。

方案B:切换到别的帐户运行。
基本上,方案A走不通的话,那就只有这种办法了。首先是建立一个Windows帐户,并加入ORA_DBA组中。密码自己随便定一个就好。
net user dbauser 1qaz2wsx /add
net localgroup ORA_DBA dbauser /add
但是具体怎么切换呢?

方案B.1:用runas切换帐户。
一般RunAs服务(也就是Secondary Logon)都是启动的,所以首先想到用Windows 2000/XP/2003自带的命令runas来实现。
runas /user:dbauser "sqlplus \"/ as sysdba\" ……"
没报错,可是没反应。噢,麻烦来了。这个runas命令是要问密码的。
上Google找了一下解决方案。试了一下用vbs的SendKeys那种,手动状态下似乎勉强可行,但要放在Windows服务中,没戏。因为它毕竟是模拟客户端的输入来键入密码的。有个自称可以让runas支持管道输入密码的小工具sanur也没戏,感觉它俩的原理是类似的。

方案B.2:用第三方工具替代runas切换帐户。
既然runas这条路走不通,就彻底抛开它另寻出路了。
有个工具lsrunas自称可以替代runas,于是下载下来一试。虽然参数比较罗嗦,但的确是可以替代。不过这个替代也仅限于通常情况下,一旦放到我们的Windows服务中,就没有反应了。
另外有人推荐了一个cpau。这个工具还是不行,不过它倒是留下了一个提示信息,这个信息成了重要的线索:
ERROR: CPAU doesn't support running from LocalSystem.
看来还是SYSTEM的权限问题。

方案B.3:自写工具切换帐户。
看来这些工具都没问题,但是应该都不支持在SYSTEM的权限下面切换用户。听说以前某个同事也为这个问题研究了好些天,最后还是放弃了。老实说,听到这个消息我有一点点绝望感。
这SYSTEM权限吧,说它低,却能操作很多系统级别的东西。可要说它高呢,有些本来很容易的事情它又做不了。不过理论上通常还是认为SYSTEM的权限比较「高」,所以很多黑客都以获得SYSTEM权限为目标在半肉鸡上奋斗着。于是,我以SYSTEM降权为主要话题,去黑客站点看了看。
还真是有收获,得到了一段代码,是一个利用API自己实现的runas工具程序。在命令行下使用了一下,感觉挺好,比Windows那个runas好用多了。
不过,放进Windows服务里面,还是不行。真的是快绝望了。

方案B.4:用API直接切换帐户。
由于我们的系统有现成的接口用来启动一个PipeCmd,所以到目前为止我都是用它去运行了一个批处理,然后在批处理中去做上述操作。该接口其实是用CreateProcess实现,因此新建的进程就继承了父进程的权限,也就是SYSTEM。
但,在那段黑客代码中,切换帐户其实是使用了CreateProcessWithLogonW来完成。估计各个工具都类似,因此应该可以跳过中间的多余步骤,用API切换帐户来直接运行sqlplus。
经过多次实验,总算是成功了:
HANDLE hToken;
LogonUser("dbauser", NULL, "1qaz2wsx", LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, &hToken);
STARTUPINFO si;
si.cb = sizeof(STARTUPINFO);
GetStartupInfo(&si);
PROCESS_INFORMATION pi;
CreateProcessAsUser(hToken, NULL, cmdbuf, &sa, NULL, TRUE, NULL, NULL, NULL, &si, &pi);
想偷懒的人还是看看代码稍微理解一下吧,因为我也想偷一下懒,直接Copy/Paste可能会有问题的。
另外说明一下,CreateProcessWithLogonW应该也是可以做到的,但是我一直没能试成功。倒是CreateProcessAsUser一次成功,于是就这样用下去了。

本来在这里就应该作结了,不过后面还有一点小插曲:这段代码在Windows 2000/XP上可以运行得很好,但是在2003上有问题。在2003上用这种方式运行sqlplus的时候看起来一切正常,但sql的内容没有被执行。最终的解决方案是把dbauser也给加到了Administrators组里面。
net localgroup Administrators dbauser /add
但是在XP下面要这样做的话,就有可能会让Windows把dbauser当成了主管理员,特别是在某些装好之后默认用Administrator用户登录的系统上。这样会给用户带来不小的困扰哦,所以最佳的做法应该是判断一下操作系统的版本再去做相应的处理。

2008-04-28

日记2008.04.28

Chapter One

从招行订购的「外交官」拉杆箱组合,今天送到了。下班扛回家,拆开后玩弄了一下。感觉不错,一个20寸箱子加一个16寸的包包。风格和我现在的箱子、包包都不大一样,正好互补,要是一样就不好玩了。

Chapter Two

上周末搞定的CreateProcessAsUser,居然在2003 Server上会有问题。运行sqlplus没有报错,就是sql的内容似乎没有执行。
在Google上查了查,有的说什么CreateProcessAsUser在2K3上不能用了,要用CreateProcessWithLogonW替换。我CreateProcessWithLogonW和CreateProcessWithTokenW都用了,报错,ERROR_ACCESS_DENIED,而且在XP下都报这个错了,看来是行不通。绝望之前,试了一下给用户加上Administrators组,居然通过了,三个操作系统下都OK。看来2003是加强了账户安全性,一个ORA_DBA已经不够了。

Chapter Three

从公司电脑3389到家里,然后再3389到重庆家里处理问题。居然速度还不错,嘿嘿。

Chapter Four

下午忙到吐血,全是小问题,但堆起来就很讨厌。好在明天可以不用纠缠在这其中了。
晚上吃萨莉亚吃得好饱,回到家躺在床上休息,不知不觉就睡着了。所以现在来补日记。 

2008-04-26

日记2008.04.26

Chapter One

今天电信要来装宽带,所以不敢走人。等到下午两点,总算是来了。抱了一大箱子设备,估计今天要装不少。
来的人背上写着「华为通信」,拿出的Modem却又不是华为。奇怪地问了问,说电信现在都是把这种活儿分包给私人老板去做了。真是精,黑!
装机的小弟倒是不黑,直接给了我帐号密码,连上路由器,OK,一路畅通。立马开始下电影。

Chapter Two

一直在洗衣服。不过衣服这东西,貌似是永远洗不完的。

Chapter Three

晚饭去味之都解决,顺便去好又多买了明天郊游的东西。回来看火箭昨天的比赛录像,呵呵,不错。

2008-04-23

日记2008.04.23

Chapter One

招商银行推出了Tom&Jerry的粉丝信用卡。宣传的Flash做得很漂亮,可惜卡面不够炫,产品本身也不够吸引我。
倒是「十全十美」的那款「外交官」拉杆箱组合我有点兴趣。¥300元一套,月付¥25,应该说不算贵。而且我的确缺一个可以登机的小箱。想想,就算只是箱子,在家乐福随便买一个可能也要一两百。……于是果断出手。
然后去团购区逛了逛,大都是些手机、笔记本电脑、钻饰之类,对我而言意义不大。不过最后选了一个月付¥56的蒸汽清洁器,据说还送一个酸奶机。反正也不算贵,买来看看是什么东东。
要走的时候,看到招行推出了「无限信用卡」,也就是比白金更高一档的意思。个人觉得「无限」这个词没什么VIP感觉。而且,现在就把「无限」用掉了,要再推出更高档的卡是不是要用「超越」之类了?

Chapter Two

老板叫来施工队,好像要改造办公室了。以前也听说那间办公室要封死作为保密室。看来最近要有所动作了。

Chapter Three

明天据说有新人要来上班了。希望不要像上次那样第二天就当逃兵。
最近人真是不好招,头面试了好多人了,还是觉得不够满意。不过我也觉得他要求有点太高了。要有不错的工作经验,技术最好要对口,沟通能力要好,待遇要合理,还要能安心呆下来,这样的人当然不好找。我以前就总结过,找工作就好像找老婆,无论对哪一方都一样。

2008-04-19

日记2008.04.19

Chapter One

去电信装宽带,才发现上海的电信不是一般的黑。ADSL只有「我的E家」,合同上限制仅一台电脑(不知实际上有没有限制),而且贵得要死,几乎是重庆和厦门的两三倍了。我反正打主意让来安装的家伙给我帐号和密码然后就滚,我知道电信的PPPoE拨号软件有鬼的。

Chapter Two

到BestBuy找N70用的RSMMC,结果居然被告知MMC都「没有了」!「没有了」是什么意思啊?是缺货还是停产还是人间蒸发了?郁闷,最后只能带一个木头小电脑桌回家玩玩。

Chapter Three

又在下雨,怎么老是一到周末就下雨?我真是服了上海这鬼天气了!

2008-04-18

我的4月银行新动向

Chapter One

申请金卡的时候额度完全没有调整,于是以为是被拒了。昨天早晨,突然收到短信通知说上调到15K,正是我申请的额度。看来是两个线程啊。
由于VISA普卡上绑了两个代扣费,不敢销卡,因此只好把额度调低点收藏起来。还好我现在刷卡次数很多,养这些卡完全没有问题。下面要做的事情就是找家人的附卡了。

Chapter Two

上周末招行上海分行系统升级。升完级之后刚好遇到发工资,在转帐的时候意外地发现原本0.2%的异地快速汇款手续费变成0.1%了。翻遍了网页也没有找到相关的说明,姑且理解为新平台上线的优惠吧。

Chapter Three

月初的时候,不小心把招行VISA普卡的额度调成了0。结果很可能导致了移动那边代扣话费失败,收到了警告短信。由此看来,我对招行在推销此业务时宣传的什么「独立额度」在理解上还有问题。
打10086和8008205555咨询了半天,最后还是让我等本月20日左右的那次补扣。有点担心会不会再出问题,于是去上海移动的网站看了看。又是很意外地发现上海移动居然开通了很多家银行的网上缴费业务,招商银行信用卡也赫然在支持之列。进去看了看,是普通的网付界面,于是顺便就把费给缴了,不知道有没有积分了。
从此,又多了一种缴费途径。很好!

Chapter Four

在新的招行网银上逛,发现信用卡下面多了一个缴费的菜单。进去看了看,除了重庆之外别的地方好像都还没怎么开展此业务。但重庆的电信和移动费用都可以用信用卡支付了。再次很好!什么时候水电费能用这个缴了就更好了。

ATM换假钞?傻子才相信!

终于在网上看到这类「骗局」了。说实话,有点惊诧于始作俑者的无良,更惊诧于跟风者的无知。

存取款循坏ATM机这玩意儿刚一出现,我就考虑过这个问题了。首先,ATM的取款Cancel会不会经过验钞器,这是一个问题。更明显的问题在于,银行根本不会给你这个机会让你调包。这个所谓的「漏洞」其实根本不存在!
真正有脑子的人,稍微一想就可以明白这个道理。如果可以换假钞,那就说明取款Cancel的时候验钞器没有起作用。那样的话岂不是还可以换冥币,换纸片,什么都可以换了。如果不经过验钞,银行凭什么要把取走的款项归还到卡上?难道是根据退回去东西的重量吗?

其实,银行这种机构,对于交易的事务性绝对是第一看重的。如果自动操作的流程不能完全保证事务性,那么宁可转成线下操作手工处理,也不会让钱账不齐。所以银行肯定会先把卡上的余额给扣掉再吐钱。再加上还有摄像头提供线索,于是几个去尝试的倒霉蛋,全部都进了局子。个人认为,他们出来之后应该把发帖人和论坛给告上一状。

很令我感慨的是,好些跑去尝试的家伙,都是在校大学生。诚然,学生没有经济来源,所以对钱方面更看重。但是作为曾经代表了我国高级知识分子的大学生群体,这不能不说是很令人遗憾的事情。我可以理解为他们年少好奇,但是有些事情是不对的,是不能做的,难道他们不知道吗?对银行服务有意见的,有本事像抵制家乐福一样去抵制啊?我真的对他们,很失望!

2008-04-02

日记2008.04.02

Chapter One

今天08:30出门,路上较为顺利,09:21到公司。看来有一点晚,明天还是稍稍提前一点好了。

Chapter Two

中午去办电话移机,结果把门牌号码搞错了。于是又去撤单,中午的时间白费了不说,未来三天的时间也废了。真想抽自己。
装宽带还得等移机完毕,上网还要再等好些天了。

Chapter Three

一天写了三个方案,被评为「后生可畏」。其实也不比我大多少嘛,何况都是很简单的方案。
听说下周有新人要来上班,看来可以充“老员工”了。

Chpater Four

晚上回家,坐隧道一线钻地洞时,窗没有关严,废气漏了进来,特别的不舒服。恶心的感觉,加上没有吃饭,回到家又闻了两口楼下的臭气,都快晕了。去麦当劳坐着慢慢吃饭,总算是好了一点,决定以后再也不饿肚子回家了。

Chapter Five

晚上去好又多之前,把衣服丢进洗衣机开始洗。满以为回来的时候已经洗好了,结果郁闷地发现离开的时候忘了盖盖子,停在那儿等我哪。
天啊!难道四月要继续霉下去?

Chapter Six

突然想起,我的招商银行MasterCard普卡销卡,会不会影响绑定在上面的一些代扣关系!急忙去查过去的账单,发现上海移动和保险的代扣都是绑定在那张VISA普卡上的。松了一口气之余,也庆幸还好没有把VISA普卡先销掉,否则麻烦可能就大了。

2008-04-01

日记2008.04.01

Chapter One

搬家之后的第一天正常上班,对乘车时间没底。上次08:23出来,刚好遇到耀华路和隧道双堵车,结果到公司的时候09:25。于是今天不敢怠慢,08:15下楼通勤,结果一路畅通,08:57就到了公司。看来这上班时间还得再摸索摸索。

Chapter Two

上午就拿到了报销款。点着钞票,虽不算心花怒放,也觉得津津有味了。中午一溜小跑去了银行存钱,顺便把信用卡本期的账单给还了。总算又有点存款了。
到网上银行查了下状况,发现以前对于招行某些信用卡的「双重积分」的理解还是有误差。携程的卡平时刷还是只能积招行的分,要在携程上刷卡才能积两次分——那不和以前一样嘛。厦航卡的积分是独立管理。富克斯的卡也是要在富克斯刷才会双重积分。唯一不同的是厦航的卡是以18元为积分单位,所以一些90元之类的账单可以考虑刷它。

Chapter Three

今天两顿饭只吃了¥17,感觉好「节约」!

Chpater Four

又有一个同事提出要离开公司了。理由还是和上海的房价有关。影响人力成本了都,深圳的诅咒很快就会落到上海头上了。

Chapter Five

看了一下Drupal的信息,发现现在都升到6.1了。有点想折腾,猛然想起这周只有四天,看来明天就要去处理电话移机和装宽带的事情了。

Chapter Six

晚上接了好几个电话。
干姐打来电话聊了很久,原来姐夫又自己出来做了,还把原来公司里面的骨干都带了出来,看来那个公司已经名存实亡了。还好我已经离开厦门了。
表姐也打电话来,是她OfficeXP的破解被微软的SP3给阴了。于是教她去搜索引擎上找如何处理的办法。
刚放下电话,家里罕见地打过来。居然是因为接到了骗子短信。骗子冒充「子女」向「爸妈」说钱包手机被偷,要汇钱。家里打来查实,其实他们基本已经知道是骗局了,只是不放心来问问。上次我也收到一条短信,什么也不说,直接让我汇钱。而前一天我刚好看到网络上写一个骗子就是用这种手法「匪夷所思」地骗了80万。你说这些网络新闻啊!成教材了都!南方海岛上的众人看了大概会深受启发吧。

忙碌且倒霉的三月终于完了

近来发生了许多事情,不过根本没有时间和机会写Blog,真是可惜。大致说说近况吧。

从3月11日起,连续出差了三次,都是为了同一个事情。

第一次出差接近于被拐卖,说是去开个会,一两天就回,结果被告知要好好地「辛苦」上一段时间。无奈之下,只好让莉莉代我去给那套房东很牛X的房子下了定金。房子还不错,价格也还合适,这一出起差来,大概是没机会看别的房子了,只有这样吧。

定了房子,稍稍安了心。让公司支援,派了个同事过来帮忙,周末花一天时间溜回上海签约,然后又火速赶回北京继续工作。想想我的工作还是挺牛逼的,起草国家标准呢!
又写了一个星期,大致成形了,于是奉命回上海。这次稍微呆得久了一点,一个比较完整的周末加两天工作日。有三天的时间在搬家及处理我房子的事情,还有接近一天的时间回到公司开了N个会。然后又去北京。


这第三次出差的时候,票骤然紧张。去的时候十万火急地买了飞机票,忙了三天后再回来的时候居然根本买不到票了。当天的没有,第二天的也没有,最后只好买了周日的动车回上海。不能躺就不能躺吧,好歹总算是回来了。