У меня есть RM/COBOL Runtime - Version 7.10.00, работающий на CentOS 6.5 box (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-bit). С первой строки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. ]
Итак, я предполагаю, но не уверен, что у меня libnss_winbind.so.2
установлена 64-битная версия, но runcobol
ищет 32-битную версию. Так почему же у моего обычного пользователя нет проблем с runcobol
? Ну, если посмотреть на для обычного пользователя, то он, похоже , вообще strace
не ищет . Думаю, это имеет смысл, так как имеет отношение к samba и доменной аутентификации, которую локальный пользователь не делает.libnss_winbind.so.2
winbind
На этом этапе я снова застрял, так как у меня нет большого опыта отладки в Linux. Я вижу три варианта из моих ограниченных догадок:
Найдите и установите 32-битную версию
libnss_winbind.so.2
в одном из мест, которые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