CentOS 6.5 ボックス (VM) で RM/COBOL ランタイム - バージョン 7.10.00 を実行しています。
この 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]
ドメインユーザーの1人がコマンドを実行すると
# 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
探していないようです。は、ローカル ユーザーが行っていない samba およびドメイン認証と関係があるので、これは理にかなっていると思います。libnss_winbind.so.2
winbind
この時点で、Linux でのデバッグ経験があまりないため、再び行き詰まっています。限られた推測から、3 つのオプションが考えられます。
libnss_winbind.so.2
が探している場所の1つで32ビット版を見つけてインストールしますruncobol
。64ビットのCentOS 6.5にどのパッケージをインストールすればよいのかわかりません。runcobol
を探さずに実行します。libnss_winbind.so.2
ユーザーはすでに認証されており、CentOS システム内にあるため、なぜそれを使用して実行しようとしているのかわかりません。認証後はドメイン リソースを使用していないため、必要な手順ではないようです。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