2015-10-06 2 views
0

Mon paquetage doit mettre en place des règles SELinux pour permettre à mon programme d'accéder à certaines choses. Bien que je connaisse les types que je dois utiliser pour configurer les règles, je ne suis pas sûr quels paquets installent ces types. Je voudrais m'assurer que mon paquet a des dépendances sur les types SELinux que je référence. Est-il possible de trouver quel paquet était responsable de l'installation d'un type SELinux donné?Comment puis-je déterminer quel rpm installe le module qui définit un type SELinux?

Dans ce cas précis, je suis à la recherche de unconfined_service_t, mais une solution générale serait géniale car je suis sûr que je vais frapper à nouveau.

Répondre

1

Les modules SELinux sont dans le répertoire /usr/share/selinux/targeted/.

Vous devez deviner (plus à ce sujet plus tard) quel fichier il peut être.

# cp /etc/selinux/targeted/modules/active/modules/cdrecord.pp /tmp 
# file cdrecord.pp 
cdrecord.pp: bzip2 compressed data, block size = 900k 
# bunzip2 cdrecord.pp 
bunzip2: Can't guess original name for cdrecord.pp -- using cdrecord.pp.out 
# dnf install checkpolicy 
... 
# sedismod cdrecord.pp.out 
Reading policy... 
libsepol.policydb_index_others: security: 0 users, 3 roles, 42 types, 3 bools 
libsepol.policydb_index_others: security: 1 sens, 1024 cats 
libsepol.policydb_index_others: security: 51 classes, 0 rules, 0 cond rules 
libsepol.policydb_index_others: security: 0 users, 3 roles, 42 types, 3 bools 
libsepol.policydb_index_others: security: 1 sens, 1024 cats 
libsepol.policydb_index_others: security: 51 classes, 0 rules, 0 cond rules 
Binary policy module file loaded. 
Module name: cdrecord 
Module version: 2.6.0 


Select a command: 
1) display unconditional AVTAB 
2) display conditional AVTAB 
3) display users 
4) display bools 
5) display roles 
6) display types, attributes, and aliases 
7) display role transitions 
8) display role allows 
9) Display policycon 
0) Display initial SIDs 

a) Display avrule requirements 
b) Display avrule declarations 
c) Display policy capabilities 
l) Link in a module 
u) Display the unknown handling setting 
F) Display filename_trans rules 

f) set output file 
m) display menu 
q) quit 

Command ('m' for menu): 6 
... 
staff_cdrecord_t [1]: alias for type cdrecord_t flags:0 
... 

Soit dire que staff_cdrecord_t était celui qui nous intéresse. Hourra!

Maintenant, il suffit de requête qui paquet lui fournir:

# rpm -qf /etc/selinux/targeted/modules/active/modules/cdrecord.pp 
selinux-policy-targeted-3.13.1-105.20.fc21.noarch 

La seule question est ce que le fichier de /etc/selinux/targeted/modules/active/modules/ vous interrogez. Eh bien, soit vous devez y aller un par un (à moins que quelqu'un ne sache quelque chose, ce qui est scriptable) ou vous devez utiliser le bon sens. Quand je cherche staff_cdrecord_t, je commence par cdrecord.pp.

+0

Merci! Cela a beaucoup aidé. J'ai dézippé tous les modules et ensuite vérifié chacun avec une commande comme: printf "6 \ nq \ n" | tout sedismod.pp.out –