I posted the following weird channel security exit problem on the MQSeries ListServer.
I received a lot of emails (both public and private) offering help to the problem. Thanks. It was not an SELinux issue nor was it a corrupt shared library issue. It was an issue related to permissions for a mount point.
Here is the description to the problem followed by the solution:
I’ve got a really weird problem, that the internet seems to say that it is a permission issue with “/tmp” but I’m at a loss.
– Brand new: Red Hat Enterprise Linux Server release 7.6 (Maipo)
– Fresh install of MQ v9.1.0.1 64-bit
Installed MQAUSX into /var/mqm/exits64/ and yes it is a working version that works perfectly on other Linux distributions.
Here is the MQ error message:
08/02/19 12:46:45 - Process(51014.254) User(roger) Program(amqrmppa)
Host(someserver) Installation(Installation1)
VRMF(9.1.0.1) QMgr(MQA1)
Time(2019-02-08T11:46:45.514Z)
ArithInsert1(536895861)
CommentInsert1(/var/mqm/exits64/mqausx)
CommentInsert2(/var/mqm/exits64/mqausx: failed to map segment from shared object: Operation not permitted)
CommentInsert3(64)
AMQ6175E: The system could not dynamically load the shared library
'/var/mqm/exits64/mqausx'. The system returned error message
'/var/mqm/exits64/mqausx: failed to map segment from shared object: Operation
not permitted'.
EXPLANATION:
This message applies to UNIX systems. The shared library '/var/mqm/exits64/mqausx'
failed to load correctly due to a problem with the library.
ACTION:
Check the file access permissions and that the file has not been corrupted.
“mqausx” is a standard Unix/Linux shared library (It is running on tons of Linux servers without issue). Even the “ldd” command gives a weird result:
$ ldd /var/mqm/exits64/mqausx
ldd: warning: you do not have execution permission for `/var/mqm/exits64/mqausx'
not a dynamic executable
The permissions are set as follows:
chown mqm:mqm mqausx chmod 750 mqausx
I even tried 777 for permissions. i.e.
-rwxrwxrwx 1 mqm mqm 247087 Feb 7 15:11 mqausx
It still failed. Its a shared library, what is or how is a shared library “dynamic executable”?
Here is the solution that Josh suggested that worked:
First, issue the following command against your shared library:
$ df /var/mqm/exits64 Filesystem 1K-blocks Used Available Use% Mounted on /dev/aaa/bbb 5107712 3967288 1140424 78% /var/mqm
Use whatever is under “Mounted on” (i.e. /var/mqm – you may have something else like /var ) in the following command:
$ mount | grep /var/mqm
In my customer’s particular case, their mount point was on /var and the results of the command was:
/dev/aaa/bbb on /var type xfs (rw,nosuid,nodev,noexec,relatime,attr2,inode64,logbsize=256k,sunit=512,swidth=512,noquota)
The source of the issue was that the mount point had “noexec”permission. Hence, once that option was removed then everything went back to normal.
I hope this helps someone else in the future.
Regards,
Roger Lacroix
Capitalware Inc.