1

我正在尝试从 mysql 中执行 shell 命令(从过程或触发器或 mysql 的命令行中)。

我已将 lib_mysqludf_sys 添加到 mysql 插件并创建了该库可用的函数。(图书馆)主页

该库有 5 个功能。

  1. sys_set - 设置 $PATH - 这可以工作并存储我以后可以检查的 $PATH。
  2. sys_get - 获取 $PATH 的存储值 - 这也有效并返回我存储的值。
  3. sys_exec - 在系统中执行命令并返回退出代码。
  4. sys_eval - 在系统中执行命令并返回标准输出。
  5. lib_mysqludf_sys_info - 返回库的当前版本 - 这也有效。

我需要 sys_exec 和 sys_eval 才能正常工作。

我想我在搜索中发现了问题,但无法解决。

mysql 受apparmor限制,默认 apparmor 配置文件不授予执行系统命令的访问权限。我已经尝试了文档中的命令来禁用单个配置文件,禁用框架,将除一个之外的所有配置文件置于强制模式并将所有配置文件置于抱怨模式。没有任何效果。命令

sudo apparmor_status

总是给我相同的输出。

20 profiles are loaded.
20 profiles are in enforce mode.
  /opt/extras.ubuntu.com/unity-lens-askubuntu/unity-askubuntu-daemon
  /sbin/dhclient
  /usr/bin/evince
  /usr/bin/evince-previewer
  /usr/bin/evince-previewer//launchpad_integration
  /usr/bin/evince-previewer//sanitized_helper
  /usr/bin/evince-thumbnailer
  /usr/bin/evince-thumbnailer//sanitized_helper
  /usr/bin/evince//launchpad_integration
  /usr/bin/evince//sanitized_helper
  /usr/lib/NetworkManager/nm-dhcp-client.action
  /usr/lib/connman/scripts/dhclient-script
  /usr/lib/cups/backend/cups-pdf
  /usr/lib/lightdm/lightdm/lightdm-guest-session-wrapper
  /usr/lib/telepathy/mission-control-5
  /usr/lib/telepathy/telepathy-*
  /usr/sbin/cupsd
  /usr/sbin/mysqld
  /usr/sbin/tcpdump
  /usr/share/gdm/guest-session/Xsession
0 profiles are in complain mode. 
5 processes have profiles defined. 
5 processes are in enforce mode.    
  /sbin/dhclient (2537)     
  /usr/lib/telepathy/mission-control-5 (2709)  
  /usr/sbin/cupsd (12245)     
  /usr/sbin/cupsd (12250)     
  /usr/sbin/mysqld (12675)  
0 processes are in complain mode. 
0 processes are unconfined but have a profile defined.

请告诉我如何禁用 apparmor 或更改 mysql 的配置文件,以便它可以访问执行系统命令。

我这样做的原因是,当数据库中发生某些事情时(通过数据库触发器),我可以执行系统命令,如果您有其他一些可以轻松实现的方法的建议,那么也请提及这些。

谢谢。

4

1 回答 1

2

设法得到这个工作。首先将 apparmor 置于抱怨模式以获取必要的配置文件,然后使用 apparmor 的交互式工具 (aa-genprof/aa-logprof) 为 mysqld 配置配置文件

于 2012-09-07T18:41:58.837 回答