2016-08-30 200 views
0

我似乎无法找到一种方法来配置我的abrt事件以将coredump复制到自定义位置。我想这样做的原因是为了防止abrt修剪我的内核,如果崩溃目录超过MaxCrashReportsSize。有了我无法控制abrt配置的先决条件,我希望在创建coredump后立即将其导出到支持目录。abrt - 使用事件将coredump复制/移动到自定义位置

EVENT=post-create pkg_name=raptorio analyzer=CCpp 
    test -f coredump && { mkdir -p /opt/raptorio/cores; cp -f coredump /opt/raptorio/cores/$(basename `cat executable`).core; } 

该事件将为我的raptorio RPM软件包中的每个C/C++二进制文件保存一个coredump。当我的程序崩溃ABRT打印在系统日志以下错误:

Aug 30 08:28:41 abrtd: mkdir: cannot create directory `/opt/raptorio/cores': Permission denied 
Aug 30 08:28:41 abrtd: cp: cannot create regular file `/opt/raptorio/cores/raptord.core': No such file or directory 
Aug 30 08:28:41 abrtd: 'post-create' on '/var/spool/abrt/ccpp-2016-08-30-08:28:10-31213' exited with 1 

我看到ABRT事件运行作为root:root但不知何故被拘留,原因可能是SELinux的?我在centos 6上使用了abrt 2.0.8。

回答

0

/opt不是保存临时文件的正确位置。核心应该进入/ var/raptorio/cores,也许。请参阅Filesystem Hierarchy Standard

假设您的程序以用户'nobody'身份运行,请确保'nobody'对该目录具有写权限,并且应该全部设置。

+0

欣赏关于碰撞位置的链接。该程序作为根(有意)运行,但该事件仍然无法创建该目录。当我登录用户和组时,我得到'root:root'。对/ opt有写权限。 – Critikullx

+0

@Critikullx - 由于/ opt期望包含程序和库,因此SELinux中的某些内容意味着在其中写入二进制文件是一个不允许的事情,因为这将是欺骗某人运行的第一步一个不友好的可执行文件。即使你可以击败这个限制,它也有可能会打开一个安全漏洞。 – CAB

相关问题