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]
내 도메인 사용자 중 한 명이 명령을 실행할 때
# 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
로컬 사용자는 수행하지 않는 삼바 및 도메인 인증과 관련이 있기 때문에 이것이 의미가 있다고 생각합니다 .
이 시점에서 저는 Linux 디버깅 경험이 많지 않기 때문에 다시 막혔습니다. 제한된 추측에 따르면 세 가지 옵션이 있습니다.
찾고 있는 위치 중 하나에
libnss_winbind.so.2
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