Dzięki Roland.
Tak więc odpowiedź na moje pytanie brzmi „AppArmor”.
Z Wikipedii:
AppArmor pozwala administratorowi systemu powiązać z każdym programem profil bezpieczeństwa, który ogranicza możliwości tego programu. Uzupełnia tradycyjny model arbitralnej kontroli dostępu (DAC) w systemie Unix, zapewniając obowiązkową kontrolę dostępu (MAC).
Od Ubuntu Hardy pakiet serwera MySQL 5.0 zawiera również plik profilu AppArmor (/etc/apparmor.d/usr.sbin.mysqld), który ogranicza funkcje serwera MySQL, takie jak wywoływanie UDF w celu wykonywania poleceń.
Tak więc, aby MySQL mógł uruchamiać polecenia Linuksa, powinienem zmienić poziom bezpieczeństwa dla MySql w AppArmor.
[[email protected] ~]# aa-complain /usr/sbin/mysqld
Aby sprawdzić status AppArmor:
[[email protected] ~]# aa-status
Dzięki tej konfiguracji mogę wykonać sys_eval i sys_exec. Ale to nadal ogranicza się do katalogu mysql. Więc nie mogę utworzyć pliku ani uruchomić skryptu z żadnego katalogu.
Rozwiązaniem jest więc dodanie uprawnień do aplikacji, aby mysql miał dostęp do nowych katalogów danych.
sudo vi /etc/apparmor.d/usr.sbin.mysqld
Dodaj:
/newdir/ r,
/newdir/** rwk,
Zrestartuj serwery:
sudo /etc/init.d/apparmor restart
sudo /etc/init.d/mysql restart
Jeśli to nadal nie działa, sprawdź uprawnienia nix, aby upewnić się, że mysql jest rekurencyjnie właścicielem i grupą dla nowego katalogu.
chown -R mysql:mysql “new datadir path”
Mam nadzieję, że to komuś pomoże.
Przestrzegaj