对于某些用户来说,什么会导致 runco​​bol 失败?

对于某些用户来说,什么会导致 runco​​bol 失败?

我有 RM/COBOL 运行时 - 版本 7.10.00 在 CentOS 6.5 机器 (VM) 上运行

此 CentOS 允许通过使用本地域控制器对某些域用户的组进行身份验证来进行 SSH 访问。这些用户获得一个在 /home/domainname/username 中自动创建的主目录,而普通本地用户则驻留在 /home/username 中

相关的 Cobol 文件似乎位于

/usr/bin/runcobol<- 一个文件
/usr/bin/rmcobolso<- 一个目录,根据ls -a

无论如何,这是我的基本问题。当普通用户运行命令时

# runcobol

...这只是一个基本检查,看看命令是否有效...
他/她收到响应:

RM/COBOL Runtime - Version 7.10.00 for Linux (Intel).
Configured for 50 users.
Copyright (c) 1985, 1986-2000 by Liant Software Corp.  All rights reserved.
Registration Number: 7H-1054-00367-0050

Usage:    RUNCOBOL name [options]
Options:  [A=arguments] [B=buffersize] [C=configfile] [D] [I] [K]
          [L=libname] [M] [S=switches] [T=sortsize] [V] [X=configmod]

当我的域用户之一运行命令时

# runcobol

他/她收到回复:

Segmentation fault

什么可能导致这个问题?

编辑1:

strace runcobol来自域用户。最后几行包括:

open("/usr/lib/libnss_winbind.so.2", O_RDONLY) = -1 ENOENT (No such file or direc
stat64("/usr/lib", {st_mode=S_IFDIR|0555, st_size=4096, ...}) = 0
munmap(0xf76fa000, 48317)               = 0
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
+++ killed by SIGSEGV +++

这些只是最后几行。前面的 20 行似乎都在寻找这个libnss_winbind.so.2文件,该文件确实存在于我的服务器上/usr/lib64/libnss_winbind.so.2(是的,我正在运行 CentOS 6.5 64 位)。从第一行开始strace runcobol

[test.user.co@co1tu-sv-conta bin]$ strace runcobol
execve("/usr/bin/runcobol", ["runcobol"], [/* 26 vars */]) = 0
[ Process PID=14369 runs in 32 bit mode. ]

因此,我猜测(但不确定)我安装了 64 位版本libnss_winbind.so.2,但runcobol正在寻找 32 位版本。那么为什么我的普通用户没有问题呢runcobol?嗯,对于普通用户来说strace,似乎根本就没有去寻找libnss_winbind.so.2。我想这是有道理的,因为winbind与 samba 和域身份验证有关,而本地用户没有这样做。

此时我又陷入了困境,因为我没有太多在 Linux 中调试的经验。根据我有限的猜测,我看到了三个选项:

  1. 在正在查找的libnss_winbind.so.2位置之一查找并安装 32 位版本。runcobol我不知道在我的 64 位 CentOS 6.5 上安装哪个软件包

  2. runcobol不用寻找就可以跑libnss_winbind.so.2。我不知道为什么它要这样运行,因为用户已经通过身份验证并且在 CentOS 系统中。身份验证后我没有使用任何域资源,因此这似乎不是必要的步骤。

  3. libnss_winbind.so.2是一个转移注意力的事情,与分段错误无关。

编辑2

gdb runcobol当时的结果run

来自本地用户

Reading symbols from /usr/bin/runcobol...(no debugging symbols found)...done.
(gdb) run
Starting program: /usr/bin/runcobol

RM/COBOL Runtime - Version 7.10.00 for Linux (Intel).
Configured for 50 users.
Copyright (c) 1985, 1986-2000 by Liant Software Corp.  All rights reserved.
Registration Number: 7H-1054-00367-0050

Usage:    RUNCOBOL name [options]
Options:  [A=arguments] [B=buffersize] [C=configfile] [D] [I] [K]
          [L=libname] [M] [S=switches] [T=sortsize] [V] [X=configmod]

Program exited with code 0373.
Missing separate debuginfos, use: debuginfo-install glibc-2.12-1.132.el6_5.4.i686

来自域用户

Reading symbols from /usr/bin/runcobol...(no debugging symbols found)...done.
(gdb) run
Starting program: /usr/bin/runcobol

Program received signal SIGSEGV, Segmentation fault.
0x0805cc37 in OSINITIALIZE ()
Missing separate debuginfos, use: debuginfo-install glibc-2.12-1.132.el6_5.4.i686

相关内容