Благодаря Роланд.
И така, отговорът на въпроса ми е "AppArmor".
От Уикипедия:
AppArmor позволява на системния администратор да свърже с всяка програма профил за защита, който ограничава възможностите на тази програма. Той допълва традиционния модел за контрол на дискреционен достъп (DAC) на Unix, като предоставя задължителен контрол на достъпа (MAC).
Тъй като Ubuntu Hardy, сървърният пакет MySQL 5.0 съдържа също файл с профил на AppArmor (/etc/apparmor.d/usr.sbin.mysqld), който ограничава функционалностите на MySQL сървъра, като извикване на UDF за изпълнение на команди.
Така че, за да позволя на MySQL да изпълнява Linux команди, трябва да променя нивото на сигурност за MySql в AppArmor.
[[email protected] ~]# aa-complain /usr/sbin/mysqld
За да видите състоянието на AppArmor:
[[email protected] ~]# aa-status
С тази конфигурация мога да изпълня sys_eval и sys_exec. Но това все още е ограничено до директорията mysql. Така че не мога да създам файл или да стартирам скрипт от която и да е директория.
Така че решението е да добавите разрешения към apparmor за mysql за достъп до новите директории с данни.
sudo vi /etc/apparmor.d/usr.sbin.mysqld
Добавете:
/newdir/ r,
/newdir/** rwk,
Рестартирайте сървърите:
sudo /etc/init.d/apparmor restart
sudo /etc/init.d/mysql restart
Ако това все още не работи, проверете разрешенията на nix, за да сте сигурни, че mysql е собственик и група за новата директория рекурсивно.
chown -R mysql:mysql “new datadir path”
Надявам се това да помогне на някого.
Продължавайте