首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Linux2.6/ IBM v9.7上使用"db2连接到表“为csh脚本设置专用用户/密码

在Linux2.6/ IBM v9.7上使用"db2连接到表“为csh脚本设置专用用户/密码
EN

Stack Overflow用户
提问于 2011-12-08 00:46:35
回答 2查看 506关注 0票数 0

我们有许多遗留的csh脚本,它们使用"db2连接到“命令连接到我们的数据库。它们不显式地使用"db2连接到用户使用“,因此连接默认为运行脚本的用户。

我们希望将db2连接从运行csh脚本的用户帐户更改为专用的db2帐户(称为"dblegacy")。

我尝试编写一个包装器可执行文件,它将加载/运行为root,然后在执行csh脚本之前将帐户更改为"dblegacy“。唯一的问题是Linux (ld.so)在setuid()帐户更改为"dblegacy“后从加载的所有脚本/文件中删除LD_LIBRARY_PATH环境变量。当然,csh脚本需要共享库。

因此,我需要一种让"db2连接到表“的方式使用或默认使用这个"dblegacy”帐户。

EN

回答 2

Stack Overflow用户

发布于 2011-12-08 17:24:13

如果以dblegacy用户的身份执行脚本(使用susudo),则需要确保脚本正确地设置了DB2环境。

对于csh,脚本应该有接近脚本顶部的位置(例如,“以前”和“DB2”命令),这些命令看起来类似于以下内容:

代码语言:javascript
复制
# Initialize DB2 environment
source /home/db2inst1/sqllib/db2cshrc

此文件的特定位置可能因定义DB2实例的用户而异。通常,这将存在于用户的.cshrc中,这样可以帮助您找到正确的db2cshrc文件的正确位置。

添加了这一行之后,您应该能够以root用户的身份运行脚本如下:

代码语言:javascript
复制
su - dblegacy -c "/path/to/script.csh"
票数 1
EN

Stack Overflow用户

发布于 2011-12-12 19:11:28

这(到目前为止)似乎是我们解决问题的方法.

调用程序:execve(“/cvt/ script /cvtwrap”,argv[],envp[]),其中argv1是目标脚本的完整路径。

卷绕:

代码语言:javascript
复制
#!/bin/csh -fx

alias db2 "db2cvt `which db2`"
source /cvt/scripts/$*

然后,每当目标脚本执行db2时,它都会执行db2cvt (chmod +s作为根),它在执行真正的db2之前对dblegacy帐户执行setuid。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8424776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档