Skip to main content

Core dump ignores facl (setfacl) in RHEL

I had been tasked with figuring out how to have an environment that would allow multiple users to access core files.  I thought: simple enough, I'll just have to mess around with the facl for the directory, specifically the "default" entry.

Well, I was wrong.  I had attempted:
# remount filesystem and enable acl
chmod 775 /u01/core
chmod g+s /u01/core
chgrp smsvcs /u01/core
setfacl -m g::rwx,o:rwx,d:o::r-x /u01/core


It turns out that the coredump function (do_coredump) creates the file 0600

int do_coredump(long signr, struct pt_regs * regs)
919 {
920         struct linux_binfmt * binfmt;
921         char corename[6+sizeof(current->comm)];
922         struct file * file;
923         struct inode * inode;
924 
925         lock_kernel();
926         binfmt = current->binfmt;
927         if (!binfmt || !binfmt->core_dump)
928                 goto fail;
929         if (!current->dumpable || atomic_read(&current->mm->mm_users) != 1)
930                 goto fail;
931         current->dumpable = 0;
932         if (current->rlim[RLIMIT_CORE].rlim_cur < binfmt->min_coredump)
933                 goto fail;
934 
935         memcpy(corename,"core.", 5);
936 #if 0
937         memcpy(corename+5,current->comm,sizeof(current->comm));
938 #else
939         corename[4] = '\0';
940 #endif
941         file = filp_open(corename, O_CREAT | 2 | O_TRUNC | O_NOFOLLOW, 0600);
942         if (IS_ERR(file))
943                 goto fail;
944         inode = file->f_dentry->d_inode;
945         if (inode->i_nlink > 1)
946                 goto close_fail;        /* multiple links - don't dump */
947 
948         if (!S_ISREG(inode->i_mode))
949                 goto close_fail;
950         if (!file->f_op)
951                 goto close_fail;
952         if (!file->f_op->write)
953                 goto close_fail;
954         if (!binfmt->core_dump(signr, regs, file))
955                 goto close_fail;
956         unlock_kernel();
957         filp_close(file, NULL);
958         return 1;
959 
960 close_fail:
961         filp_close(file, NULL);
962 fail:
963         unlock_kernel();
964         return 0;
965 }

Comments

Popular posts from this blog

PXE boot a LiveCD image

Summary: I have wanted to build a kickstart environment which hosted a "rescue CD" or LiveCD to allow you to boot over the network after you blew your stuff up and needed to repair a few things.  Today I have worked through a method of doing so, with the help of the people who published a succinct script with the Red Hat Enterprise Virtualization Hypervisor.  (the script will be at the bottom of this post - if I have somehow not followed the GPL, please let me know and I will correct whatever is necessary) NOTE/Warning: The boot will fail due the initrd being too large (645mb).  I'm not sure how to proceed.  This procedure worked for RHEVh, because it is quite a bit smaller.  Hopefully I can report back with progress on this? :-$ Procedure: download your LiveCD image to /export/isos/RESCUE/Fedora-16-i686-Live-Desktop.iso # cd /var/tmp # vi livecd-iso-to-pxeboot (populate the file with the script shown below) # chmod 754 ./livecd-iso-to-pxeb...

"Error getting authority: Error initializing authority: Could not connect: No such file or directory (g-io-error-quark, 1)"

"Error getting authority: Error initializing authority: Could not connect: No such file or directory (g-io-error-quark, 1)" One issue that may cause this to arise is if you managed to break your /etc/fstab We had an engineer add a line with the intended options of "nfsvers=3" but instead added "-onfsvers=3" and it broke the system fairly catastrophically.

P2V using dd for KVM-QEMU guest

Preface: I have certainly not exhaustively tested this process.  I had a specific need and found a specific solution that worked. Situation:  I was issued a shiny new laptop running Red Hat Enterprise Linux 7 (with Corp VPN, certs, Authentication configuration, etc...)  The image was great, but I needed more flexibility on my bare metal.  So, my goal was to P2V the corporate image so I could just run it as a VM. * Remove corporate drive and install new SSD * install corp drive in external USB-3 case * Install RHEL 7 on new SSD * dd old drive to a disk-image file in a temp location which will be an image which is the same size as your actual drive (unless you have enough space in your destination to contain a temp and converted image) * convert the raw disk-image to a qcow file while pushing it to the final location - this step should reduce the disk size - however, I believe it will only reduce/collapse zero-byte blocks (not just free space - i.e. if you de...