Apparmor ("Application Armor") est je cite :
"Un logiciel de sécurité pour Linux édité sous GPL. AppArmor permet à l'administrateur système d'associer à chaque programme un profil de sécurité qui restreint les capacités de celui-ci. Il s'agit plus précisément d'un outil qui permet de verrouiller les applications pour les forcer à n’accéder qu’aux ressources auxquelles elles ont droit sans perturber leur fonctionnement."
Donc en tout logique, AppArmor bloquera certains modules fournis par Pkgi car ce dernier a pour principe de faire tourner des applications dans des chemins non standards (en général dans le homedir de l'utilisateur unix). Voici ici les règles à ajouter dans les profils apparmor pour concilier la sécurité et la souplesse de déploiement de pkgi :
C'est ce type d'erreur qui met la puce à l'oreille :
Could not open required defaults file: /home/parmentf/Dev/opengrey/etc/mysql/my.cnf
Voila une erreur complète :
parmentf@parmentf-desktop:~/Dev/opengrey$ bin/pkgi-mysqltools init Could not open required defaults file: /home/parmentf/Dev/opengrey/etc/mysql/my.cnf Fatal error in defaults handling. Program aborted Could not open required defaults file: /home/parmentf/Dev/opengrey/etc/mysql/my.cnf Fatal error in defaults handling. Program aborted Could not open required defaults file: /home/parmentf/Dev/opengrey/etc/mysql/my.cnf Fatal error in defaults handling. Program aborted 100826 18:09:36 [Warning] Can't create test file /home/parmentf/Dev/opengrey/var/lib/mysql/parmentf-desktop.lower-test 100826 18:09:36 [Warning] Can't create test file /home/parmentf/Dev/opengrey/var/lib/mysql/parmentf-desktop.lower-test ERROR: 1005 Can't create table 'db' (errno: 13) 100826 18:09:36 [ERROR] Aborting 100826 18:09:36 [Note] /usr/sbin/mysqld: Shutdown complete Could not open required defaults file: /home/parmentf/Dev/opengrey/etc/mysql/my.cnf Fatal error in defaults handling. Program aborted 100826 18:09:36 [Warning] Can't create test file /home/parmentf/Dev/opengrey/var/lib/mysql/parmentf-desktop.lower-test 100826 18:09:36 [Warning] Can't create test file /home/parmentf/Dev/opengrey/var/lib/mysql/parmentf-desktop.lower-test 100826 18:09:36 [Note] Plugin 'FEDERATED' is disabled. 100826 18:09:36 [Note] Plugin 'InnoDB' is disabled. ERROR: 1146 Table 'mysql.user' doesn't exist 100826 18:09:36 [ERROR] Aborting 100826 18:09:36 [Note] /usr/sbin/mysqld: Shutdown complete Error: debian-sys-maint cannot be created.
Voici un deuxième exemple, lors de l'utilisation de LOAD DATA INFILE:
parmentf@parmentf-desktop:~/Dev/ogtest$ usr/bin/mysql < /home/parmentf/Dev/ogtest/var/www/admin/classes/db/load_handle2url.sql ogtest ERROR 29 (HY000) at line 1: File '/home/parmentf/Dev/ogtest/var/www/admin/classes/db/handle2url.txt' not found (Errcode: 13) parmentf@parmentf-desktop:~/Dev/ogtest$ ls /home/parmentf/Dev/ogtest/var/www/admin/classes/db/handle2url.txt /home/parmentf/Dev/ogtest/var/www/admin/classes/db/handle2url.txt
On considère ici que vous déployez des applications pkgi dans les HOMEDIR de chaque utilisateur du système.
Fichier concerné :
/etc/apparmor.d/usr.sbin.mysqld
Règles à ajouter :
@{HOME}/**/etc/mysql/* r,
@{HOME}/**/etc/mysql/my.cnf r,
@{HOME}/**/etc/mysql/conf.d/ r,
@{HOME}/**/etc/mysql/conf.d/* r,
@{HOME}/**/etc/mysql/my.cnf r,
@{HOME}/**/tmp/* rw,
@{HOME}/**/var/lib/mysql/ r,
@{HOME}/**/var/lib/mysql/** rwk,
@{HOME}/**/var/log/mysql/ r,
@{HOME}/**/var/log/mysql/* rw,
@{HOME}/**/var/run/mysqld/mysqld.pid w,
@{HOME}/**/var/run/mysqld/mysqld.sock w,
Pour régler le deuxième exemple, on peut ajouter
@{HOME}/**/*.txt r,
Et relancer AppArmor:
parmentf@parmentf-desktop:~/Dev/ogtest$ sudo /etc/init.d/apparmor restart
On considère ici que vous déployez des applications pkgi dans les HOMEDIR de chaque utilisateur du système.
Fichier concerné :
/etc/apparmor.d/usr.sbin.slapd
Règles à ajouter :
@{HOME}/**/etc/ssl/private/ r,
@{HOME}/**/etc/ssl/private/* r,
@{HOME}/**/etc/sasldb2 r,
@{HOME}/**/etc/gai.conf r,
@{HOME}/**/etc/hosts.allow r,
@{HOME}/**/etc/hosts.deny r,
@{HOME}/**/etc/ldap/** kr,
@{HOME}/**/etc/ldap/slapd.d/** rw,
@{HOME}/**/dev/tty rw,
@{HOME}/**/etc/krb5.keytab kr,
@{HOME}/**/var/tmp/ rw,
@{HOME}/**/var/tmp/** rw,
@{HOME}/**/var/lib/ldap/ r,
@{HOME}/**/var/lib/ldap/** rwk,
@{HOME}/**/var/lib/ldap/alock kw,
@{HOME}/**/var/run/slapd/* w,
@{HOME}/**/usr/lib/ldap/ r,
@{HOME}/**/usr/lib/ldap/* mr,
@{HOME}/**/usr/sbin/slapd mr,