2016-08-30 206 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

相關問題