1

我们有两台机器(正在讨论中)运行 ClearCase——不同版本的 ClearCase。否则,它们在设置上几乎相同——相同的 Linux x86/64 内核等。

在一台机器上,视图中的 SUID 根程序作为 SUID 根程序工作。

在另一台机器上,视图中的 SUID 根程序不能以 SUID 权限运行,从而导致意外结果。

到目前为止,我们发现的唯一区别是:

  • 工作视图:CC 7.0.1
  • 非工作视图:CC 7.1.1.1

如果它重要,我可以给出完整的输出cleartool -version,但我怀疑它不会。这些是列出的第一个版本。

问题

  1. 这是 ClearCase 版本之间的已知差异,还是配置项或其他?
  2. 是否可以配置较新版本的 ClearCase (MVFS) 以允许 SUID 根程序“正确”运行?
  3. 如果它是可配置的,我们如何更改配置使新版本允许SUID程序?

我们有无数台机器在许多不同的平台上运行 ClearCase。有传言说,在某些机器上,我们的 SUID 软件必须在“看不见”的情况下运行才能工作。现在有人报告了一个错误——花了一天的大部分时间来缩小差异。问题中解决的问题似乎是一个合理的解释。如果是别的东西,那就这样吧。我仍然需要我今天失去的头发再次回来!


额外的信息

所有视图都是动态的,而不是快照。

这是在cleartool lsview -l -full -pro -cview运行 ClearCase 7.0.1 的 SUID 程序工作的机器上的输出:

Tag: idsdb00222108.jleffler.toru
  Global path: /net/toru/work4/atria/idsdb00222108.jleffler.toru.vws
  Server host: toru
  Region: lenexa
  Active: YES
  View tag uuid:6dac5149.2d7511e0.8c62.00:14:5e:69:25:d0
View on host: toru
View server access path: /work4/atria/idsdb00222108.jleffler.toru.vws
View uuid: 6dac5149.2d7511e0.8c62.00:14:5e:69:25:d0
View owner: lenexa.pd/jleffler

Created 2011-01-31T11:58:11-08:00 by jleffler.rd@toru
Last modified 2011-02-26T22:32:49-08:00 by jleffler.rd@toru.lenexa.ibm.com
Last accessed 2011-02-26T22:44:55-08:00 by jleffler.rd@toru.lenexa.ibm.com
Last read of private data 2011-02-26T22:44:55-08:00 by jleffler.rd@toru.lenexa.ibm.com
Last config spec update 2011-02-26T01:10:36-08:00 by jleffler.rd@toru.lenexa.ibm.com
Last view private object update 2011-02-26T22:32:49-08:00 by jleffler.rd@toru.lenexa.ibm.com
Text mode: unix
Properties: dynamic readwrite shareable_dos
Owner: lenexa.pd/jleffler : rwx (all)
Group: lenexa.pd/rd     : rwx (all)
Other:                  : rwx (all)
Additional groups: lenexa.pd/RAND lenexa.pd/ccusers lenexa.pd/ccids lenexa.pd/ccos

这是运行 ClearCase 7.1.1.1 的 SUID 程序不“工作”的机器上的输出:

Tag: new.jleffler.zeetes
  Global path: /tmp/jl/new.jleffler.zeetes.vws
  Server host: zeetes
  Region: lenexa
  Active: YES
  View tag uuid:f62b7c80.414111e0.9cec.00:14:5e:de:1b:44
View on host: zeetes
View server access path: /tmp/jl/new.jleffler.zeetes.vws
View uuid: f62b7c80.414111e0.9cec.00:14:5e:de:1b:44
View owner: lenexa.pd/informix

Created 2011-02-25T18:40:11-06:00 by informix.informix@zeetes
Last modified 2011-02-25T18:49:56-06:00 by informix.informix@zeetes
Last accessed 2011-02-25T18:50:31-06:00 by informix.informix@zeetes
Last read of private data 2011-02-25T18:50:31-06:00 by informix.informix@zeetes
Last config spec update 2011-02-25T18:49:37-06:00 by informix.informix@zeetes
Last view private object update 2011-02-25T18:49:56-06:00 by informix.informix@zeetes
Text mode: unix
Properties: dynamic readwrite shareable_dos
Owner: lenexa.pd/informix : rwx (all)
Group: lenexa.pd/informix : r-x (read)
Other:                  : r-x (read)
Additional groups: lenexa.pd/RAND lenexa.pd/ccids lenexa.pd/ccos

检测到 SUID 程序不工作

问题不在于操作系统发出有关运行 SUID 程序的错误消息。问题是即使程序看起来是 setuid root,但在运行时,程序实际上并不是 setuid:

Zeetes IX: ls -l asroot
-r-sr-xr-x 1 root informix 24486 Feb 25 18:49 asroot
Zeetes IX: ./asroot id
asroot: not installed SUID root
Zeetes IX: 

asroot这是未使用 SUID root 权限安装时的输出。在另一台机器上:

Toru JL: ls -l asroot
-r-sr-xr-x 1 root informix 26297 2011-02-27 00:11 asroot
Toru JL: ./asroot id
uid=0(root) gid=1240(rd) groups=1240(rd),1360(RAND),8714(ccusers),8803(ccids),8841(ccos)
Toru JL:

如果程序以 SUID root 权限安装,这或多或少是我期望的输出。


挂载信息

两个主要的 VOB 是 tristarp 和 tristarm。在 SUID 正常的机器上(手动包装以避免滚动条):

aether:/vobs/tristarm.vbs on /vobs/tristarm.vbs type nfs \
     (rw,hard,intr,bg,addr=9.25.149.151)
charon:/vobs/tristarp.vbs on /vobs/tristarp.vbs type nfs \
     (rw,hard,intr,bg,addr=9.25.149.147)
charon:/vobs/tristarp.vbs on /vobs/tristarp type mvfs \
     (uuid=684ef023.2dd111d0.b696.08:00:09:b1:a4:c5)
aether:/vobs/tristarm.vbs on /vobs/tristarm type mvfs \
     (uuid=b74900ef.814511cf.afee.08:00:09:b1:54:d5)

在 SUID 不正确的机器上:

aether:/vobs/tristarm.vbs on /vobs/tristarm type mvfs \
     (uuid=b74900ef.814511cf.afee.08:00:09:b1:54:d5,nosuid)
aether:/vobs/tristarm.vbs on /vobs/tristarm.vbs type nfs \
     (rw,hard,intr,bg,addr=9.25.149.151)
charon:/vobs/tristarp.vbs on /vobs/tristarp.vbs type nfs \
     (rw,hard,intr,bg,addr=9.25.149.147)
charon:/vobs/tristarp.vbs on /vobs/tristarp type mvfs \
     (uuid=684ef023.2dd111d0.b696.08:00:09:b1:a4:c5)

还有恶棍!(而且我以为我看过mount信息。显然。我看的不够准确,或者只在一台机器上 - 正在工作的机器 - 或其他东西。)奇怪的是,这两个 VOB 中只有一个安装了nosuid; 很奇怪。

我们有一个答案为什么!

谢谢,VonC。


探索

脚本中规定了使用文件来控制是否允许使用 SUID的脚本/etc/init.d/clearcase/etc/clearcase程序;它存在于两台机器上,作为一个具有 root:root:000 权限的空文件。但可能还有其他一些重要的差异潜伏在这里——我已经向常驻的 ClearCase Guru 询问了这一点。但是,看起来差异更可能在于两台机器上的配置,而不是某些特定于版本的功能更改。两个版本表面上都支持该选项,尽管这两个版本都没有明显地调用该选项——除了 7.1.1.1 版本正在设法调用它,而 7.0.1 版本没有。/opt/rational/clearcase/var/adm/rational/clearcase/suid_mounts_allowednosuid

4

1 回答 1

1

知道会很有趣:

  • 如果两种视图都是快照或动态视图. 我想是动态的,有一个与 MVFS 相关的问题。
  • ' cleartool lsview -l -full -pro -cview' 在两种情况下都返回什么(在每个视图中执行时,一个在 SUID 工作的地方,一个在不工作的地方)
  • 如果尝试 SUID 位时每个视图内的本地路径相同(本地路径是视图内的路径,</path/toView>/vobs/MyVob/.../path/to/a/directory

主要是,您是否有确切的错误消息,例如在此线程中

我们看到 VOB 在 Linux 和 SunOS 上使用不同的选项挂载,特别是Linux 添加了“nosuid”挂载选项,而在 SunOS 上添加了“setuid”。

这会给我们在 Linux 机器上的分布式构建过程中带来麻烦,因为远程机器在尝试从其中一个 VOB 执行 suid 根二进制文件时收到“不允许操作”错误

查看cleartool mount选项

UNIX 和 Linux:nodev, nosuid, suid.

另请参阅“使用 cleartool protect 命令设置粘滞位

使用以下语法使用 cleartool protect 命令正确设置“粘滞位”:

cleartool protect -chmod u=rxs <file>
于 2011-02-26T09:15:52.360 回答