Ich habe RM/COBOL Runtime – Version 7.10.00 auf einer CentOS 6.5-Box (VM) laufen.
Dieses CentOS ermöglicht bestimmten Domänenbenutzern den SSH-Zugriff, indem ihre Gruppe beim lokalen Domänencontroller authentifiziert wird. Diese Benutzer erhalten ein Home-Verzeichnis, das automatisch in /home/Domänenname/Benutzername erstellt wird, während sich normale lokale Benutzer in /home/Benutzername befinden.
Die relevanten Cobol-Dateien scheinen sich in
/usr/bin/runcobol
<- eine Datei
/usr/bin/rmcobolso
<- ein Verzeichnis, das leer zu sein scheint lautls -a
Wie dem auch sei, hier ist mein grundlegendes Problem. Wenn ein normaler Benutzer den Befehl ausführt,
# runcobol
... dabei handelt es sich lediglich um eine grundlegende Überprüfung, ob der Befehl funktioniert...
Er/sie erhält die Antwort:
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]
Wenn einer meiner Domänenbenutzer den Befehl ausführt
# runcobol
Er/Sie erhält die Antwort:
Segmentation fault
Was könnte die Ursache dieses Problems sein?
Bearbeitung.1:
strace runcobol
vom Domänenbenutzer. Die letzten Zeilen enthielten:
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 +++
Dies sind nur die letzten Zeilen. Die 20 Zeilen davor scheinen alle nach dieser Datei zu suchen libnss_winbind.so.2
, die auf meinem Server existiert /usr/lib64/libnss_winbind.so.2
(Ja, ich verwende CentOS 6.5 64-Bit). Ab der ersten Zeile vonstrace 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. ]
Ich vermute also, bin mir aber nicht sicher, dass ich eine 64-Bit-Version von libnss_winbind.so.2
installiert habe, aber runcobol
nach einer 32-Bit-Version sucht. Warum hat mein normaler Benutzer also kein Problem mit runcobol
? Nun, wenn man sich für den normalen Benutzer die ansieht , scheint es überhaupt strace
nicht danach zu suchen . Ich denke, das macht Sinn, da es etwas mit Samba und Domänenauthentifizierung zu tun hat, was der lokale Benutzer nicht tut.libnss_winbind.so.2
winbind
An diesem Punkt stecke ich wieder fest, da ich nicht viel Erfahrung mit dem Debuggen unter Linux habe. Nach meinen begrenzten Vermutungen sehe ich drei Optionen:
Suchen und installieren Sie eine 32-Bit-Version
libnss_winbind.so.2
an einem derruncobol
gesuchten Orte. Ich habe keine Ahnung, welches Paket ich dafür auf meinem 64-Bit-CentOS 6.5 installieren sollLäuft
runcobol
, ohne danach zu suchenlibnss_winbind.so.2
. Ich bin mir nicht sicher, warum es versucht, damit zu laufen, da der Benutzer bereits authentifiziert ist und sich im CentOS-System befindet. Ich verwende nach der Authentifizierung keine Domänenressourcen, daher scheint dies nicht einmal ein notwendiger Schritt zu sein.libnss_winbind.so.2
ist eine falsche Fährte und hat nichts mit dem Segmentierungsfehler zu tun.
Bearbeitung.2
Ergebnisse von gdb runcobol
damals run
:
Vom lokalen Benutzer
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
Vom Domänenbenutzer
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